http://linux-acpi.bkbits.net/linux-acpi-test-mm
len.brown@intel.com|ChangeSet|20040902073943|57993 len.brown

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/09/22 23:33:49-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# drivers/Makefile
#   2004/09/22 23:33:42-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/ia64/kernel/acpi.c
#   2004/09/22 23:33:42-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/17 13:05:56-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# arch/x86_64/kernel/setup.c
#   2004/09/17 13:05:52-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/io_apic.c
#   2004/09/17 13:05:52-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/x86_64/Kconfig
#   2004/09/17 13:05:52-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/i386/kernel/setup.c
#   2004/09/17 13:05:52-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# Documentation/kernel-parameters.txt
#   2004/09/17 13:05:52-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/16 16:07:06-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# drivers/Makefile
#   2004/09/16 16:07:02-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/16 16:07:02-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# Documentation/kernel-parameters.txt
#   2004/09/16 16:07:02-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/13 15:14:07-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# arch/x86_64/Kconfig
#   2004/09/13 15:14:01-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/i386/Kconfig
#   2004/09/13 15:14:01-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/11 14:54:24-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# drivers/acpi/osl.c
#   2004/09/11 14:54:20-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/09 14:06:06-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# arch/ia64/kernel/acpi.c
#   2004/09/09 14:06:02-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/08 11:34:30-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-acpi
# 
# drivers/Makefile
#   2004/09/08 11:34:26-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/05 21:49:12-07:00 akpm@bix.(none) 
#   Merge http://linux-acpi.bkbits.net/linux-acpi-test-mm
#   into bix.(none):/usr/src/bk-acpi
# 
# include/asm-x86_64/mpspec.h
#   2004/09/05 21:49:08-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/setup.c
#   2004/09/05 21:49:08-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/02 03:39:43-04:00 len.brown@intel.com 
#   Merge intel.com:/home/lenb/bk/26-latest-test
#   into intel.com:/home/lenb/bk/linux-acpi-test-mm
# 
# include/linux/acpi.h
#   2004/09/02 03:39:35-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/acpi/acpi_drivers.h
#   2004/09/02 03:39:35-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# drivers/acpi/Kconfig
#   2004/09/02 03:39:35-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/io_apic.c
#   2004/09/02 03:39:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/io_apic.c
#   2004/09/02 03:39:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/02 03:39:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/acpi/boot.c
#   2004/09/02 03:39:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/02 03:31:12-04:00 len.brown@intel.com 
#   Merge intel.com:/home/lenb/src/26-stable-dev
#   into intel.com:/home/lenb/src/26-latest-dev
# 
# arch/i386/kernel/io_apic.c
#   2004/09/02 03:31:08-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# Documentation/kernel-parameters.txt
#   2004/09/02 03:31:08-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/02 03:25:49-04:00 len.brown@intel.com 
#   merge
# 
# arch/x86_64/Kconfig
#   2004/09/02 03:25:42-04:00 len.brown@intel.com +1 -0
#   merge
# 
# sound/drivers/mpu401/mpu401.c
#   2004/09/02 03:20:35-04:00 len.brown@intel.com +3 -3
#   Auto merged
# 
# include/asm-x86_64/mpspec.h
#   2004/09/02 03:20:35-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-x86_64/acpi.h
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-i386/fixmap.h
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-i386/acpi.h
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# drivers/char/ipmi/ipmi_si_intf.c
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +1 -2
#   Auto merged
# 
# drivers/Makefile
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/setup.c
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/Makefile
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/setup.c
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/io_apic.c
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/acpi/boot.c
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/Makefile
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/Kconfig
#   2004/09/02 03:20:34-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/02 03:00:54-04:00 len.brown@intel.com 
#   Merge intel.com:/home/lenb/bk/26-latest-test
#   into intel.com:/home/lenb/bk/linux-acpi-test-mm
# 
# sound/drivers/mpu401/mpu401.c
#   2004/09/02 03:00:50-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/setup.c
#   2004/09/02 03:00:50-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/io_apic.c
#   2004/09/02 03:00:50-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/Makefile
#   2004/09/02 03:00:49-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/09/02 02:45:09-04:00 len.brown@intel.com 
#   [ACPI] delete ACPI DMI/BIOS cutoff year by default
#   
#   CONFIG_ACPI_BLACKLIST_YEAR=2001 for old behaviour
# 
# drivers/acpi/bus.c
#   2004/09/02 02:45:03-04:00 len.brown@intel.com +4 -1
#   bugfix: don't run acpi_early_init if acpi_disabled
# 
# drivers/acpi/blacklist.c
#   2004/09/02 02:45:03-04:00 len.brown@intel.com +38 -15
#   CONFIG_ACPI_BLACKLIST_YEAR
#   create blacklisted_by_year()
# 
# drivers/acpi/Kconfig
#   2004/09/02 02:45:03-04:00 len.brown@intel.com +10 -0
#   create CONFIG_ACPI_BLACKLIST_YEAR
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/02 02:45:03-04:00 len.brown@intel.com +1 -22
#   delete dmi_check_blacklist() and acpi_bios_year()
# 
# arch/i386/kernel/acpi/boot.c
#   2004/09/02 02:45:03-04:00 len.brown@intel.com +9 -3
#   allow acpi=force to override ACPI blacklist
# 
# ChangeSet
#   2004/09/01 23:04:13-04:00 len.brown@intel.com 
#   [ACPI] move acpi_bios_year() to blacklist.c from dmi_scan.c (Pavel Machek)
# 
# include/linux/acpi.h
#   2004/09/01 23:04:07-04:00 len.brown@intel.com +4 -3
#   add externs, acpi_biso_year();
# 
# drivers/acpi/blacklist.c
#   2004/09/01 23:04:07-04:00 len.brown@intel.com +21 -0
#   add acpi_bios_year()
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/01 23:04:07-04:00 len.brown@intel.com +3 -17
#   move ACPI_BLACKLIST_CUTOFF_YEAR
# 
# ChangeSet
#   2004/09/01 22:25:08-04:00 len.brown@intel.com 
#   [ACPI] debugging enhancements (Yi Zhu)
#   
#   new cmdline options: "acpi_dbg_layer=",  "acpi_dbg_level="
#   and /proc/acpi/debug_layer, debug_level now describe levels
#   
#   http://bugzilla.kernel.org/show_bug.cgi?id=2398
# 
# include/acpi/acpi_drivers.h
#   2004/09/01 17:55:24-04:00 len.brown@intel.com +0 -55
#   debugging enhancements
# 
# drivers/acpi/utilities/utglobal.c
#   2004/09/01 17:55:24-04:00 len.brown@intel.com +2 -7
#   debugging enhancements
# 
# drivers/acpi/debug.c
#   2004/09/01 17:55:24-04:00 len.brown@intel.com +103 -2
#   debugging enhancements
# 
# drivers/acpi/bus.c
#   2004/09/01 17:55:24-04:00 len.brown@intel.com +0 -3
#   debugging enhancements
# 
# Documentation/kernel-parameters.txt
#   2004/09/01 17:55:24-04:00 len.brown@intel.com +14 -0
#   debugging enhancements
# 
# ChangeSet
#   2004/09/01 22:16:57-04:00 len.brown@intel.com 
#   [ACPI] allow config to specify custom DSDT (Ulf Dambacher)
# 
# drivers/acpi/osl.c
#   2004/09/01 22:16:45-04:00 len.brown@intel.com +10 -0
#   [ACPI] custom DSDT
# 
# drivers/acpi/Kconfig
#   2004/09/01 22:16:45-04:00 len.brown@intel.com +17 -0
#   [ACPI] custom DSDT
# 
# ChangeSet
#   2004/09/01 20:31:33-04:00 len.brown@intel.com 
#   [ACPI] cleanup: use ioapic_register_intr()
# 
# arch/x86_64/kernel/io_apic.c
#   2004/09/01 20:31:27-04:00 len.brown@intel.com +1 -9
#   use ioapic_register_intr()
# 
# arch/i386/kernel/io_apic.c
#   2004/09/01 20:31:27-04:00 len.brown@intel.com +1 -9
#   use ioapic_register_intr()
# 
# ChangeSet
#   2004/09/01 20:28:43-04:00 len.brown@intel.com 
#   Cset exclude: len.brown@intel.com|ChangeSet|20040817220851|52337
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/01 20:28:41-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# ChangeSet
#   2004/09/01 20:26:54-04:00 len.brown@intel.com 
#   Cset exclude: len.brown@intel.com|ChangeSet|20040826050001|40089
# 
# sound/drivers/mpu401/mpu401.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/linux/acpi.h
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-i386/mpspec.h
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-i386/io_apic.h
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-i386/fixmap.h
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# drivers/acpi/acpi_ksyms.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# drivers/acpi/Makefile
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# drivers/acpi/Kconfig
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# drivers/Makefile
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/Kconfig
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/ia64/kernel/setup.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/ia64/kernel/acpi.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/setup.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/mpparse.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/io_apic.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/dmi_scan.c
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/acpi/Makefile
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/Makefile
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/Kconfig
#   2004/09/01 20:26:43-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-x86_64/mpspec.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-x86_64/io_apic.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-x86_64/acpi.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/asm-i386/acpi.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/acpi/acpi_drivers.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# include/acpi/acpi_bus.h
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# drivers/char/ipmi/ipmi_si_intf.c
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/kernel/setup.c
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/kernel/mpparse.c
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/kernel/io_apic.c
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/kernel/acpi/Makefile
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/x86_64/kernel/Makefile
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# arch/i386/kernel/acpi/boot.c
#   2004/09/01 20:26:42-04:00 len.brown@intel.com +0 -0
#   Exclude
# 
# ChangeSet
#   2004/08/27 01:25:27-04:00 len.brown@intel.com 
#   Merge intel.com:/home/lenb/bk/26-latest-test
#   into intel.com:/home/lenb/bk/linux-acpi-test-mm
# 
# include/asm-i386/acpi.h
#   2004/08/27 01:25:23-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/acpi/boot.c
#   2004/08/27 01:25:23-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/Makefile
#   2004/08/27 01:25:23-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/08/26 14:50:55-04:00 len.brown@intel.com 
#   [ACPI] Export acpi_strict for use in modular drivers.
#   This will enable drivers to work around BIOS deficiencies,
#   while still allowing the drivers to be more picky with "acpi=strict"
#   
#   Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
# 
# arch/i386/kernel/acpi/boot.c
#   2004/08/26 14:50:48-04:00 len.brown@intel.com +1 -0
#   export acpi_strict
# 
# ChangeSet
#   2004/08/26 01:04:55-04:00 len.brown@intel.com 
#   merge
# 
# arch/x86_64/Kconfig
#   2004/08/26 01:04:50-04:00 len.brown@intel.com +0 -1
#   merge
# 
# include/asm-x86_64/mpspec.h
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-x86_64/acpi.h
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-i386/fixmap.h
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# include/asm-i386/acpi.h
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# drivers/char/ipmi/ipmi_si_intf.c
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -3
#   Auto merged
# 
# drivers/Makefile
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/setup.c
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/x86_64/kernel/Makefile
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/io_apic.c
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/kernel/Makefile
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# arch/i386/Kconfig
#   2004/08/26 01:01:12-04:00 len.brown@intel.com +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/08/26 00:19:36-04:00 len.brown@intel.com 
#   [ACPI] fix numa build warnings (Keith Owens)
#   
#   Signed-off-by: Takayoshi Kochi <t-kochi@bq.jp.nec.com>
# 
# drivers/acpi/numa.c
#   2004/07/28 09:07:45-04:00 len.brown@intel.com +10 -2
#   fix numa build warnings
# 
# ChangeSet
#   2004/08/24 22:18:39-04:00 len.brown@intel.com 
#   [ACPI] quiet ACPI NUMA boot messages
#   Signed-off-by: Jesse Barnes <jbarnes@sgi.com>
# 
# drivers/acpi/tables.c
#   2004/08/24 18:12:20-04:00 len.brown@intel.com +2 -2
#   quiet boot messages
# 
# drivers/acpi/numa.c
#   2004/08/24 18:16:12-04:00 len.brown@intel.com +0 -4
#   quiet boot messages
# 
# ChangeSet
#   2004/08/21 23:12:45-04:00 len.brown@intel.com 
#   [ACPI] Enable ACPICA workarounds for 'RELAXED_AML' and 'implicit return'
#   These workarounds are disabled if "acpi=strict"
# 
# include/acpi/acglobal.h
#   2004/08/21 23:12:39-04:00 len.brown@intel.com +1 -1
#   acpi_gbl_enable_interpreter_slack typo fix
# 
# drivers/acpi/executer/exfldio.c
#   2004/08/21 23:12:39-04:00 len.brown@intel.com +2 -35
#   acpi_gbl_enable_interpreter_slack typo fix
#   delete the previous RELAXED_AML workaround it replaces
# 
# drivers/acpi/dispatcher/dsutils.c
#   2004/08/21 23:12:39-04:00 len.brown@intel.com +1 -1
#   acpi_gbl_enable_interpreter_slack typo fix
# 
# drivers/acpi/bus.c
#   2004/08/21 23:12:39-04:00 len.brown@intel.com +4 -0
#   if (!acpi_strict) enable_acpi_gbl_interpreter_slack = TRUE
# 
# ChangeSet
#   2004/08/20 18:18:05-04:00 len.brown@intel.com 
#   [ACPI] ACPICA 20040816 update from Bob Moore
#   
#   Designed and implemented support within the AML interpreter
#   for the so-called implicit return.  This support returns
#   the result of the last ASL operation within a control
#   method, in the absence of an explicit Return() operator.
#   A few machines depend on this behavior, even though it
#   is not explicitly supported by the ASL language.  It is
#   optional support that can be enabled at runtime via the
#   acpi_gbl_enable_interpreter_slack flag.
#   
#   Removed support for the PCI_Config address space from the
#   internal low level hardware interfaces (acpi_hw_low_level_read
#   and acpi_hw_low_level_write).  This support was not used
#   internally, and would not work correctly anyway because
#   the PCI bus number and segment number were not supported.
#   There are separate interfaces for PCI configuration space
#   access because of the unique interface.
#   acpica-unix-20040816.patch
#   
#   AE_CODE_AML_MAX fix from Bjorn Helgaas
# 
# include/acpi/acmacros.h
#   2004/08/20 14:05:51-04:00 len.brown@intel.com +0 -18
#   ACPICA 20040816
# 
# include/acpi/acexcep.h
#   2004/08/20 14:05:51-04:00 len.brown@intel.com +1 -1
#   ACPICA 20040816
# 
# include/acpi/acconfig.h
#   2004/08/20 14:05:51-04:00 len.brown@intel.com +1 -1
#   ACPICA 20040816
# 
# drivers/acpi/hardware/hwtimer.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +12 -16
#   ACPICA 20040816
# 
# drivers/acpi/hardware/hwregs.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +22 -48
#   ACPICA 20040816
# 
# drivers/acpi/hardware/hwgpe.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +1 -1
#   ACPICA 20040816
# 
# drivers/acpi/events/evxface.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +5 -6
#   ACPICA 20040816
# 
# drivers/acpi/events/evrgnini.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +6 -6
#   ACPICA 20040816
# 
# drivers/acpi/events/evregion.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +8 -9
#   ACPICA 20040816
# 
# drivers/acpi/events/evmisc.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +23 -9
#   ACPICA 20040816
# 
# drivers/acpi/events/evgpe.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +5 -1
#   ACPICA 20040816
# 
# drivers/acpi/dispatcher/dsutils.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +37 -16
#   ACPICA 20040816
# 
# drivers/acpi/dispatcher/dsmethod.c
#   2004/08/20 14:05:55-04:00 len.brown@intel.com +31 -21
#   ACPICA 20040816
# 
# ChangeSet
#   2004/08/19 02:43:31-04:00 len.brown@intel.com 
#   [ACPI] fix __initdata bug in acpi_irq_penalty[]
#   
#   Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
# 
# drivers/acpi/pci_link.c
#   2004/08/18 19:26:48-04:00 len.brown@intel.com +2 -2
#   fix __initdata bug in acpi_irq_penalty[]
# 
diff -Nru a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
--- a/Documentation/kernel-parameters.txt	2004-09-26 10:52:49 -07:00
+++ b/Documentation/kernel-parameters.txt	2004-09-26 10:52:49 -07:00
@@ -138,6 +138,20 @@
 			Recognize and ignore IRQ0/pin2 Interrupt Override.
 			For broken nForce2 BIOS resulting in XT-PIC timer.
 
