SOURCES (LINUX_2_6): acpi-20050729-2.6.12.patch (NEW) - fresh snap.

pluto pluto at pld-linux.org
Sun Jul 31 14:34:49 CEST 2005


Author: pluto                        Date: Sun Jul 31 12:34:49 2005 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- fresh snap.

---- Files affected:
SOURCES:
   acpi-20050729-2.6.12.patch (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/acpi-20050729-2.6.12.patch
diff -u /dev/null SOURCES/acpi-20050729-2.6.12.patch:1.1.2.1
--- /dev/null	Sun Jul 31 14:34:49 2005
+++ SOURCES/acpi-20050729-2.6.12.patch	Sun Jul 31 14:34:43 2005
@@ -0,0 +1,37258 @@
+ Documentation/acpi-hotkey.txt                     |   38 
+ arch/frv/mb93090-mb00/pci-irq.c                   |    2 
+ arch/i386/kernel/acpi/Makefile                    |    4 
+ arch/i386/kernel/acpi/cstate.c                    |  103 +
+ arch/i386/kernel/acpi/wakeup.S                    |    5 
+ arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c       |    7 
+ arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c |    2 
+ arch/i386/pci/acpi.c                              |    1 
+ arch/i386/pci/common.c                            |    6 
+ arch/i386/pci/irq.c                               |   17 
+ arch/i386/pci/pci.h                               |    1 
+ arch/i386/pci/visws.c                             |    2 
+ arch/ia64/kernel/acpi.c                           |   54 +
+ arch/ia64/kernel/mca.c                            |    2 
+ arch/ia64/kernel/process.c                        |    1 
+ arch/ia64/kernel/setup.c                          |    3 
+ arch/ia64/kernel/topology.c                       |    7 
+ drivers/acpi/Kconfig                              |   40 
+ drivers/acpi/Makefile                             |    5 
+ drivers/acpi/asus_acpi.c                          |    4 
+ drivers/acpi/bus.c                                |    8 
+ drivers/acpi/button.c                             |  245 ----
+ drivers/acpi/dispatcher/dsfield.c                 |   58 -
+ drivers/acpi/dispatcher/dsinit.c                  |   48 
+ drivers/acpi/dispatcher/dsmethod.c                |   78 -
+ drivers/acpi/dispatcher/dsmthdat.c                |  198 ++-
+ drivers/acpi/dispatcher/dsobject.c                |   82 +
+ drivers/acpi/dispatcher/dsopcode.c                |  120 +-
+ drivers/acpi/dispatcher/dsutils.c                 |   41 
+ drivers/acpi/dispatcher/dswexec.c                 |   57 -
+ drivers/acpi/dispatcher/dswload.c                 |  168 ++-
+ drivers/acpi/dispatcher/dswscope.c                |   31 
+ drivers/acpi/dispatcher/dswstate.c                |  464 ++++----
+ drivers/acpi/ec.c                                 |  990 ++++++++++++++++---
+ drivers/acpi/events/evevent.c                     |   33 
+ drivers/acpi/events/evgpe.c                       |   44 
+ drivers/acpi/events/evgpeblk.c                    |  122 +-
+ drivers/acpi/events/evmisc.c                      |  104 +
+ drivers/acpi/events/evregion.c                    |   35 
+ drivers/acpi/events/evrgnini.c                    |   24 
+ drivers/acpi/events/evsci.c                       |   12 
+ drivers/acpi/events/evxface.c                     |   29 
+ drivers/acpi/events/evxfevnt.c                    |   31 
+ drivers/acpi/executer/exconfig.c                  |   79 -
+ drivers/acpi/executer/exconvrt.c                  |   44 
+ drivers/acpi/executer/excreate.c                  |   50 
+ drivers/acpi/executer/exdump.c                    |  278 ++++-
+ drivers/acpi/executer/exfield.c                   |   30 
+ drivers/acpi/executer/exfldio.c                   |  133 +-
+ drivers/acpi/executer/exmisc.c                    |    9 
+ drivers/acpi/executer/exmutex.c                   |   45 
+ drivers/acpi/executer/exnames.c                   |   77 -
+ drivers/acpi/executer/exoparg1.c                  |  123 +-
+ drivers/acpi/executer/exoparg2.c                  |   69 -
+ drivers/acpi/executer/exoparg3.c                  |   84 +
+ drivers/acpi/executer/exoparg6.c                  |   26 
+ drivers/acpi/executer/exprep.c                    |  104 +
+ drivers/acpi/executer/exregion.c                  |   34 
+ drivers/acpi/executer/exresnte.c                  |   24 
+ drivers/acpi/executer/exresolv.c                  |   63 -
+ drivers/acpi/executer/exresop.c                   |   96 +
+ drivers/acpi/executer/exstore.c                   |  264 +++--
+ drivers/acpi/executer/exstoren.c                  |   24 
+ drivers/acpi/executer/exstorob.c                  |    9 
+ drivers/acpi/executer/exsystem.c                  |   48 
+ drivers/acpi/executer/exutils.c                   |   37 
+ drivers/acpi/glue.c                               |  360 ++++++
+ drivers/acpi/hardware/hwacpi.c                    |   19 
+ drivers/acpi/hardware/hwgpe.c                     |   51 
+ drivers/acpi/hardware/hwregs.c                    |  116 +-
+ drivers/acpi/hardware/hwsleep.c                   |  113 +-
+ drivers/acpi/hardware/hwtimer.c                   |    4 
+ drivers/acpi/hotkey.c                             | 1019 +++++++++++++++++++
+ drivers/acpi/ibm_acpi.c                           |    8 
+ drivers/acpi/namespace/nsaccess.c                 |   18 
+ drivers/acpi/namespace/nsalloc.c                  |  145 --
+ drivers/acpi/namespace/nsdump.c                   |  185 ++-
+ drivers/acpi/namespace/nsdumpdv.c                 |   18 
+ drivers/acpi/namespace/nseval.c                   |   80 +
+ drivers/acpi/namespace/nsinit.c                   |   28 
+ drivers/acpi/namespace/nsload.c                   |   70 -
+ drivers/acpi/namespace/nsnames.c                  |   12 
+ drivers/acpi/namespace/nsobject.c                 |   14 
+ drivers/acpi/namespace/nsparse.c                  |    6 
+ drivers/acpi/namespace/nssearch.c                 |   29 
+ drivers/acpi/namespace/nsutils.c                  |  167 +--
+ drivers/acpi/namespace/nswalk.c                   |    2 
+ drivers/acpi/namespace/nsxfeval.c                 |   16 
+ drivers/acpi/namespace/nsxfname.c                 |    8 
+ drivers/acpi/namespace/nsxfobj.c                  |    4 
+ drivers/acpi/osl.c                                |  208 +++
+ drivers/acpi/parser/Makefile                      |    2 
+ drivers/acpi/parser/psargs.c                      |   55 -
+ drivers/acpi/parser/psloop.c                      |  781 ++++++++++++++
+ drivers/acpi/parser/psopcode.c                    |  324 ------
+ drivers/acpi/parser/psparse.c                     |  729 -------------
+ drivers/acpi/parser/psscope.c                     |   45 
+ drivers/acpi/parser/pstree.c                      |  159 +--
+ drivers/acpi/parser/psutils.c                     |   52 
+ drivers/acpi/parser/pswalk.c                      |   11 
+ drivers/acpi/parser/psxface.c                     |  254 ++--
+ drivers/acpi/pci_irq.c                            |   85 +
+ drivers/acpi/pci_link.c                           |  130 +-
+ drivers/acpi/processor_core.c                     |   37 
+ drivers/acpi/processor_idle.c                     |  163 ++-
+ drivers/acpi/processor_perflib.c                  |   33 
+ drivers/acpi/resources/rsaddr.c                   |  480 +++------
+ drivers/acpi/resources/rscalc.c                   |  144 +-
+ drivers/acpi/resources/rscreate.c                 |   45 
+ drivers/acpi/resources/rsdump.c                   |  402 ++++---
+ drivers/acpi/resources/rsio.c                     |  197 +--
+ drivers/acpi/resources/rsirq.c                    |  167 +--
+ drivers/acpi/resources/rslist.c                   |   68 -
+ drivers/acpi/resources/rsmemory.c                 |  236 +---
+ drivers/acpi/resources/rsmisc.c                   |  160 +--
+ drivers/acpi/resources/rsutils.c                  |   53 -
+ drivers/acpi/resources/rsxface.c                  |   43 
+ drivers/acpi/scan.c                               |   12 
+ drivers/acpi/sleep/main.c                         |   74 -
+ drivers/acpi/sleep/poweroff.c                     |   81 +
+ drivers/acpi/sleep/proc.c                         |    9 
+ drivers/acpi/tables/tbconvrt.c                    |  113 +-
+ drivers/acpi/tables/tbget.c                       |   63 -
+ drivers/acpi/tables/tbgetall.c                    |   45 
+ drivers/acpi/tables/tbinstal.c                    |   61 -
+ drivers/acpi/tables/tbrsdt.c                      |   74 -
+ drivers/acpi/tables/tbutils.c                     |  134 ++
+ drivers/acpi/tables/tbxface.c                     |   56 -
+ drivers/acpi/tables/tbxfroot.c                    |  231 ++--
+ drivers/acpi/toshiba_acpi.c                       |    8 
+ drivers/acpi/utilities/Makefile                   |    2 
+ drivers/acpi/utilities/utalloc.c                  |  360 +++---
+ drivers/acpi/utilities/utcache.c                  |  328 ++++++
+ drivers/acpi/utilities/utcopy.c                   |  172 ++-
+ drivers/acpi/utilities/utdebug.c                  |  320 +++---
+ drivers/acpi/utilities/utdelete.c                 |  199 +--
+ drivers/acpi/utilities/uteval.c                   |   36 
+ drivers/acpi/utilities/utglobal.c                 |  231 +---
+ drivers/acpi/utilities/utinit.c                   |   38 
+ drivers/acpi/utilities/utmath.c                   |    2 
+ drivers/acpi/utilities/utmisc.c                   | 1146 +++++-----------------
+ drivers/acpi/utilities/utmutex.c                  |  380 +++++++
+ drivers/acpi/utilities/utobject.c                 |  102 -
+ drivers/acpi/utilities/utstate.c                  |  376 +++++++
+ drivers/acpi/utilities/utxface.c                  |   84 -
+ drivers/acpi/video.c                              |   15 
+ drivers/base/sys.c                                |    1 
+ drivers/net/b44.c                                 |    3 
+ drivers/net/ne2k-pci.c                            |    3 
+ drivers/net/sk98lin/skge.c                        |   63 +
+ drivers/pci/pci-acpi.c                            |  110 ++
+ drivers/pci/pci.c                                 |   22 
+ drivers/pci/pci.h                                 |    4 
+ drivers/pcmcia/yenta_socket.c                     |   12 
+ drivers/pnp/pnpacpi/rsparser.c                    |   15 
+ drivers/pnp/pnpbios/rsparser.c                    |    2 
+ drivers/pnp/resource.c                            |    2 
+ drivers/usb/core/hcd-pci.c                        |    1 
+ include/acpi/acconfig.h                           |   14 
+ include/acpi/acdebug.h                            |  152 --
+ include/acpi/acdisasm.h                           |  117 --
+ include/acpi/acdispat.h                           |  169 ---
+ include/acpi/acevents.h                           |   86 -
+ include/acpi/acexcep.h                            |   11 
+ include/acpi/acglobal.h                           |   41 
+ include/acpi/achware.h                            |   58 -
+ include/acpi/acinterp.h                           |  243 +---
+ include/acpi/aclocal.h                            |   92 -
+ include/acpi/acmacros.h                           |  112 +-
+ include/acpi/acnames.h                            |   89 +
+ include/acpi/acnamesp.h                           |  165 ---
+ include/acpi/acobject.h                           |    4 
+ include/acpi/acopcode.h                           |  325 ++++++
+ include/acpi/acoutput.h                           |    2 
+ include/acpi/acparser.h                           |  127 +-
+ include/acpi/acpi.h                               |    1 
+ include/acpi/acpi_bus.h                           |   21 
+ include/acpi/acpi_drivers.h                       |    8 
+ include/acpi/acpiosxf.h                           |   53 -
+ include/acpi/acpixf.h                             |   15 
+ include/acpi/acresrc.h                            |   67 -
+ include/acpi/acstruct.h                           |   16 
+ include/acpi/actables.h                           |   72 -
+ include/acpi/actbl.h                              |   60 -
+ include/acpi/actbl1.h                             |   52 
+ include/acpi/actbl2.h                             |  109 +-
+ include/acpi/actypes.h                            |   17 
+ include/acpi/acutils.h                            |  359 ++----
+ include/acpi/amlcode.h                            |   14 
+ include/acpi/pdc_intel.h                          |   29 
+ include/acpi/platform/acenv.h                     |   57 -
+ include/acpi/platform/acgcc.h                     |    8 
+ include/acpi/platform/aclinux.h                   |   11 
+ include/acpi/processor.h                          |   34 
+ include/asm-alpha/pci.h                           |    2 
+ include/asm-arm/pci.h                             |    2 
+ include/asm-h8300/pci.h                           |    2 
+ include/asm-i386/acpi.h                           |   10 
+ include/asm-i386/apicdef.h                        |    6 
+ include/asm-i386/pci.h                            |    2 
+ include/asm-ia64/acpi.h                           |    9 
+ include/asm-ia64/pci.h                            |    2 
+ include/asm-m68k/pci.h                            |    2 
+ include/asm-mips/pci.h                            |    2 
+ include/asm-ppc/pci.h                             |    2 
+ include/asm-ppc64/pci.h                           |    2 
+ include/asm-sh/pci.h                              |    2 
+ include/asm-sh64/pci.h                            |    2 
+ include/asm-sparc/pci.h                           |    2 
+ include/asm-sparc64/pci.h                         |    2 
+ include/asm-x86_64/acpi.h                         |    8 
+ include/asm-x86_64/pci.h                          |    2 
+ include/linux/acpi.h                              |   11 
+ include/linux/device.h                            |    6 
+ include/linux/pm.h                                |    2 
+ kernel/power/main.c                               |   16 
+ sound/pci/intel8x0.c                              |    6 
+ 217 files changed, 12228 insertions(+), 8305 deletions(-)
+diff --git a/Documentation/acpi-hotkey.txt b/Documentation/acpi-hotkey.txt
+new file mode 100644
+--- /dev/null
++++ b/Documentation/acpi-hotkey.txt
+@@ -0,0 +1,38 @@
++driver/acpi/hotkey.c implement:
++1. /proc/acpi/hotkey/event_config 
++(event based hotkey or event config interface):
++a. add a  event based hotkey(event) : 
++echo "0:bus::action:method:num:num" > event_config
++
++b. delete a event based hotkey(event): 
++echo "1:::::num:num" > event_config
++
++c.  modify a event based hotkey(event):    
++echo "2:bus::action:method:num:num" > event_config
++
++2. /proc/acpi/hotkey/poll_config 
++(polling based hotkey or event config interface):
++a.add a polling based hotkey(event) : 	
++echo "0:bus:method:action:method:num" > poll_config
++this adding command will create a proc file 
++/proc/acpi/hotkey/method, which is used to get 
++result of polling.
++
++b.delete a polling based hotkey(event): 	
++echo "1:::::num" > event_config
++
++c.modify a polling based hotkey(event):    
++echo "2:bus:method:action:method:num" > poll_config
++
++3./proc/acpi/hotkey/action 
++(interface to call aml method associated with a 
++specific hotkey(event))
++echo "event_num:event_type:event_argument" > 
++	/proc/acpi/hotkey/action.
++The result of the execution of this aml method is 
++attached to /proc/acpi/hotkey/poll_method, which is dnyamically
++created.  Please use command "cat /proc/acpi/hotkey/polling_method" 
++to retrieve it.
++
++Note: Use cmdline "acpi_specific_hotkey" to enable legacy platform
++specific drivers.
+diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
+--- a/arch/frv/mb93090-mb00/pci-irq.c
++++ b/arch/frv/mb93090-mb00/pci-irq.c
+@@ -60,7 +60,7 @@ void __init pcibios_fixup_irqs(void)
+ 	}
+ }
+ 
+-void __init pcibios_penalize_isa_irq(int irq)
++void __init pcibios_penalize_isa_irq(int irq, int active)
+ {
+ }
+ 
+diff --git a/arch/i386/kernel/acpi/Makefile b/arch/i386/kernel/acpi/Makefile
+--- a/arch/i386/kernel/acpi/Makefile
++++ b/arch/i386/kernel/acpi/Makefile
+@@ -2,3 +2,7 @@ obj-$(CONFIG_ACPI_BOOT)		:= boot.o
+ obj-$(CONFIG_X86_IO_APIC)	+= earlyquirk.o
+ obj-$(CONFIG_ACPI_SLEEP)	+= sleep.o wakeup.o
+ 
++ifneq ($(CONFIG_ACPI_PROCESSOR),)
++obj-y				+= cstate.o
++endif
++
+diff --git a/arch/i386/kernel/acpi/cstate.c b/arch/i386/kernel/acpi/cstate.c
+new file mode 100644
+--- /dev/null
++++ b/arch/i386/kernel/acpi/cstate.c
+@@ -0,0 +1,103 @@
++/*
++ * arch/i386/kernel/acpi/cstate.c
++ *
++ * Copyright (C) 2005 Intel Corporation
++ * 	Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
++ * 	- Added _PDC for SMP C-states on Intel CPUs
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/acpi.h>
++
++#include <acpi/processor.h>
++#include <asm/acpi.h>
++
++static void acpi_processor_power_init_intel_pdc(struct acpi_processor_power
++						*pow)
++{
++	struct acpi_object_list *obj_list;
++	union acpi_object *obj;
++	u32 *buf;
++
++	/* allocate and initialize pdc. It will be used later. */
++	obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
++	if (!obj_list) {
++		printk(KERN_ERR "Memory allocation error\n");
++		return;
++	}
++
++	obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
++	if (!obj) {
++		printk(KERN_ERR "Memory allocation error\n");
++		kfree(obj_list);
++		return;
++	}
++
++	buf = kmalloc(12, GFP_KERNEL);
++	if (!buf) {
++		printk(KERN_ERR "Memory allocation error\n");
++		kfree(obj);
++		kfree(obj_list);
++		return;
++	}
++
++	buf[0] = ACPI_PDC_REVISION_ID;
++	buf[1] = 1;
++	buf[2] = ACPI_PDC_C_CAPABILITY_SMP;
++
++	obj->type = ACPI_TYPE_BUFFER;
++	obj->buffer.length = 12;
++	obj->buffer.pointer = (u8 *) buf;
++	obj_list->count = 1;
++	obj_list->pointer = obj;
++	pow->pdc = obj_list;
++
++	return;
++}
++
++/* Initialize _PDC data based on the CPU vendor */
++void acpi_processor_power_init_pdc(struct acpi_processor_power *pow,
++				   unsigned int cpu)
++{
++	struct cpuinfo_x86 *c = cpu_data + cpu;
++
++	pow->pdc = NULL;
++	if (c->x86_vendor == X86_VENDOR_INTEL)
++		acpi_processor_power_init_intel_pdc(pow);
++
++	return;
++}
++
++EXPORT_SYMBOL(acpi_processor_power_init_pdc);
++
++/*
++ * Initialize bm_flags based on the CPU cache properties
++ * On SMP it depends on cache configuration
++ * - When cache is not shared among all CPUs, we flush cache
++ *   before entering C3.
++ * - When cache is shared among all CPUs, we use bm_check
++ *   mechanism as in UP case
++ *
++ * This routine is called only after all the CPUs are online
++ */
++void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
++					unsigned int cpu)
++{
++	struct cpuinfo_x86 *c = cpu_data + cpu;
++
++	flags->bm_check = 0;
++	if (num_online_cpus() == 1)
++		flags->bm_check = 1;
++	else if (c->x86_vendor == X86_VENDOR_INTEL) {
++		/*
++		 * Today all CPUs that support C3 share cache.
++		 * TBD: This needs to look at cache shared map, once
++		 * multi-core detection patch makes to the base.
++		 */
++		flags->bm_check = 1;
++	}
++}
++
++EXPORT_SYMBOL(acpi_processor_power_init_bm_check);
+diff --git a/arch/i386/kernel/acpi/wakeup.S b/arch/i386/kernel/acpi/wakeup.S
+--- a/arch/i386/kernel/acpi/wakeup.S
++++ b/arch/i386/kernel/acpi/wakeup.S
+@@ -74,8 +74,9 @@ wakeup_code:
+ 	movw	%ax,%fs
+ 	movw	$0x0e00 + 'i', %fs:(0x12)
+ 	
+-	# need a gdt
+-	lgdt	real_save_gdt - wakeup_code
++	# need a gdt -- use lgdtl to force 32-bit operands, in case
++	# the GDT is located past 16 megabytes.
++	lgdtl	real_save_gdt - wakeup_code
+ 
+ 	movl	real_save_cr0 - wakeup_code, %eax
+ 	movl	%eax, %cr0
+diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+--- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
++++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+@@ -442,6 +442,13 @@ acpi_cpufreq_cpu_init (
+ 			(u32) data->acpi_data.states[i].transition_latency);
+ 
+ 	cpufreq_frequency_table_get_attr(data->freq_table, policy->cpu);
++	
++	/*
++	 * the first call to ->target() should result in us actually
++	 * writing something to the appropriate registers.
++	 */
++	data->resume = 1;
++	
+ 	return (result);
+ 
+  err_freqfree:
+diff --git a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
+--- a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
++++ b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
+@@ -375,7 +375,7 @@ static int centrino_cpu_init_acpi(struct
+ 	arg0.buffer.pointer = (u8 *) arg0_buf;
+ 	arg0_buf[0] = ACPI_PDC_REVISION_ID;
+ 	arg0_buf[1] = 1;
+-	arg0_buf[2] = ACPI_PDC_EST_CAPABILITY_SMP | ACPI_PDC_EST_CAPABILITY_MSR;
++	arg0_buf[2] = ACPI_PDC_EST_CAPABILITY_SMP_MSR;
+ 
+ 	p.pdc = &arg_list;
+ 
+diff --git a/arch/i386/pci/acpi.c b/arch/i386/pci/acpi.c
+--- a/arch/i386/pci/acpi.c
++++ b/arch/i386/pci/acpi.c
+@@ -30,6 +30,7 @@ static int __init pci_acpi_init(void)
+ 	acpi_irq_penalty_init();
+ 	pcibios_scanned++;
+ 	pcibios_enable_irq = acpi_pci_irq_enable;
++	pcibios_disable_irq = acpi_pci_irq_disable;
+ 
+ 	if (pci_routeirq) {
+ 		/*
+diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c
+--- a/arch/i386/pci/common.c
++++ b/arch/i386/pci/common.c
+@@ -249,3 +249,9 @@ int pcibios_enable_device(struct pci_dev
+ 
+ 	return pcibios_enable_irq(dev);
+ }
++
++void pcibios_disable_device (struct pci_dev *dev)
++{
++	if (pcibios_disable_irq)
++		pcibios_disable_irq(dev);
++}
+diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
+--- a/arch/i386/pci/irq.c
++++ b/arch/i386/pci/irq.c
+@@ -56,6 +56,7 @@ struct irq_router_handler {
+ };
+ 
+ int (*pcibios_enable_irq)(struct pci_dev *dev) = NULL;
++void (*pcibios_disable_irq)(struct pci_dev *dev) = NULL;
+ 
+ /*
+  *  Search 0xf0000 -- 0xfffff for the PCI IRQ Routing Table.
+@@ -1006,24 +1007,28 @@ static int __init pcibios_irq_init(void)
+ subsys_initcall(pcibios_irq_init);
+ 
+ 
+-static void pirq_penalize_isa_irq(int irq)
++static void pirq_penalize_isa_irq(int irq, int active)
+ {
+ 	/*
+ 	 *  If any ISAPnP device reports an IRQ in its list of possible
+ 	 *  IRQ's, we try to avoid assigning it to PCI devices.
+ 	 */
+-	if (irq < 16)
+-		pirq_penalty[irq] += 100;
++	if (irq < 16) {
++		if (active)
++			pirq_penalty[irq] += 1000;
++		else
++			pirq_penalty[irq] += 100;
++	}
+ }
+ 
+-void pcibios_penalize_isa_irq(int irq)
++void pcibios_penalize_isa_irq(int irq, int active)
+ {
+ #ifdef CONFIG_ACPI_PCI
+ 	if (!acpi_noirq)
+-		acpi_penalize_isa_irq(irq);
++		acpi_penalize_isa_irq(irq, active);
+ 	else
+ #endif
+-		pirq_penalize_isa_irq(irq);
++		pirq_penalize_isa_irq(irq, active);
+ }
+ 
+ static int pirq_enable_irq(struct pci_dev *dev)
+diff --git a/arch/i386/pci/pci.h b/arch/i386/pci/pci.h
+--- a/arch/i386/pci/pci.h
++++ b/arch/i386/pci/pci.h
+@@ -72,3 +72,4 @@ extern int pcibios_scanned;
+ extern spinlock_t pci_config_lock;
+ 
+ extern int (*pcibios_enable_irq)(struct pci_dev *dev);
++extern void (*pcibios_disable_irq)(struct pci_dev *dev);
+diff --git a/arch/i386/pci/visws.c b/arch/i386/pci/visws.c
+--- a/arch/i386/pci/visws.c
++++ b/arch/i386/pci/visws.c
+@@ -21,7 +21,7 @@ static int pci_visws_enable_irq(struct p
+ 
+ int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq;
+ 
+-void __init pcibios_penalize_isa_irq(int irq) {}
++void __init pcibios_penalize_isa_irq(int irq, int active) {}
+ 
+ 
+ unsigned int pci_bus0, pci_bus1;
+diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
+--- a/arch/ia64/kernel/acpi.c
++++ b/arch/ia64/kernel/acpi.c
+@@ -11,6 +11,7 @@
+  *  Copyright (C) 2001 Jenna Hall <jenna.s.hall at intel.com>
+  *  Copyright (C) 2001 Takayoshi Kochi <t-kochi at bq.jp.nec.com>
+  *  Copyright (C) 2002 Erich Focht <efocht at ess.nec.de>
++ *  Copyright (C) 2004 Ashok Raj <ashok.raj at intel.com>
+  *
+  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  *
+@@ -67,6 +68,11 @@ EXPORT_SYMBOL(pm_power_off);
+ unsigned char acpi_kbd_controller_present = 1;
+ unsigned char acpi_legacy_devices;
+ 
++static unsigned int __initdata acpi_madt_rev;
++
++unsigned int acpi_cpei_override;
++unsigned int acpi_cpei_phys_cpuid;
++
+ #define MAX_SAPICS 256
+ u16 ia64_acpiid_to_sapicid[MAX_SAPICS] =
+ 	{ [0 ... MAX_SAPICS - 1] = -1 };
+@@ -267,10 +273,56 @@ acpi_parse_plat_int_src (
+ 						(plintsrc->flags.trigger == 1) ? IOSAPIC_EDGE : IOSAPIC_LEVEL);
+ 
+ 	platform_intr_list[plintsrc->type] = vector;
++	if (acpi_madt_rev > 1) {
++		acpi_cpei_override = plintsrc->plint_flags.cpei_override_flag;
++	}
++
++	/*
++	 * Save the physical id, so we can check when its being removed
++	 */
++	acpi_cpei_phys_cpuid = ((plintsrc->id << 8) | (plintsrc->eid)) & 0xffff;
++
+ 	return 0;
+ }
+ 
+ 
++unsigned int can_cpei_retarget(void)
++{
++	extern int cpe_vector;
++
++	/*
++	 * Only if CPEI is supported and the override flag
++	 * is present, otherwise return that its re-targettable
++	 * if we are in polling mode.
++	 */
++	if (cpe_vector > 0 && !acpi_cpei_override)
++		return 0;
++	else
++		return 1;
++}
++
++unsigned int is_cpu_cpei_target(unsigned int cpu)
++{
++	unsigned int logical_id;
++
++	logical_id = cpu_logical_id(acpi_cpei_phys_cpuid);
++
++	if (logical_id == cpu)
++		return 1;
++	else
++		return 0;
<<Diff was trimmed, longer than 597 lines>>



More information about the pld-cvs-commit mailing list