From 3948ec9406f9a60a43d63f23f6f5284db6529b9c Mon Sep 17 00:00:00 2001 From: John Keller Date: Fri, 22 Dec 2006 11:50:04 -0600 Subject: [PATCH 1/7] ACPI: Altix: ACPI _PRT support Provide ACPI _PRT support for SN Altix systems. The SN Altix platform does not conform to the IOSAPIC IRQ routing model, so a new acpi_irq_model (ACPI_IRQ_MODEL_PLATFORM) has been defined. The SN platform specific code sets acpi_irq_model to this new value, and keys off of it in acpi_register_gsi() to avoid the iosapic code path. Signed-off-by: John Keller Signed-off-by: Len Brown --- arch/ia64/kernel/acpi.c | 3 +++ arch/ia64/sn/kernel/io_acpi_init.c | 3 +++ drivers/acpi/bus.c | 3 +++ include/linux/acpi.h | 1 + 4 files changed, 10 insertions(+) diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 73ef4a85b861..ef2fe474f107 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c @@ -590,6 +590,9 @@ void __init acpi_numa_arch_fixup(void) */ int acpi_register_gsi(u32 gsi, int triggering, int polarity) { + if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) + return gsi; + if (has_8259 && gsi < 16) return isa_irq_to_vector(gsi); diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c index 99d7f278612a..cb96b4ea7df6 100644 --- a/arch/ia64/sn/kernel/io_acpi_init.c +++ b/arch/ia64/sn/kernel/io_acpi_init.c @@ -223,6 +223,9 @@ sn_io_acpi_init(void) u64 result; s64 status; + /* SN Altix does not follow the IOSAPIC IRQ routing model */ + acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; + acpi_bus_register_driver(&acpi_sn_hubdev_driver); status = sal_ioif_init(&result); if (status || result) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 279c4bac92e5..766332e45592 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -561,6 +561,9 @@ static int __init acpi_bus_init_irq(void) case ACPI_IRQ_MODEL_IOSAPIC: message = "IOSAPIC"; break; + case ACPI_IRQ_MODEL_PLATFORM: + message = "platform specific model"; + break; default: printk(KERN_WARNING PREFIX "Unknown interrupt routing model\n"); return -ENODEV; diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 2b0c955590fe..91f1f2363870 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -47,6 +47,7 @@ enum acpi_irq_model_id { ACPI_IRQ_MODEL_PIC = 0, ACPI_IRQ_MODEL_IOAPIC, ACPI_IRQ_MODEL_IOSAPIC, + ACPI_IRQ_MODEL_PLATFORM, ACPI_IRQ_MODEL_COUNT }; From 723fe2ca82d1ffc80c9d53035babf011f84c65d4 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Sat, 6 Jan 2007 00:02:07 -0500 Subject: [PATCH 2/7] ACPI: ec: enable printk on cmdline use if somebody uses "ec_intr=", lets be sure to capture that in the dmesg even in the non-debug case. Signed-off-by: Len Brown --- drivers/acpi/ec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 4144d5dd442e..cbdf031f3c09 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -1016,8 +1016,8 @@ static int __init acpi_ec_set_intr_mode(char *str) acpi_ec_mode = EC_POLL; } acpi_ec_driver.ops.add = acpi_ec_add; - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "EC %s mode.\n", - intr ? "interrupt" : "polling")); + printk(KERN_NOTICE PREFIX "%s mode.\n", + intr ? "interrupt" : "polling"); return 1; } From 5d65131fa8d333d4575e7dfe5a05d3a9fa4a687e Mon Sep 17 00:00:00 2001 From: Venkatesh Pallipadi Date: Wed, 10 Jan 2007 23:08:38 -0500 Subject: [PATCH 3/7] ACPI: rename cstate_entry_s to cstate_entry style change only. Signed-off-by: Len Brown --- arch/i386/kernel/acpi/cstate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/i386/kernel/acpi/cstate.c b/arch/i386/kernel/acpi/cstate.c index 12e937c1ce4b..2d39f55d29a8 100644 --- a/arch/i386/kernel/acpi/cstate.c +++ b/arch/i386/kernel/acpi/cstate.c @@ -47,13 +47,13 @@ EXPORT_SYMBOL(acpi_processor_power_init_bm_check); /* The code below handles cstate entry with monitor-mwait pair on Intel*/ -struct cstate_entry_s { +struct cstate_entry { struct { unsigned int eax; unsigned int ecx; } states[ACPI_PROCESSOR_MAX_POWER]; }; -static struct cstate_entry_s *cpu_cstate_entry; /* per CPU ptr */ +static struct cstate_entry *cpu_cstate_entry; /* per CPU ptr */ static short mwait_supported[ACPI_PROCESSOR_MAX_POWER]; @@ -71,7 +71,7 @@ static short mwait_supported[ACPI_PROCESSOR_MAX_POWER]; int acpi_processor_ffh_cstate_probe(unsigned int cpu, struct acpi_processor_cx *cx, struct acpi_power_register *reg) { - struct cstate_entry_s *percpu_entry; + struct cstate_entry *percpu_entry; struct cpuinfo_x86 *c = cpu_data + cpu; cpumask_t saved_mask; @@ -136,7 +136,7 @@ EXPORT_SYMBOL_GPL(acpi_processor_ffh_cstate_probe); void acpi_processor_ffh_cstate_enter(struct acpi_processor_cx *cx) { unsigned int cpu = smp_processor_id(); - struct cstate_entry_s *percpu_entry; + struct cstate_entry *percpu_entry; percpu_entry = per_cpu_ptr(cpu_cstate_entry, cpu); mwait_idle_with_hints(percpu_entry->states[cx->index].eax, @@ -150,7 +150,7 @@ static int __init ffh_cstate_init(void) if (c->x86_vendor != X86_VENDOR_INTEL) return -1; - cpu_cstate_entry = alloc_percpu(struct cstate_entry_s); + cpu_cstate_entry = alloc_percpu(struct cstate_entry); return 0; } From d6637b28ffb38f207015c990e481fde5bba233d7 Mon Sep 17 00:00:00 2001 From: Venkatesh Pallipadi Date: Wed, 10 Jan 2007 23:16:36 -0500 Subject: [PATCH 4/7] ACPI: delete two spurious ACPI messages ACPI: Getting cpuindex for acpiid 0x4 acpi_processor-0742 [00] processor_preregister_: Error while parsing _PSD domain information. Assuming no coordination http://bugzilla.kernel.org/show_bug.cgi?id=7286 Signed-off-by: Venkatesh Pallipadi Signed-off-by: Len Brown --- drivers/acpi/processor_core.c | 3 --- drivers/acpi/processor_perflib.c | 4 ---- 2 files changed, 7 deletions(-) diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 25718fed39f1..5f9496d59ed6 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c @@ -476,9 +476,6 @@ static int acpi_processor_get_info(struct acpi_processor *pr) if (cpu_index == -1) { if (ACPI_FAILURE (acpi_processor_hotadd_init(pr->handle, &pr->id))) { - printk(KERN_ERR PREFIX - "Getting cpuindex for acpiid 0x%x\n", - pr->acpi_id); return -ENODEV; } } diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 0e60382714bb..5207f9e4b443 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c @@ -736,10 +736,6 @@ int acpi_processor_preregister_performance( } err_ret: - if (retval) { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error while parsing _PSD domain information. Assuming no coordination\n")); - } - for_each_possible_cpu(i) { pr = processors[i]; if (!pr || !pr->performance) From 1bb67c2582f4271488721001a707124fd0af347e Mon Sep 17 00:00:00 2001 From: Len Brown Date: Thu, 11 Jan 2007 01:49:44 -0500 Subject: [PATCH 5/7] ACPI: schedule obsolete features for deletion Signed-off-by: Len Brown --- Documentation/feature-removal-schedule.txt | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 30f3c8c9c12a..2ee16b49e10e 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt @@ -256,3 +256,48 @@ Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are Who: Venkatesh Pallipadi --------------------------- + +What: ACPI hotkey driver (CONFIG_ACPI_HOTKEY) +When: 2.6.21 +Why: hotkey.c was an attempt to consolidate multiple drivers that use + ACPI to implement hotkeys. However, hotkeys are not documented + in the ACPI specification, so the drivers used undocumented + vendor-specific hooks and turned out to be more different than + the same. + + Further, the keys and the features supplied by each platform + are different, so there will always be a need for + platform-specific drivers. + + So the new plan is to delete hotkey.c and instead, work on the + platform specific drivers to try to make them look the same + to the user when they supply the same features. + + hotkey.c has always depended on CONFIG_EXPERIMENTAL + +Who: Len Brown + +--------------------------- + +What: /sys/firmware/acpi/namespace +When: 2.6.21 +Why: The ACPI namespace is effectively the symbol list for + the BIOS. The device names are completely arbitrary + and have no place being exposed to user-space. + + For those interested in the BIOS ACPI namespace, + the BIOS can be extracted and disassembled with acpidump + and iasl as documented in the pmtools package here: + http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/utils + +Who: Len Brown + +--------------------------- + +What: /proc/acpi/button +When: August 2007 +Why: /proc/acpi/button has been replaced by events to the input layer + since 2.6.20. +Who: Len Brown + +--------------------------- From 8b59a454c421542a51c391f542c80d165f7547a0 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Mon, 8 Jan 2007 19:03:28 -0500 Subject: [PATCH 6/7] ACPI: update MAINTAINERS s/Maintained/Supported/ and document some sub-maintainers for ACPI drivers. Signed-off-by: Len Brown --- MAINTAINERS | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 0f6d13bd4688..d1f454c6dbe4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -207,16 +207,45 @@ S: Supported ACPI P: Len Brown M: len.brown@intel.com +M: lenb@kernel.org L: linux-acpi@vger.kernel.org W: http://acpi.sourceforge.net/ T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git -S: Maintained +S: Supported + +ACPI BATTERY DRIVERS +P: Vladimir P. Lebedev +M: vladimir.p.lebedev@intel.com +L: linux-acpi@vger.kernel.org +W: http://acpi.sourceforge.net/ +S: Supported + +ACPI EC DRIVER +P: Alexey Starikovskiy +M: alexey.y.starikovskiy@linux.intel.com +L: linux-acpi@vger.kernel.org +W: http://acpi.sourceforge.net/ +S: Supported + +ACPI FAN DRIVER +P: Konstantin A. Karasyov +M: konstantin.a.karasyov@intel.com +L: linux-acpi@vger.kernel.org +W: http://acpi.sourceforge.net/ +S: Supported ACPI PCI HOTPLUG DRIVER P: Kristen Carlson Accardi M: kristen.c.accardi@intel.com L: pcihpd-discuss@lists.sourceforge.net -S: Maintained +S: Supported + +ACPI THERMAL DRIVER +P: Konstantin A. Karasyov +M: konstantin.a.karasyov@intel.com +L: linux-acpi@vger.kernel.org +W: http://acpi.sourceforge.net/ +S: Supported AD1816 SOUND DRIVER P: Thorsten Knabe @@ -1071,7 +1100,7 @@ DOCKING STATION DRIVER P: Kristen Carlson Accardi M: kristen.c.accardi@intel.com L: linux-acpi@vger.kernel.org -S: Maintained +S: Supported DOUBLETALK DRIVER P: James R. Van Zandt @@ -2521,7 +2550,7 @@ PCIE HOTPLUG DRIVER P: Kristen Carlson Accardi M: kristen.c.accardi@intel.com L: pcihpd-discuss@lists.sourceforge.net -S: Maintained +S: Supported PCMCIA SUBSYSTEM P: Linux PCMCIA Team @@ -3015,7 +3044,7 @@ SHPC HOTPLUG DRIVER P: Kristen Carlson Accardi M: kristen.c.accardi@intel.com L: pcihpd-discuss@lists.sourceforge.net -S: Maintained +S: Supported SECURE DIGITAL HOST CONTROLLER INTERFACE DRIVER P: Pierre Ossman From d2fadbbbf0e42b842731da71864f222e7f119461 Mon Sep 17 00:00:00 2001 From: Henrique de Moraes Holschuh Date: Thu, 11 Jan 2007 02:58:15 -0500 Subject: [PATCH 7/7] Revert "ACPI: ibm-acpi: make non-generic bay support optional" This reverts commit 2df910b4c3edcce9a0c12394db6f5f4a6e69c712. ACPI_BAY has not been merged into mainline yet, so the changes to ibm-acpi related Kconfig entries that depend on ACPI_BAY were permanently disabling ibm-acpi bay support. This is a serious regression for ThinkPad users. Signed-off-by: Henrique de Moraes Holschuh Signed-off-by: Len Brown --- drivers/acpi/Kconfig | 11 ----------- drivers/acpi/ibm_acpi.c | 13 +------------ 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 1639998e4d27..f4f000abc4e9 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -225,17 +225,6 @@ config ACPI_IBM_DOCK If you are not sure, say N here. -config ACPI_IBM_BAY - bool "Legacy Removable Bay Support" - depends on ACPI_IBM - depends on ACPI_BAY=n - default n - ---help--- - Allows the ibm_acpi driver to handle removable bays. - This support is obsoleted by CONFIG_ACPI_BAY. - - If you are not sure, say N here. - config ACPI_TOSHIBA tristate "Toshiba Laptop Extras" depends on X86 diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c index b72d13d11a27..c6144ca66638 100644 --- a/drivers/acpi/ibm_acpi.c +++ b/drivers/acpi/ibm_acpi.c @@ -157,7 +157,6 @@ IBM_HANDLE(dock, root, "\\_SB.GDCK", /* X30, X31, X40 */ "\\_SB.PCI.ISA.SLCE", /* 570 */ ); /* A21e,G4x,R30,R31,R32,R40,R40e,R50e */ #endif -#ifdef CONFIG_ACPI_IBM_BAY IBM_HANDLE(bay, root, "\\_SB.PCI.IDE.SECN.MAST", /* 570 */ "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */ "\\_SB.PCI0.SATA.SCND.MSTR", /* T60, X60, Z60 */ @@ -175,7 +174,6 @@ IBM_HANDLE(bay2, root, "\\_SB.PCI0.IDE0.PRIM.SLAV", /* A3x, R32 */ IBM_HANDLE(bay2_ej, bay2, "_EJ3", /* 600e/x, 770e, A3x */ "_EJ0", /* 770x */ ); /* all others */ -#endif /* don't list other alternatives as we install a notify handler on the 570 */ IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */ @@ -1042,7 +1040,6 @@ static int light_write(char *buf) return 0; } -#if defined(CONFIG_ACPI_IBM_DOCK) || defined(CONFIG_ACPI_IBM_BAY) static int _sta(acpi_handle handle) { int status; @@ -1052,7 +1049,7 @@ static int _sta(acpi_handle handle) return status; } -#endif + #ifdef CONFIG_ACPI_IBM_DOCK #define dock_docked() (_sta(dock_handle) & 1) @@ -1118,7 +1115,6 @@ static void dock_notify(struct ibm_struct *ibm, u32 event) } #endif -#ifdef CONFIG_ACPI_IBM_BAY static int bay_status_supported; static int bay_status2_supported; static int bay_eject_supported; @@ -1194,7 +1190,6 @@ static void bay_notify(struct ibm_struct *ibm, u32 event) { acpi_bus_generate_event(ibm->device, event, 0); } -#endif static int cmos_read(char *p) { @@ -2354,7 +2349,6 @@ static struct ibm_struct ibms[] = { .type = ACPI_SYSTEM_NOTIFY, }, #endif -#ifdef CONFIG_ACPI_IBM_BAY { .name = "bay", .init = bay_init, @@ -2364,7 +2358,6 @@ static struct ibm_struct ibms[] = { .handle = &bay_handle, .type = ACPI_SYSTEM_NOTIFY, }, -#endif { .name = "cmos", .read = cmos_read, @@ -2650,9 +2643,7 @@ IBM_PARAM(light); #ifdef CONFIG_ACPI_IBM_DOCK IBM_PARAM(dock); #endif -#ifdef CONFIG_ACPI_IBM_BAY IBM_PARAM(bay); -#endif IBM_PARAM(cmos); IBM_PARAM(led); IBM_PARAM(beep); @@ -2735,14 +2726,12 @@ static int __init acpi_ibm_init(void) IBM_HANDLE_INIT(dock); #endif IBM_HANDLE_INIT(pci); -#ifdef CONFIG_ACPI_IBM_BAY IBM_HANDLE_INIT(bay); if (bay_handle) IBM_HANDLE_INIT(bay_ej); IBM_HANDLE_INIT(bay2); if (bay2_handle) IBM_HANDLE_INIT(bay2_ej); -#endif IBM_HANDLE_INIT(beep); IBM_HANDLE_INIT(ecrd); IBM_HANDLE_INIT(ecwr);