+	acpi_dbg_layer=	[HW,ACPI]
+			Format: <int>
+			Each bit of the <int> indicates an acpi debug layer,
+			1: enable, 0: disable. It is useful for boot time
+			debugging. After system has booted up, it can be set
+			via /proc/acpi/debug_layer.
+
+	acpi_dbg_level=	[HW,ACPI]
+			Format: <int>
+			Each bit of the <int> indicates an acpi debug level,
+			1: enable, 0: disable. It is useful for boot time
+			debugging. After system has booted up, it can be set
+			via /proc/acpi/debug_level.
+
 	ad1816=		[HW,OSS]
 			Format: <io>,<irq>,<dma>,<dma2>
 			See also Documentation/sound/oss/AD1816.
diff -Nru a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
--- a/arch/i386/kernel/acpi/boot.c	2004-09-26 10:52:49 -07:00
+++ b/arch/i386/kernel/acpi/boot.c	2004-09-26 10:52:49 -07:00
@@ -71,6 +71,7 @@
 int acpi_lapic;
 int acpi_ioapic;
 int acpi_strict;
+EXPORT_SYMBOL(acpi_strict);
 
 acpi_interrupt_flags acpi_sci_flags __initdata;
 int acpi_sci_override_gsi __initdata;
@@ -829,9 +830,15 @@
 	 */
 	error = acpi_blacklisted();
 	if (error) {
-		printk(KERN_WARNING PREFIX "BIOS listed in blacklist, disabling ACPI support\n");
-		disable_acpi();
-		return error;
+		extern int acpi_force;
+
+		if (acpi_force) {
+			printk(KERN_WARNING PREFIX "acpi=force override\n");
+		} else {
+			printk(KERN_WARNING PREFIX "Disabling ACPI support\n");
+			disable_acpi();
+			return error;
+		}
 	}
 
 	/*
diff -Nru a/arch/i386/kernel/dmi_scan.c b/arch/i386/kernel/dmi_scan.c
--- a/arch/i386/kernel/dmi_scan.c	2004-09-26 10:52:49 -07:00
+++ b/arch/i386/kernel/dmi_scan.c	2004-09-26 10:52:49 -07:00
@@ -4,7 +4,7 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/slab.h>
-#include <asm/acpi.h>
+#include <linux/acpi.h>
 #include <asm/io.h>
 #include <linux/pm.h>
 #include <asm/system.h>
@@ -443,41 +443,6 @@
 
 	{ NULL, }
 };
-	
-	
-/*
- *	Walk the blacklist table running matching functions until someone 
- *	returns 1 or we hit the end.
- */
- 
-
-static __init void dmi_check_blacklist(void)
-{
-#ifdef	CONFIG_ACPI_BOOT
-#define	ACPI_BLACKLIST_CUTOFF_YEAR	2001
-
-	if (dmi_ident[DMI_BIOS_DATE]) { 
-		char *s = strrchr(dmi_ident[DMI_BIOS_DATE], '/'); 
-		if (s) { 
-			int year, disable = 0;
-			s++; 
-			year = simple_strtoul(s,NULL,0); 
-			if (year >= 1000) 
-				disable = year < ACPI_BLACKLIST_CUTOFF_YEAR; 
-			else if (year < 1 || (year > 90 && year <= 99))
-				disable = 1; 
-			if (disable && !acpi_force) { 
-				printk(KERN_NOTICE "ACPI disabled because your bios is from %s and too old\n", s);
-				printk(KERN_NOTICE "You can enable it with acpi=force\n");
-				disable_acpi();
-			} 
-		}
-	}
-#endif
- 	dmi_check_system(dmi_blacklist);
-}
-
-	
 
 /*
  *	Process a DMI table entry. Right now all we care about are the BIOS
@@ -535,7 +500,7 @@
 {
 	int err = dmi_iterate(dmi_decode);
 	if(err == 0)
-		dmi_check_blacklist();
+ 		dmi_check_system(dmi_blacklist);
 	else
 		printk(KERN_INFO "DMI not present.\n");
 }
diff -Nru a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
--- a/arch/i386/kernel/io_apic.c	2004-09-26 10:52:49 -07:00
+++ b/arch/i386/kernel/io_apic.c	2004-09-26 10:52:49 -07:00
@@ -2520,15 +2520,7 @@
 		mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq,
 		edge_level, active_high_low);
 
- 	if (use_pci_vector() && !platform_legacy_irq(irq))
-		irq = IO_APIC_VECTOR(irq);
-	if (edge_level) {
-		irq_desc[irq].handler = &ioapic_level_type;
-	} else {
-		irq_desc[irq].handler = &ioapic_edge_type;
-	}
-
-	set_intr_gate(entry.vector, interrupt[irq]);
+	ioapic_register_intr(irq, entry.vector, edge_level);
 
 	if (!ioapic && (irq < 16))
 		disable_8259A_irq(irq);
diff -Nru a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
--- a/arch/x86_64/Kconfig	2004-09-26 10:52:49 -07:00
+++ b/arch/x86_64/Kconfig	2004-09-26 10:52:49 -07:00
@@ -169,7 +169,7 @@
 	bool
 	depends on SMP && !MK8
 	default y
-
+       
 config MATH_EMULATION
 	bool
 
diff -Nru a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
--- a/arch/x86_64/kernel/io_apic.c	2004-09-26 10:52:49 -07:00
+++ b/arch/x86_64/kernel/io_apic.c	2004-09-26 10:52:49 -07:00
@@ -2029,15 +2029,7 @@
 	       mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq,
 	       edge_level, active_high_low);
 
- 	if (use_pci_vector() && !platform_legacy_irq(irq))
-		irq = IO_APIC_VECTOR(irq);
-	if (edge_level) {
-		irq_desc[irq].handler = &ioapic_level_type;
-	} else {
-		irq_desc[irq].handler = &ioapic_edge_type;
-	}
-
-	set_intr_gate(entry.vector, interrupt[irq]);
+	ioapic_register_intr(irq, entry.vector, edge_level);
 
 	if (!ioapic && (irq < 16))
 		disable_8259A_irq(irq);
diff -Nru a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
--- a/drivers/acpi/Kconfig	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/Kconfig	2004-09-26 10:52:49 -07:00
@@ -204,6 +204,33 @@
 	  If you have a legacy free Toshiba laptop (such as the Libretto L1
 	  series), say Y.
 
+config ACPI_CUSTOM_DSDT
+	bool "Include Custom DSDT"
+	depends on X86
+	depends on ACPI_INTERPRETER
+	default n 
+	help
+	  Thist option is to load a custom ACPI DSDT
+	  If you don't know what that is, say N.
+
+config ACPI_CUSTOM_DSDT_FILE
+	string "Custom DSDT Table file to include"
+	depends on ACPI_CUSTOM_DSDT
+	default ""
+	help
+	  Enter the full path name to the file wich includes the AmlCode declaration.
+
+config ACPI_BLACKLIST_YEAR
+	int "Disable ACPI for systems before Jan 1st this year"
+	default 0
+	help
+	  enter a 4-digit year, eg. 2001 to disable ACPI by default
+	  on platforms with DMI BIOS date before January 1st that year.
+	  "acpi=force" can be used to override this mechanism.
+
+	  Enter 0 to disable this mechanism and allow ACPI to
+	  run by default no matter what the year.  (default)
+
 config ACPI_DEBUG
 	bool "Debug Statements"
 	depends on ACPI_INTERPRETER
diff -Nru a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
--- a/drivers/acpi/blacklist.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/blacklist.c	2004-09-26 10:52:49 -07:00
@@ -2,7 +2,9 @@
  *  blacklist.c
  *
  *  Check to see if the given machine has a known bad ACPI BIOS
+ *  or if the BIOS is too old.
  *
+ *  Copyright (C) 2004 Len Brown <len.brown@intel.com>
  *  Copyright (C) 2002 Andy Grover <andrew.grover@intel.com>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -30,6 +32,7 @@
 #include <linux/init.h>
 #include <linux/acpi.h>
 #include <acpi/acpi_bus.h>
+#include <linux/dmi.h>
 
 enum acpi_blacklist_predicates
 {
@@ -70,6 +73,45 @@
 };
 
 
+#if	CONFIG_ACPI_BLACKLIST_YEAR
+
+static int __init
+blacklist_by_year(void)
+{
+	int year;
+	char *s = dmi_get_system_info(DMI_BIOS_DATE);
+
+	if (!s)
+		return 0;
+	if (!*s)
+		return 0;
+
+	s = strrchr(s, '/');
+	if (!s)
+		return 0;
+
+	s += 1;
+
+	year = simple_strtoul(s,NULL,0); 
+
+	if (year < 100) {		/* 2-digit year */
+		year += 1900;
+		if (year < 1996)	/* no dates < spec 1.0 */
+			year += 100;
+	}
+
+	if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
+		printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), " 
+			"acpi=force is required to enable ACPI\n",
+			year, CONFIG_ACPI_BLACKLIST_YEAR);
+		return 1;
+	}
+	return 0;
+}
+#else
+static inline int blacklist_by_year(void) { return 0; }
+#endif
+
 int __init
 acpi_blacklisted(void)
 {
@@ -119,6 +161,8 @@
 			i++;
 		}
 	}
