DMI, move ACPI boot quirk
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest3 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | DMI, move ACPI sleep quirkarch/ arch/ | +26 | 0 replies | |
| 2/3 | DMI, remove central blacklistarch/ | +1 | 0 replies | |
| 3/3 | DMI code spring cleanuparch/ | +70 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 2.6.12-rc4-mm1 0/3] DMI, move ACPI boot quirk
This patch moves ACPI boot quirks out of dmi_scan.c
Signed-off-by Andrey Panin <[email protected]>
arch/i386/kernel/acpi/boot.c | 219 ++++++++++++++++++++++++++++++++++++++++++- arch/i386/kernel/dmi_scan.c | 163 -------------------------------- 2 files changed, 217 insertions(+), 165 deletions(-)
arch/i386/kernel/acpi/boot.c +217 -2
@@ -29,6 +29,7 @@#include <linux/efi.h> #include <linux/irq.h> #include <linux/module.h> +#include <linux/dmi.h> #include <asm/pgtable.h> #include <asm/io_apic.h>
@@ -831,6 +832,218 @@ acpi_process_madt(void)return ; } +extern int acpi_force; + +#ifdef __i386__ + +#ifdef CONFIG_ACPI_PCI +static int __init disable_acpi_irq (struct dmi_system_id *d) +{ +if (!acpi_force) { +printk (KERN_NOTICE "%s detected: force use of acpi=noirq\n" , + d->ident); +acpi_noirq_set (); + } +return 0 ; +} + +static int __init disable_acpi_pci (struct dmi_system_id *d) +{ +if (!acpi_force) { +printk (KERN_NOTICE "%s detected: force use of pci=noacpi\n" , + d->ident); +acpi_disable_pci (); + } +return 0 ; +} +#endif + +static int __init dmi_disable_acpi (struct dmi_system_id *d) +{ +if (!acpi_force) { +printk (KERN_NOTICE "%s detected: acpi off\n" ,d->ident); +disable_acpi (); + }else { +printk (KERN_NOTICE +"Warning: DMI blacklist says broken, but acpi forced\n" ); + } +return 0 ; +} + +/* +* Limit ACPI to CPU enumeration for HT +*/ +static int __init force_acpi_ht (struct dmi_system_id *d) +{ +if (!acpi_force) { +printk (KERN_NOTICE "%s detected: force use of acpi=ht\n" , d->ident); +disable_acpi (); + acpi_ht =1 ; + }else { +printk (KERN_NOTICE +"Warning: acpi=force overrules DMI blacklist: acpi=ht\n" ); + } +return 0 ; +} + +/* +* If your system is blacklisted here, but you find that acpi=force +* works for you, please contact [email protected] +*/ +static struct dmi_system_id __initdata acpi_dmi_table[] = { +/* +* Boxes that need ACPI disabled +*/ + { + .callback = dmi_disable_acpi, + .ident ="IBM Thinkpad" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"IBM" ), +DMI_MATCH (DMI_BOARD_NAME ,"2629H1G" ), + }, + }, + +/* +* Boxes that need acpi=ht +*/ + { + .callback = force_acpi_ht, + .ident ="FSC Primergy T850" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU SIEMENS" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"PRIMERGY T850" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="DELL GX240" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_BOARD_NAME ,"OptiPlex GX240" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="HP VISUALIZE NT Workstation" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"Hewlett-Packard" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"HP VISUALIZE NT Workstation" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="Compaq Workstation W8000" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Compaq" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Workstation W8000" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="ASUS P4B266" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ), +DMI_MATCH (DMI_BOARD_NAME ,"P4B266" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="ASUS P2B-DS" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ), +DMI_MATCH (DMI_BOARD_NAME ,"P2B-DS" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="ASUS CUR-DLS" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ), +DMI_MATCH (DMI_BOARD_NAME ,"CUR-DLS" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="ABIT i440BX-W83977" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ABIT <http://www.abit.com>" ), +DMI_MATCH (DMI_BOARD_NAME ,"i440BX-W83977 (BP6)" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="IBM Bladecenter" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"IBM" ), +DMI_MATCH (DMI_BOARD_NAME ,"IBM eServer BladeCenter HS20" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="IBM eServer xSeries 360" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"IBM" ), +DMI_MATCH (DMI_BOARD_NAME ,"eServer xSeries 360" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="IBM eserver xSeries 330" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"IBM" ), +DMI_MATCH (DMI_BOARD_NAME ,"eserver xSeries 330" ), + }, + }, + { + .callback = force_acpi_ht, + .ident ="IBM eserver xSeries 440" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"IBM" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"eserver xSeries 440" ), + }, + }, + +#ifdef CONFIG_ACPI_PCI +/* +* Boxes that need ACPI PCI IRQ routing disabled +*/ + { + .callback = disable_acpi_irq, + .ident ="ASUS A7V" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC" ), +DMI_MATCH (DMI_BOARD_NAME ,"<A7V>" ), +/* newer BIOS, Revision 1011, does work */ +DMI_MATCH (DMI_BIOS_VERSION ,"ASUS A7V ACPI BIOS Revision 1007" ), + }, + }, + +/* +* Boxes that need ACPI PCI IRQ routing and PCI scan disabled +*/ + {/* _BBN 0 bug */ + .callback = disable_acpi_pci, + .ident ="ASUS PR-DLS" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ), +DMI_MATCH (DMI_BOARD_NAME ,"PR-DLS" ), +DMI_MATCH (DMI_BIOS_VERSION ,"ASUS PR-DLS ACPI BIOS Revision 1010" ), +DMI_MATCH (DMI_BIOS_DATE ,"03/21/2003" ) + }, + }, + { + .callback = disable_acpi_pci, + .ident ="Acer TravelMate 36x Laptop" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Acer" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"TravelMate 360" ), + }, + }, +#endif +}; + +#endif /* __i386__ */ +/* * acpi_boot_table_init() and acpi_boot_init() * called from setup_arch(), always.
@@ -859,6 +1072,10 @@ acpi_boot_table_init(void) {int error; +#ifdef __i386__ +dmi_check_system (acpi_dmi_table); +#endif +/* * If acpi_disabled, bail out * One exception: acpi=ht continues far enough to enumerate LAPICs
@@ -886,8 +1103,6 @@ acpi_boot_table_init(void)*/ error =acpi_blacklisted ();if (error) { -extern int acpi_force; -if (acpi_force) { printk(KERN_WARNING PREFIX "acpi=force override\n"); }else {
arch/i386/kernel/dmi_scan.c +0 -163
175 lines not on this page · raw message