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 <[EMAIL PROTECTED]>
++ *    - 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 <[EMAIL PROTECTED]>
+  *  Copyright (C) 2001 Takayoshi Kochi <[EMAIL PROTECTED]>
+  *  Copyright (C) 2002 Erich Focht <[EMAIL PROTECTED]>
++ *  Copyright (C) 2004 Ashok Raj <[EMAIL PROTECTED]>
+  *
+  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  *
+@@ -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>>
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to