+
+	blacklisted += blacklist_by_year();
 
 	return blacklisted;
 }
diff -Nru a/drivers/acpi/bus.c b/drivers/acpi/bus.c
--- a/drivers/acpi/bus.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/bus.c	2004-09-26 10:52:49 -07:00
@@ -596,7 +596,14 @@
 	acpi_status		status = AE_OK;
 	struct acpi_buffer	buffer = {sizeof(acpi_fadt), &acpi_fadt};
 
-	ACPI_FUNCTION_TRACE("acpi_bus_init");
+	ACPI_FUNCTION_TRACE("acpi_early_init");
+
+	if (acpi_disabled)
+		return;
+
+	/* enable workarounds, unless strict ACPI spec. compliance */
+	if (!acpi_strict)
+		acpi_gbl_enable_interpreter_slack = TRUE;
 
 	status = acpi_initialize_subsystem();
 	if (ACPI_FAILURE(status)) {
@@ -733,9 +740,6 @@
 
 	printk(KERN_INFO PREFIX "Subsystem revision %08x\n",
 		ACPI_CA_VERSION);
-
-	/* Initial core debug level excludes drivers, so include them now */
-	acpi_set_debug(ACPI_DEBUG_LOW);
 
 	if (acpi_disabled) {
 		printk(KERN_INFO PREFIX "Interpreter disabled.\n");
diff -Nru a/drivers/acpi/debug.c b/drivers/acpi/debug.c
--- a/drivers/acpi/debug.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/debug.c	2004-09-26 10:52:49 -07:00
@@ -4,6 +4,7 @@
 
 #include <linux/proc_fs.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <asm/uaccess.h>
 #include <acpi/acpi_drivers.h>
 
@@ -13,6 +14,81 @@
 #define ACPI_SYSTEM_FILE_DEBUG_LAYER	"debug_layer"
 #define ACPI_SYSTEM_FILE_DEBUG_LEVEL	"debug_level"
 
+#ifdef MODULE_PARAM_PREFIX
+#undef MODULE_PARAM_PREFIX
+#endif
+
+#define MODULE_PARAM_PREFIX
+module_param(acpi_dbg_layer, uint, 0400);
+module_param(acpi_dbg_level, uint, 0400);
+
+struct acpi_dlayer {
+	const char *name;
+	unsigned long value;
+};
+struct acpi_dlevel {
+	const char *name;
+	unsigned long value;
+};
+#define ACPI_DEBUG_INIT(v)	{ .name = #v, .value = v }
+
+const struct acpi_dlayer acpi_debug_layers[] =
+{
+	ACPI_DEBUG_INIT(ACPI_UTILITIES),
+	ACPI_DEBUG_INIT(ACPI_HARDWARE),
+	ACPI_DEBUG_INIT(ACPI_EVENTS),
+	ACPI_DEBUG_INIT(ACPI_TABLES),
+	ACPI_DEBUG_INIT(ACPI_NAMESPACE),
+	ACPI_DEBUG_INIT(ACPI_PARSER),
+	ACPI_DEBUG_INIT(ACPI_DISPATCHER),
+	ACPI_DEBUG_INIT(ACPI_EXECUTER),
+	ACPI_DEBUG_INIT(ACPI_RESOURCES),
+	ACPI_DEBUG_INIT(ACPI_CA_DEBUGGER),
+	ACPI_DEBUG_INIT(ACPI_OS_SERVICES),
+	ACPI_DEBUG_INIT(ACPI_CA_DISASSEMBLER),
+	ACPI_DEBUG_INIT(ACPI_COMPILER),
+	ACPI_DEBUG_INIT(ACPI_TOOLS),
+};
+
+const struct acpi_dlevel acpi_debug_levels[] =
+{
+	ACPI_DEBUG_INIT(ACPI_LV_ERROR),
+	ACPI_DEBUG_INIT(ACPI_LV_WARN),
+	ACPI_DEBUG_INIT(ACPI_LV_INIT),
+	ACPI_DEBUG_INIT(ACPI_LV_DEBUG_OBJECT),
+	ACPI_DEBUG_INIT(ACPI_LV_INFO),
+
+	ACPI_DEBUG_INIT(ACPI_LV_INIT_NAMES),
+	ACPI_DEBUG_INIT(ACPI_LV_PARSE),
+	ACPI_DEBUG_INIT(ACPI_LV_LOAD),
+	ACPI_DEBUG_INIT(ACPI_LV_DISPATCH),
+	ACPI_DEBUG_INIT(ACPI_LV_EXEC),
+	ACPI_DEBUG_INIT(ACPI_LV_NAMES),
+	ACPI_DEBUG_INIT(ACPI_LV_OPREGION),
+	ACPI_DEBUG_INIT(ACPI_LV_BFIELD),
+	ACPI_DEBUG_INIT(ACPI_LV_TABLES),
+	ACPI_DEBUG_INIT(ACPI_LV_VALUES),
+	ACPI_DEBUG_INIT(ACPI_LV_OBJECTS),
+	ACPI_DEBUG_INIT(ACPI_LV_RESOURCES),
+	ACPI_DEBUG_INIT(ACPI_LV_USER_REQUESTS),
+	ACPI_DEBUG_INIT(ACPI_LV_PACKAGE),
+
+	ACPI_DEBUG_INIT(ACPI_LV_ALLOCATIONS),
+	ACPI_DEBUG_INIT(ACPI_LV_FUNCTIONS),
+	ACPI_DEBUG_INIT(ACPI_LV_OPTIMIZATIONS),
+
+	ACPI_DEBUG_INIT(ACPI_LV_MUTEX),
+	ACPI_DEBUG_INIT(ACPI_LV_THREADS),
+	ACPI_DEBUG_INIT(ACPI_LV_IO),
+	ACPI_DEBUG_INIT(ACPI_LV_INTERRUPTS),
+
+	ACPI_DEBUG_INIT(ACPI_LV_AML_DISASSEMBLE),
+	ACPI_DEBUG_INIT(ACPI_LV_VERBOSE_INFO),
+	ACPI_DEBUG_INIT(ACPI_LV_FULL_TABLES),
+	ACPI_DEBUG_INIT(ACPI_LV_EVENTS),             
+};
+#define NUM_OF(v)	( sizeof(v)/sizeof(v[0]) )
+
 static int
 acpi_system_read_debug (
 	char			*page,
@@ -24,16 +100,41 @@
 {
 	char			*p = page;
 	int 			size = 0;
+	int			i;
 
 	if (off != 0)
 		goto end;
 
+	p += sprintf(p, "%-25s\tHex        SET\n", "Description");
+
 	switch ((unsigned long) data) {
 	case 0:
-		p += sprintf(p, "0x%08x\n", acpi_dbg_layer);
+		for (i = 0; i < NUM_OF(acpi_debug_layers); i++) {
+			p += sprintf(p, "%-25s\t0x%08lX [%c]\n",
+				acpi_debug_layers[i].name,
+				acpi_debug_layers[i].value,
+				(acpi_dbg_layer & acpi_debug_layers[i].value) ?
+				'*' : ' ');
+		}
+		p += sprintf(p, "%-25s\t0x%08X [%c]\n", "ACPI_ALL_DRIVERS",
+			ACPI_ALL_DRIVERS,
+			(acpi_dbg_layer & ACPI_ALL_DRIVERS) == ACPI_ALL_DRIVERS?
+			'*' : (acpi_dbg_layer & ACPI_ALL_DRIVERS) == 0 ?
+			' ' : '-');
+		p += sprintf(p,
+			"--\ndebug_layer = 0x%08X (* = enabled, - = partial)\n",
+			acpi_dbg_layer);
 		break;
 	case 1:
-		p += sprintf(p, "0x%08x\n", acpi_dbg_level);
+		for (i = 0; i < NUM_OF(acpi_debug_levels); i++) {
+			p += sprintf(p, "%-25s\t0x%08lX [%c]\n",
+				acpi_debug_levels[i].name,
+				acpi_debug_levels[i].value,
+				(acpi_dbg_level & acpi_debug_levels[i].value) ?
+				'*' : ' ');
+		}
+		p += sprintf(p, "--\ndebug_level = 0x%08X (* = enabled)\n",
+				acpi_dbg_level);
 		break;
 	default:
 		p += sprintf(p, "Invalid debug option\n");
diff -Nru a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c
--- a/drivers/acpi/dispatcher/dsmethod.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/dispatcher/dsmethod.c	2004-09-26 10:52:49 -07:00
@@ -58,15 +58,12 @@
  *
  * FUNCTION:    acpi_ds_parse_method
  *
- * PARAMETERS:  obj_handle      - Node of the method
- *              Level           - Current nesting level
- *              Context         - Points to a method counter
- *              return_value    - Not used
+ * PARAMETERS:  obj_handle      - Method node
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Call the parser and parse the AML that is
- *              associated with the method.
+ * DESCRIPTION: Call the parser and parse the AML that is associated with the
+ *              method.
  *
  * MUTEX:       Assumes parser is locked
  *
@@ -191,8 +188,6 @@
  *              increments the thread count, and waits at the method semaphore
  *              for clearance to execute.
  *
- * MUTEX:       Locks/unlocks parser.
- *
  ******************************************************************************/
 
 acpi_status
@@ -251,7 +246,8 @@
  *
  * FUNCTION:    acpi_ds_call_control_method
  *
- * PARAMETERS:  walk_state          - Current state of the walk
+ * PARAMETERS:  Thread              - Info for this thread
+ *              this_walk_state     - Current walk state
  *              Op                  - Current Op to be walked
  *
  * RETURN:      Status
@@ -401,12 +397,13 @@
  *
  * FUNCTION:    acpi_ds_restart_control_method
  *
- * PARAMETERS:  walk_state          - State of the method when it was preempted
- *              Op                  - Pointer to new current op
+ * PARAMETERS:  walk_state          - State for preempted method (caller)
+ *              return_desc         - Return value from the called method
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Restart a method that was preempted
+ * DESCRIPTION: Restart a method that was preempted by another (nested) method
+ *              invocation.  Handle the return value (if any) from the callee.
  *
  ******************************************************************************/
 
@@ -421,17 +418,35 @@
 	ACPI_FUNCTION_TRACE_PTR ("ds_restart_control_method", walk_state);
 
 
+	ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
+		"****Restart [%4.4s] Op %p return_value_from_callee %p\n",
+		(char *) &walk_state->method_node->name, walk_state->method_call_op,
+		return_desc));
+
+	ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
+		"    return_from_this_method_used?=%X res_stack %p Walk %p\n",
+		walk_state->return_used,
+		walk_state->results, walk_state));
+
+	/* Did the called method return a value? */
+
 	if (return_desc) {
+		/* Are we actually going to use the return value? */
+
 		if (walk_state->return_used) {
-			/*
-			 * Get the return value (if any) from the previous method.
-			 * NULL if no return value
-			 */
+			/* Save the return value from the previous method */
+
 			status = acpi_ds_result_push (return_desc, walk_state);
 			if (ACPI_FAILURE (status)) {
 				acpi_ut_remove_reference (return_desc);
 				return_ACPI_STATUS (status);
 			}
+
+			/*
+			 * Save as THIS method's return value in case it is returned
+			 * immediately to yet another method
+			 */
+			walk_state->return_desc = return_desc;
 		}
 		else {
 			/*
@@ -441,11 +456,6 @@
 			acpi_ut_remove_reference (return_desc);
 		}
 	}
-
-	ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
-		"Method=%p Return=%p return_used?=%X res_stack=%p State=%p\n",
-		walk_state->method_call_op, return_desc, walk_state->return_used,
-		walk_state->results, walk_state));
 
 	return_ACPI_STATUS (AE_OK);
 }
diff -Nru a/drivers/acpi/dispatcher/dsutils.c b/drivers/acpi/dispatcher/dsutils.c
--- a/drivers/acpi/dispatcher/dsutils.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/dispatcher/dsutils.c	2004-09-26 10:52:49 -07:00
@@ -60,11 +60,10 @@
  *
  * FUNCTION:    acpi_ds_is_result_used
  *
- * PARAMETERS:  Op
- *              result_obj
- *              walk_state
+ * PARAMETERS:  Op                  - Current Op
+ *              walk_state          - Current State
  *
- * RETURN:      Status
+ * RETURN:      TRUE if result is used, FALSE otherwise
  *
  * DESCRIPTION: Check if a result object will be used by the parent
  *
@@ -89,18 +88,39 @@
 	}
 
 	/*
-	 * If there is no parent, the result can't possibly be used!
-	 * (An executing method typically has no parent, since each
-	 * method is parsed separately)  However, a method that is
-	 * invoked from another method has a parent.
+	 * If there is no parent, we are executing at the method level.
+	 * An executing method typically has no parent, since each method
+	 * is parsed separately.
 	 */
 	if (!op->common.parent) {
+		/*
+		 * If this is the last statement in the method, we know it is not a
+		 * Return() operator (would not come here.) The following code is the
+		 * optional support for a so-called "implicit return". Some AML code
+		 * assumes that the last value of the method is "implicitly" returned
+		 * to the caller. Just save the last result as the return value.
+		 * NOTE: this is optional because the ASL language does not actually
+		 * support this behavior.
+		 */
+		if ((acpi_gbl_enable_interpreter_slack) &&
+			(walk_state->parser_state.aml >= walk_state->parser_state.aml_end)) {
+			ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
+					"Result of [%s] will be implicitly returned\n",
+					acpi_ps_get_opcode_name (op->common.aml_opcode)));
+
+			/* Use the top of the result stack as the implicit return value */
+
+			walk_state->return_desc = walk_state->results->results.obj_desc[0];
+			return_VALUE (TRUE);
+		}
+
+		/* No parent, the return value cannot possibly be used */
+
 		return_VALUE (FALSE);
 	}
 
-	/*
-	 * Get info on the parent.  The root Op is AML_SCOPE
-	 */
+	/* Get info on the parent. The root_op is AML_SCOPE */
+
 	parent_info = acpi_ps_get_opcode_info (op->common.parent->common.aml_opcode);
 	if (parent_info->class == AML_CLASS_UNKNOWN) {
 		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown parent opcode. Op=%p\n", op));
@@ -204,9 +224,9 @@
  *
  * FUNCTION:    acpi_ds_delete_result_if_not_used
  *
- * PARAMETERS:  Op
- *              result_obj
- *              walk_state
+ * PARAMETERS:  Op              - Current parse Op
+ *              result_obj      - Result of the operation
+ *              walk_state      - Current state
  *
  * RETURN:      Status
  *
@@ -338,8 +358,9 @@
  *
  * FUNCTION:    acpi_ds_create_operand
  *
- * PARAMETERS:  walk_state
- *              Arg
+ * PARAMETERS:  walk_state      - Current walk state
+ *              Arg             - Parse object for the argument
+ *              arg_index       - Which argument (zero based)
  *
  * RETURN:      Status
  *
diff -Nru a/drivers/acpi/events/evgpe.c b/drivers/acpi/events/evgpe.c
--- a/drivers/acpi/events/evgpe.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/events/evgpe.c	2004-09-26 10:52:49 -07:00
@@ -102,6 +102,8 @@
  * FUNCTION:    acpi_ev_update_gpe_enable_masks
  *
  * PARAMETERS:  gpe_event_info          - GPE to update
+ *              Type                    - What to do: ACPI_GPE_DISABLE or
+ *                                        ACPI_GPE_ENABLE
  *
  * RETURN:      Status
  *
@@ -166,6 +168,8 @@
  * FUNCTION:    acpi_ev_enable_gpe
  *
  * PARAMETERS:  gpe_event_info          - GPE to enable
+ *              write_to_hardware       - Enable now, or just mark data structs
+ *                                        (WAKE GPEs should be deferred)
  *
  * RETURN:      Status
  *
@@ -707,7 +711,7 @@
 #ifdef ACPI_GPE_NOTIFY_CHECK
 
 /*******************************************************************************
- * NOT USED, PROTOTYPE ONLY AND WILL PROBABLY BE REMOVED
+ * TBD: NOT USED, PROTOTYPE ONLY AND WILL PROBABLY BE REMOVED
  *
  * FUNCTION:    acpi_ev_check_for_wake_only_gpe
  *
diff -Nru a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c
--- a/drivers/acpi/events/evmisc.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/events/evmisc.c	2004-09-26 10:52:49 -07:00
@@ -88,9 +88,10 @@
  *
  * FUNCTION:    acpi_ev_queue_notify_request
  *
- * PARAMETERS:
+ * PARAMETERS:  Node            - NS node for the notified object
+ *              notify_value    - Value from the Notify() request
  *
- * RETURN:      None.
+ * RETURN:      Status
  *
  * DESCRIPTION: Dispatch a device notification event to a previously
  *              installed handler.
@@ -143,9 +144,8 @@
 				notify_value));
 	}
 
-	/*
-	 * Get the notify object attached to the NS Node
-	 */
+	/* Get the notify object attached to the NS Node */
+
 	obj_desc = acpi_ns_get_attached_object (node);
 	if (obj_desc) {
 		/* We have the notify object, Get the right handler */
@@ -193,8 +193,10 @@
 	}
 
 	if (!handler_obj) {
-		/* There is no per-device notify handler for this device */
-
+		/*
+		 * There is no per-device notify handler for this device.
+		 * This may or may not be a problem.
+		 */
 		ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
 			"No notify handler for Notify(%4.4s, %X) node %p\n",
 			acpi_ut_get_node_name (node), notify_value, node));
@@ -208,7 +210,7 @@
  *
  * FUNCTION:    acpi_ev_notify_dispatch
  *
- * PARAMETERS:
+ * PARAMETERS:  Context         - To be passsed to the notify handler
  *
  * RETURN:      None.
  *
@@ -275,6 +277,8 @@
  *
  * FUNCTION:    acpi_ev_global_lock_thread
  *
+ * PARAMETERS:  Context         - From thread interface, not used
+ *
  * RETURN:      None
  *
  * DESCRIPTION: Invoked by SCI interrupt handler upon acquisition of the
@@ -308,7 +312,9 @@
  *
  * FUNCTION:    acpi_ev_global_lock_handler
  *
- * RETURN:      Status
+ * PARAMETERS:  Context         - From thread interface, not used
+ *
+ * RETURN:      ACPI_INTERRUPT_HANDLED or ACPI_INTERRUPT_NOT_HANDLED
  *
  * DESCRIPTION: Invoked directly from the SCI handler when a global lock
  *              release interrupt occurs.  Grab the global lock and queue
@@ -355,6 +361,8 @@
  *
  * FUNCTION:    acpi_ev_init_global_lock_handler
  *
+ * PARAMETERS:  None
+ *
  * RETURN:      Status
  *
  * DESCRIPTION: Install a handler for the global lock release event
@@ -394,6 +402,8 @@
  *
  * FUNCTION:    acpi_ev_acquire_global_lock
  *
+ * PARAMETERS:  Timeout         - Max time to wait for the lock, in millisec.
+ *
  * RETURN:      Status
  *
  * DESCRIPTION: Attempt to gain ownership of the Global Lock.
@@ -460,6 +470,10 @@
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ev_release_global_lock
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      Status
  *
  * DESCRIPTION: Releases ownership of the Global Lock.
  *
diff -Nru a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c
--- a/drivers/acpi/events/evregion.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/events/evregion.c	2004-09-26 10:52:49 -07:00
@@ -180,7 +180,7 @@
  * FUNCTION:    acpi_ev_execute_reg_method
  *
  * PARAMETERS:  region_obj          - Object structure
- *              Function            - On (1) or Off (0)
+ *              Function            - Passed to _REG:  On (1) or Off (0)
  *
  * RETURN:      Status
  *
@@ -232,7 +232,7 @@
 		goto cleanup;
 	}
 
-	/* Set up the parameter objects */
+	/* Setup the parameter objects */
 
 	params[0]->integer.value = region_obj->region.space_id;
 	params[1]->integer.value = function;
@@ -262,7 +262,6 @@
  * FUNCTION:    acpi_ev_address_space_dispatch
  *
  * PARAMETERS:  region_obj          - Internal region object
- *              space_id            - ID of the address space (0-255)
  *              Function            - Read or Write operation
  *              Address             - Where in the space to read or write
  *              bit_width           - Field width in bits (8, 16, 32, or 64)
@@ -425,8 +424,8 @@
  *
  * FUNCTION:    acpi_ev_detach_region
  *
- * PARAMETERS:  region_obj      - Region Object
- *              acpi_ns_is_locked - Namespace Region Already Locked?
+ * PARAMETERS:  region_obj          - Region Object
+ *              acpi_ns_is_locked   - Namespace Region Already Locked?
  *
  * RETURN:      None
  *
@@ -560,9 +559,9 @@
  *
  * FUNCTION:    acpi_ev_attach_region
  *
- * PARAMETERS:  handler_obj     - Handler Object
- *              region_obj      - Region Object
- *              acpi_ns_is_locked - Namespace Region Already Locked?
+ * PARAMETERS:  handler_obj         - Handler Object
+ *              region_obj          - Region Object
+ *              acpi_ns_is_locked   - Namespace Region Already Locked?
  *
  * RETURN:      None
  *
@@ -971,7 +970,7 @@
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Run _REG methods for the Space ID;
+ * DESCRIPTION: Run all _REG methods for the input Space ID;
  *              Note: assumes namespace is locked, or system init time.
  *
  ******************************************************************************/
diff -Nru a/drivers/acpi/events/evrgnini.c b/drivers/acpi/events/evrgnini.c
--- a/drivers/acpi/events/evrgnini.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/events/evrgnini.c	2004-09-26 10:52:49 -07:00
@@ -54,7 +54,7 @@
  *
  * FUNCTION:    acpi_ev_system_memory_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle              - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
@@ -108,7 +108,7 @@
  *
  * FUNCTION:    acpi_ev_io_space_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle              - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
@@ -144,7 +144,7 @@
  *
  * FUNCTION:    acpi_ev_pci_config_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle             - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
@@ -317,7 +317,7 @@
  *
  * FUNCTION:    acpi_ev_pci_bar_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle              - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
@@ -348,7 +348,7 @@
  *
  * FUNCTION:    acpi_ev_cmos_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle              - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
@@ -379,7 +379,7 @@
  *
  * FUNCTION:    acpi_ev_default_region_setup
  *
- * PARAMETERS:  region_obj          - Region we are interested in
+ * PARAMETERS:  Handle              - Region we are interested in
  *              Function            - Start or stop
  *              handler_context     - Address space handler context
  *              region_context      - Region specific context
diff -Nru a/drivers/acpi/events/evxface.c b/drivers/acpi/events/evxface.c
--- a/drivers/acpi/events/evxface.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/events/evxface.c	2004-09-26 10:52:49 -07:00
@@ -359,6 +359,7 @@
  *                                  ACPI_DEVICE_NOTIFY: driver_handler (80-ff)
  *                                  ACPI_ALL_NOTIFY:  both system and device
  *              Handler         - Address of the handler
+ *
  * RETURN:      Status
  *
  * DESCRIPTION: Remove a handler for notifies on an ACPI device
@@ -401,9 +402,8 @@
 		goto unlock_and_exit;
 	}
 
-	/*
-	 * Root Object
-	 */
+	/* Root Object */
+
 	if (device == ACPI_ROOT_OBJECT) {
 		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing notify handler for ROOT object.\n"));
 
@@ -437,9 +437,8 @@
 		}
 	}
 
-	/*
-	 * All Other Objects
-	 */
+	/* All Other Objects */
+
 	else {
 		/* Notifies allowed on this object? */
 
diff -Nru a/drivers/acpi/executer/exfldio.c b/drivers/acpi/executer/exfldio.c
--- a/drivers/acpi/executer/exfldio.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/executer/exfldio.c	2004-09-26 10:52:49 -07:00
@@ -130,7 +130,7 @@
 	if (rgn_desc->region.length < (obj_desc->common_field.base_byte_offset
 			   + field_datum_byte_offset
 			   + obj_desc->common_field.access_byte_width)) {
-		if (acpi_gbl_enable_interpeter_slack) {
+		if (acpi_gbl_enable_interpreter_slack) {
 			/*
 			 * Slack mode only:  We will go ahead and allow access to this
 			 * field if it is within the region length rounded up to the next
@@ -169,40 +169,7 @@
 			field_datum_byte_offset, obj_desc->common_field.access_byte_width,
 			acpi_ut_get_node_name (rgn_desc->region.node), rgn_desc->region.length));
 
-		if (!acpi_strict) {
-			/*
-			 * Allow access to the field if it is within the region size
-			 * rounded up to a multiple of the access byte width.  This
-			 * overcomes "off-by-one" programming errors in the AML often
-			 * found in Toshiba laptops.  These errors were allowed by
-			 * the Microsoft ASL compiler.
-			 */
-			u32 rounded_length = ACPI_ROUND_UP(rgn_desc->region.length,
-									obj_desc->common_field.access_byte_width);
-
-			if (rounded_length < (obj_desc->common_field.base_byte_offset
-						+ field_datum_byte_offset
-						+ obj_desc->common_field.access_byte_width)) {
-				return_ACPI_STATUS (AE_AML_REGION_LIMIT);
-			} else {
-				static int	warn_once = 1;
-				if (warn_once) {
-					// Could also associate a flag with each field, and
-					// warn once for each field.
-					ACPI_REPORT_WARNING((
-						"The ACPI AML in your computer contains errors, "
-						"please nag the manufacturer to correct it.\n"));
-					ACPI_REPORT_WARNING((
-						"Allowing relaxed access to fields; "
-						"turn on CONFIG_ACPI_DEBUG for details.\n"));
-					warn_once = 0;
-				}
-				return_ACPI_STATUS (AE_OK);
-			}
-		}
-		else {
-			return_ACPI_STATUS (AE_AML_REGION_LIMIT);
-		}
+		return_ACPI_STATUS (AE_AML_REGION_LIMIT);
 	}
 
 	return_ACPI_STATUS (AE_OK);
diff -Nru a/drivers/acpi/hardware/hwgpe.c b/drivers/acpi/hardware/hwgpe.c
--- a/drivers/acpi/hardware/hwgpe.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/hardware/hwgpe.c	2004-09-26 10:52:49 -07:00
@@ -96,7 +96,7 @@
  *
  * PARAMETERS:  gpe_event_info      - Info block for the GPE to be cleared
  *
- * RETURN:      status_status
+ * RETURN:      Status
  *
  * DESCRIPTION: Clear the status bit for a single GPE.
  *
diff -Nru a/drivers/acpi/hardware/hwregs.c b/drivers/acpi/hardware/hwregs.c
--- a/drivers/acpi/hardware/hwregs.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/hardware/hwregs.c	2004-09-26 10:52:49 -07:00
@@ -249,8 +249,8 @@
  *              return_value    - Value that was read from the register
  *              Flags           - Lock the hardware or not
  *
- * RETURN:      Value is read from specified Register.  Value returned is
- *              normalized to bit0 (is shifted all the way right)
+ * RETURN:      Status and the value read from specified Register.  Value
+ *              returned is normalized to bit0 (is shifted all the way right)
  *
  * DESCRIPTION: ACPI bit_register read function.
  *
@@ -284,6 +284,8 @@
 		}
 	}
 
+	/* Read from the register */
+
 	status = acpi_hw_register_read (ACPI_MTX_DO_NOT_LOCK,
 			  bit_reg_info->parent_register, &register_value);
 
@@ -313,10 +315,10 @@
  *
  * PARAMETERS:  register_id     - ID of ACPI bit_register to access
  *              Value           - (only used on write) value to write to the
- *                                Register, NOT pre-normalized to the bit pos.
+ *                                Register, NOT pre-normalized to the bit pos
  *              Flags           - Lock the hardware or not
  *
- * RETURN:      None
+ * RETURN:      Status
  *
  * DESCRIPTION: ACPI Bit Register write function.
  *
@@ -461,10 +463,11 @@
  *
  * FUNCTION:    acpi_hw_register_read
  *
- * PARAMETERS:  use_lock               - Mutex hw access.
- *              register_id            - register_iD + Offset.
+ * PARAMETERS:  use_lock            - Mutex hw access
+ *              register_id         - register_iD + Offset
+ *              return_value        - Value that was read from the register
  *
- * RETURN:      Value read or written.
+ * RETURN:      Status and the value read.
  *
  * DESCRIPTION: Acpi register read function.  Registers are read at the
  *              given offset.
@@ -572,10 +575,11 @@
  *
  * FUNCTION:    acpi_hw_register_write
  *
- * PARAMETERS:  use_lock               - Mutex hw access.
- *              register_id            - register_iD + Offset.
+ * PARAMETERS:  use_lock            - Mutex hw access
+ *              register_id         - register_iD + Offset
+ *              Value               - The value to write
  *
- * RETURN:      Value read or written.
+ * RETURN:      Status
  *
  * DESCRIPTION: Acpi register Write function.  Registers are written at the
  *              given offset.
@@ -691,11 +695,11 @@
  *
  * PARAMETERS:  Width               - 8, 16, or 32
  *              Value               - Where the value is returned
- *              Register            - GAS register structure
+ *              Reg                 - GAS register structure
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Read from either memory, IO, or PCI config space.
+ * DESCRIPTION: Read from either memory or IO space.
  *
  ******************************************************************************/
 
@@ -705,8 +709,6 @@
 	u32                             *value,
 	struct acpi_generic_address     *reg)
 {
-	struct acpi_pci_id              pci_id;
-	u16                             pci_register;
 	acpi_status                     status;
 
 
@@ -725,8 +727,8 @@
 	*value = 0;
 
 	/*
-	 * Three address spaces supported:
-	 * Memory, IO, or PCI_Config.
+	 * Two address spaces supported: Memory or IO.
+	 * PCI_Config is not supported here because the GAS struct is insufficient
 	 */
 	switch (reg->address_space_id) {
 	case ACPI_ADR_SPACE_SYSTEM_MEMORY:
@@ -744,19 +746,6 @@
 		break;
 
 
-	case ACPI_ADR_SPACE_PCI_CONFIG:
-
-		pci_id.segment = 0;
-		pci_id.bus     = 0;
-		pci_id.device  = ACPI_PCI_DEVICE (reg->address);
-		pci_id.function = ACPI_PCI_FUNCTION (reg->address);
-		pci_register   = (u16) ACPI_PCI_REGISTER (reg->address);
-
-		status = acpi_os_read_pci_configuration (&pci_id, pci_register,
-				 value, width);
-		break;
-
-
 	default:
 		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
 			"Unsupported address space: %X\n", reg->address_space_id));
@@ -778,11 +767,11 @@
  *
  * PARAMETERS:  Width               - 8, 16, or 32
  *              Value               - To be written
- *              Register            - GAS register structure
+ *              Reg                 - GAS register structure
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Write to either memory, IO, or PCI config space.
+ * DESCRIPTION: Write to either memory or IO space.
  *
  ******************************************************************************/
 
@@ -792,8 +781,6 @@
 	u32                             value,
 	struct acpi_generic_address     *reg)
 {
-	struct acpi_pci_id              pci_id;
-	u16                             pci_register;
 	acpi_status                     status;
 
 
@@ -811,8 +798,8 @@
 	}
 
 	/*
-	 * Three address spaces supported:
-	 * Memory, IO, or PCI_Config.
+	 * Two address spaces supported: Memory or IO.
+	 * PCI_Config is not supported here because the GAS struct is insufficient
 	 */
 	switch (reg->address_space_id) {
 	case ACPI_ADR_SPACE_SYSTEM_MEMORY:
@@ -827,19 +814,6 @@
 
 		status = acpi_os_write_port ((acpi_io_address) reg->address,
 				 value, width);
-		break;
-
-
-	case ACPI_ADR_SPACE_PCI_CONFIG:
-
-		pci_id.segment = 0;
-		pci_id.bus     = 0;
-		pci_id.device  = ACPI_PCI_DEVICE (reg->address);
-		pci_id.function = ACPI_PCI_FUNCTION (reg->address);
-		pci_register   = (u16) ACPI_PCI_REGISTER (reg->address);
-
-		status = acpi_os_write_pci_configuration (&pci_id, pci_register,
-				 (acpi_integer) value, width);
 		break;
 
 
diff -Nru a/drivers/acpi/hardware/hwtimer.c b/drivers/acpi/hardware/hwtimer.c
--- a/drivers/acpi/hardware/hwtimer.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/hardware/hwtimer.c	2004-09-26 10:52:49 -07:00
@@ -52,11 +52,11 @@
  *
  * FUNCTION:    acpi_get_timer_resolution
  *
- * PARAMETERS:  none
+ * PARAMETERS:  Resolution          - Where the resolution is returned
  *
- * RETURN:      Number of bits of resolution in the PM Timer (24 or 32).
+ * RETURN:      Status and timer resolution
  *
- * DESCRIPTION: Obtains resolution of the ACPI PM Timer.
+ * DESCRIPTION: Obtains resolution of the ACPI PM Timer (24 or 32 bits).
  *
  ******************************************************************************/
 
@@ -86,11 +86,11 @@
  *
  * FUNCTION:    acpi_get_timer
  *
- * PARAMETERS:  none
+ * PARAMETERS:  Ticks               - Where the timer value is returned
  *
- * RETURN:      Current value of the ACPI PM Timer (in ticks).
+ * RETURN:      Status and current ticks
  *
- * DESCRIPTION: Obtains current value of ACPI PM Timer.
+ * DESCRIPTION: Obtains current value of ACPI PM Timer (in ticks).
  *
  ******************************************************************************/
 
@@ -118,11 +118,11 @@
  *
  * FUNCTION:    acpi_get_timer_duration
  *
- * PARAMETERS:  start_ticks
- *              end_ticks
- *              time_elapsed
+ * PARAMETERS:  start_ticks         - Starting timestamp
+ *              end_ticks           - End timestamp
+ *              time_elapsed        - Where the elapsed time is returned
  *
- * RETURN:      time_elapsed
+ * RETURN:      Status and time_elapsed
  *
  * DESCRIPTION: Computes the time elapsed (in microseconds) between two
  *              PM Timer time stamps, taking into account the possibility of
@@ -136,7 +136,7 @@
  *              Note that this function accommodates only a single timer
  *              rollover.  Thus for 24-bit timers, this function should only
  *              be used for calculating durations less than ~4.6 seconds
- *              (~20 minutes for 32-bit timers) -- calculations below
+ *              (~20 minutes for 32-bit timers) -- calculations below:
  *
  *              2**24 Ticks / 3,600,000 Ticks/Sec = 4.66 sec
  *              2**32 Ticks / 3,600,000 Ticks/Sec = 1193 sec or 19.88 minutes
@@ -164,7 +164,6 @@
 
 	/*
 	 * Compute Tick Delta:
-	 * -------------------
 	 * Handle (max one) timer rollovers on 24- versus 32-bit timers.
 	 */
 	if (start_ticks < end_ticks) {
@@ -188,10 +187,7 @@
 	}
 
 	/*
-	 * Compute Duration:
-	 * -----------------
-	 *
-	 * Requires a 64-bit divide:
+	 * Compute Duration (Requires a 64-bit divide):
 	 *
 	 * time_elapsed = (delta_ticks * 1000000) / PM_TIMER_FREQUENCY;
 	 */
diff -Nru a/drivers/acpi/numa.c b/drivers/acpi/numa.c
--- a/drivers/acpi/numa.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/numa.c	2004-09-26 10:52:49 -07:00
@@ -51,6 +51,7 @@
 	switch (header->type) {
 
 	case ACPI_SRAT_PROCESSOR_AFFINITY:
+#ifdef ACPI_DEBUG_OUTPUT
 	{
 		struct acpi_table_processor_affinity *p =
 			(struct acpi_table_processor_affinity*) header;
@@ -58,9 +59,11 @@
 		       p->apic_id, p->lsapic_eid, p->proximity_domain,
 		       p->flags.enabled?"enabled":"disabled"));
 	}
+#endif /* ACPI_DEBUG_OUTPUT */
 		break;
 
 	case ACPI_SRAT_MEMORY_AFFINITY:
+#ifdef ACPI_DEBUG_OUTPUT
 	{
 		struct acpi_table_memory_affinity *p =
 			(struct acpi_table_memory_affinity*) header;
@@ -70,6 +73,7 @@
 		       p->flags.enabled ? "enabled" : "disabled",
 		       p->flags.hot_pluggable ? " hot-pluggable" : ""));
 	}
+#endif /* ACPI_DEBUG_OUTPUT */
 		break;
 
 	default:
@@ -94,8 +98,6 @@
 	/* downcast just for %llu vs %lu for i386/ia64  */
 	localities = (u32) slit->localities;
 
-	printk(KERN_INFO PREFIX "SLIT localities %ux%u\n", localities, localities);
-
 	acpi_numa_slit_init(slit);
 
 	return 0;
@@ -103,7 +105,9 @@
 
 
 static int __init
-acpi_parse_processor_affinity (acpi_table_entry_header *header)
+acpi_parse_processor_affinity (
+	acpi_table_entry_header *header,
+	const unsigned long end)
 {
 	struct acpi_table_processor_affinity *processor_affinity;
 
@@ -121,7 +125,9 @@
 
 
 static int __init
-acpi_parse_memory_affinity (acpi_table_entry_header *header)
+acpi_parse_memory_affinity (
+	acpi_table_entry_header *header,
+	const unsigned long end)
 {
 	struct acpi_table_memory_affinity *memory_affinity;
 
@@ -147,8 +153,6 @@
 		return -EINVAL;
 
 	srat = (struct acpi_table_srat *) __va(phys_addr);
-
-	printk(KERN_INFO PREFIX "SRAT revision %d\n", srat->table_revision);
 
 	return 0;
 }
diff -Nru a/drivers/acpi/osl.c b/drivers/acpi/osl.c
--- a/drivers/acpi/osl.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/osl.c	2004-09-26 10:52:49 -07:00
@@ -55,6 +55,9 @@
     void		    *context;
 };
 
+#ifdef CONFIG_ACPI_CUSTOM_DSDT
+#include CONFIG_ACPI_CUSTOM_DSDT_FILE
+#endif
 
 #ifdef ENABLE_DEBUGGER
 #include <linux/kdb.h>
@@ -241,7 +244,14 @@
 	if (!existing_table || !new_table)
 		return AE_BAD_PARAMETER;
 
+#ifdef CONFIG_ACPI_CUSTOM_DSDT
+	if (strncmp(existing_table->signature, "DSDT", 4) == 0)
+		*new_table = (struct acpi_table_header*)AmlCode;
+	else
+		*new_table = NULL;
+#else
 	*new_table = NULL;
+#endif
 	return AE_OK;
 }
 
diff -Nru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
--- a/drivers/acpi/pci_link.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/pci_link.c	2004-09-26 10:52:49 -07:00
@@ -448,7 +448,7 @@
 #define PIRQ_PENALTY_ISA_USED		(16*16*16*16*16)
 #define PIRQ_PENALTY_ISA_ALWAYS		(16*16*16*16*16*16)
 
-static int __initdata acpi_irq_penalty[ACPI_MAX_IRQS] = {
+static int acpi_irq_penalty[ACPI_MAX_IRQS] = {
 	PIRQ_PENALTY_ISA_ALWAYS,	/* IRQ0 timer */
 	PIRQ_PENALTY_ISA_ALWAYS,	/* IRQ1 keyboard */
 	PIRQ_PENALTY_ISA_ALWAYS,	/* IRQ2 cascade */
@@ -468,7 +468,7 @@
 			/* >IRQ15 */
 };
 
-int
+int __init
 acpi_irq_penalty_init(void)
 {
 	struct list_head	*node = NULL;
diff -Nru a/drivers/acpi/tables.c b/drivers/acpi/tables.c
--- a/drivers/acpi/tables.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/tables.c	2004-09-26 10:52:49 -07:00
@@ -101,7 +101,7 @@
 	else
 		name = header->signature;
 
-	printk(KERN_INFO PREFIX "%.4s (v%3.3d %6.6s %8.8s 0x%08x %.4s 0x%08x) @ 0x%p\n",
+	printk(KERN_DEBUG PREFIX "%.4s (v%3.3d %6.6s %8.8s 0x%08x %.4s 0x%08x) @ 0x%p\n",
 		name, header->revision, header->oem_id,
 		header->oem_table_id, header->oem_revision,
 		header->asl_compiler_id, header->asl_compiler_revision,
@@ -587,7 +587,7 @@
 		return -ENODEV;
 	}
 
-	printk(KERN_INFO PREFIX "RSDP (v%3.3d %6.6s                                    ) @ 0x%p\n",
+	printk(KERN_DEBUG PREFIX "RSDP (v%3.3d %6.6s                                ) @ 0x%p\n",
 		rsdp->revision, rsdp->oem_id, (void *) rsdp_phys);
 
 	if (rsdp->revision < 2)
diff -Nru a/drivers/acpi/utilities/utglobal.c b/drivers/acpi/utilities/utglobal.c
--- a/drivers/acpi/utilities/utglobal.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/acpi/utilities/utglobal.c	2004-09-26 10:52:49 -07:00
@@ -142,16 +142,11 @@
  */
 
 /* Debug switch - level and trace mask */
-
-#ifdef ACPI_DEBUG_OUTPUT
-u32                                 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
-#else
-u32                                 acpi_dbg_level = ACPI_NORMAL_DEFAULT;
-#endif
+u32                                 acpi_dbg_level = 0;
 
 /* Debug switch - layer (component) mask */
 
-u32                                 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT;
+u32                                 acpi_dbg_layer = 0;
 u32                                 acpi_gbl_nesting_level = 0;
 
 
diff -Nru a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
--- a/drivers/char/ipmi/ipmi_si_intf.c	2004-09-26 10:52:49 -07:00
+++ b/drivers/char/ipmi/ipmi_si_intf.c	2004-09-26 10:52:49 -07:00
@@ -1331,7 +1331,7 @@
 static int acpi_failure = 0;
 
 /* For GPE-type interrupts. */
-u32 ipmi_acpi_gpe(void *context)
+void ipmi_acpi_gpe(void *context)
 {
 	struct smi_info *smi_info = context;
 	unsigned long   flags;
@@ -1355,8 +1355,6 @@
 	smi_event_handler(smi_info, 0);
  out:
 	spin_unlock_irqrestore(&(smi_info->si_lock), flags);
-
-	return ACPI_INTERRUPT_HANDLED;
 }
 
 static int acpi_gpe_irq_setup(struct smi_info *info)
diff -Nru a/include/acpi/acconfig.h b/include/acpi/acconfig.h
--- a/include/acpi/acconfig.h	2004-09-26 10:52:49 -07:00
+++ b/include/acpi/acconfig.h	2004-09-26 10:52:49 -07:00
@@ -64,7 +64,7 @@
 
 /* Version string */
 
-#define ACPI_CA_VERSION                 0x20040715
+#define ACPI_CA_VERSION                 0x20040816
 
 /*
  * OS name, used for the _OS object.  The _OS object is essentially obsolete,
diff -Nru a/include/acpi/acexcep.h b/include/acpi/acexcep.h
--- a/include/acpi/acexcep.h	2004-09-26 10:52:49 -07:00
+++ b/include/acpi/acexcep.h	2004-09-26 10:52:49 -07:00
@@ -166,7 +166,7 @@
 #define AE_AML_CIRCULAR_REFERENCE       (acpi_status) (0x0020 | AE_CODE_AML)
 #define AE_AML_BAD_RESOURCE_LENGTH      (acpi_status) (0x0021 | AE_CODE_AML)
 
-#define AE_CODE_AML_MAX                 0x0020
+#define AE_CODE_AML_MAX                 0x0021
 
 /*
  * Internal exceptions used for control
diff -Nru a/include/acpi/acglobal.h b/include/acpi/acglobal.h
--- a/include/acpi/acglobal.h	2004-09-26 10:52:49 -07:00
+++ b/include/acpi/acglobal.h	2004-09-26 10:52:49 -07:00
@@ -94,7 +94,7 @@
  * interpreter strictly follows the ACPI specification.  Setting to TRUE
  * allows the interpreter to forgive certain bad AML constructs.
  */
-ACPI_EXTERN u8       ACPI_INIT_GLOBAL (acpi_gbl_enable_interpeter_slack, FALSE);
+ACPI_EXTERN u8       ACPI_INIT_GLOBAL (acpi_gbl_enable_interpreter_slack, FALSE);
 
 /*
  * Automatically serialize ALL control methods? Default is FALSE, meaning
diff -Nru a/include/acpi/acmacros.h b/include/acpi/acmacros.h
--- a/include/acpi/acmacros.h	2004-09-26 10:52:49 -07:00
+++ b/include/acpi/acmacros.h	2004-09-26 10:52:49 -07:00
@@ -364,24 +364,6 @@
 
 #define ACPI_IS_OCTAL_DIGIT(d)               (((char)(d) >= '0') && ((char)(d) <= '7'))
 
-/* Macros for GAS addressing */
-
-#if ACPI_MACHINE_WIDTH != 16
-
-#define ACPI_PCI_DEVICE(a)              (u16) ((ACPI_HIDWORD ((a))) & 0x0000FFFF)
-#define ACPI_PCI_FUNCTION(a)            (u16) ((ACPI_LODWORD ((a))) >> 16)
-#define ACPI_PCI_REGISTER(a)            (u16) ((ACPI_LODWORD ((a))) & 0x0000FFFF)
-
-#else
-
-/* No support for GAS and PCI IDs in 16-bit mode  */
-
-#define ACPI_PCI_FUNCTION(a)            (u16) ((a) & 0xFFFF0000)
-#define ACPI_PCI_DEVICE(a)              (u16) ((a) & 0x0000FFFF)
-#define ACPI_PCI_REGISTER(a)            (u16) ((a) & 0x0000FFFF)
-
-#endif
-
 
 /* Bitfields within ACPI registers */
 
diff -Nru a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
--- a/include/acpi/acpi_drivers.h	2004-09-26 10:52:49 -07:00
+++ b/include/acpi/acpi_drivers.h	2004-09-26 10:52:49 -07:00
@@ -106,59 +106,4 @@
 int acpi_processor_set_thermal_limit(acpi_handle handle, int type);
 
 
-/* --------------------------------------------------------------------------
-                                Debug Support
-   -------------------------------------------------------------------------- */
-
-#define ACPI_DEBUG_RESTORE	0
-#define ACPI_DEBUG_LOW		1
-#define ACPI_DEBUG_MEDIUM	2
-#define ACPI_DEBUG_HIGH		3
-#define ACPI_DEBUG_DRIVERS	4
-
-extern u32 acpi_dbg_level;
-extern u32 acpi_dbg_layer;
-
-static inline void
-acpi_set_debug (
-	u32			flag)
-{
-	static u32		layer_save;
-	static u32		level_save;
-
-	switch (flag) {
-	case ACPI_DEBUG_RESTORE:
-		acpi_dbg_layer = layer_save;
-		acpi_dbg_level = level_save;
-		break;
-	case ACPI_DEBUG_LOW:
-	case ACPI_DEBUG_MEDIUM:
-	case ACPI_DEBUG_HIGH:
-	case ACPI_DEBUG_DRIVERS:
-		layer_save = acpi_dbg_layer;
-		level_save = acpi_dbg_level;
-		break;
-	}
-
-	switch (flag) {
-	case ACPI_DEBUG_LOW:
-		acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
-		acpi_dbg_level = ACPI_DEBUG_DEFAULT;
-		break;
-	case ACPI_DEBUG_MEDIUM:
-		acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
-		acpi_dbg_level = ACPI_LV_FUNCTIONS | ACPI_LV_ALL_EXCEPTIONS;
-		break;
-	case ACPI_DEBUG_HIGH:
-		acpi_dbg_layer = 0xFFFFFFFF;
-		acpi_dbg_level = 0xFFFFFFFF;
-		break;
-	case ACPI_DEBUG_DRIVERS:
-		acpi_dbg_layer = ACPI_ALL_DRIVERS;
-		acpi_dbg_level = 0xFFFFFFFF;
-		break;
-	}
-}
-
-
 #endif /*__ACPI_DRIVERS_H__*/
diff -Nru a/include/linux/acpi.h b/include/linux/acpi.h
--- a/include/linux/acpi.h	2004-09-26 10:52:49 -07:00
+++ b/include/linux/acpi.h	2004-09-26 10:52:49 -07:00
@@ -453,14 +453,15 @@
 
 #ifdef CONFIG_ACPI_EC
 
-int ec_read(u8 addr, u8 *val);
-int ec_write(u8 addr, u8 val);
+extern int ec_read(u8 addr, u8 *val);
+extern int ec_write(u8 addr, u8 val);
 
 #endif /*CONFIG_ACPI_EC*/
 
 #ifdef CONFIG_ACPI_INTERPRETER
 
-int acpi_blacklisted(void);
+extern int acpi_blacklisted(void);
+extern void acpi_bios_year(char *s);
 
 #else /*!CONFIG_ACPI_INTERPRETER*/