2.6.7-mm1, port Acer laptop irq routing workaround to new DMI probing
Subsystems (5)
cover 2.6.7-mm1, port Acer laptop irq routing workaround to new DMI probing
This patch moves PCI IRQ routing workaround for Acer TravelMate 360 laptop to arch/i386/pci/irq.c and makes acer_tm360_irqrouting variable static. It also fixes VisWs build error caused by this workaround code.
arch/i386/kernel/dmi_scan.c | 23 ----------------------- arch/i386/pci/irq.c | 23 ++++++++++++++++++++++- 2 files changed, 22 insertions(+), 24 deletions(-)
arch/i386/kernel/dmi_scan.c +0 -23
@@ -317,21 +317,6 @@ static __init int disable_smbus(struct d }/* -* Work around broken Acer TravelMate 360 Notebooks which assign Cardbus to -* IRQ 11 even though it is actually wired to IRQ 10 -*/ -static __init int fix_acer_tm360_irqrouting (struct dmi_blacklist *d) -{ -#ifdef CONFIG_PCI -extern int acer_tm360_irqrouting; -if (acer_tm360_irqrouting ==0 ) { - acer_tm360_irqrouting =1 ; -printk (KERN_INFO "%s detected - fixing broken IRQ routing\n" , d->ident); - } -#endif -return 0 ; -} -/* * Check for clue free BIOS implementations who use * the following QA technique *
@@ -827,14 +812,6 @@ static __initdata struct dmi_blacklist dMATCH (DMI_BIOS_VERSION ,"1AET38WW (1.01b)" ), NO_MATCH, NO_MATCH } }, - - { fix_acer_tm360_irqrouting, "Acer TravelMate 36x Laptop", { -MATCH (DMI_SYS_VENDOR ,"Acer" ), -MATCH (DMI_PRODUCT_NAME ,"TravelMate 360" ), -NO_MATCH ,NO_MATCH - } }, - -/* * Generic per vendor APM settings
arch/i386/pci/irq.c +22 -1
@@ -24,7 +24,7 @@#define PIRQ_VERSION 0x0100static int broken_hp_bios_irq9; -int acer_tm360_irqrouting; +static int acer_tm360_irqrouting;static struct irq_routing_table *pirq_table;
@@ -916,6 +916,19 @@ static int __init fix_broken_hp_bios_irqreturn 0 ; } +/* +* Work around broken Acer TravelMate 360 Notebooks which assign +* Cardbus to IRQ 11 even though it is actually wired to IRQ 10 +*/ +static int __init fix_acer_tm360_irqrouting (struct dmi_system_id *d) +{ +if (!acer_tm360_irqrouting) { + acer_tm360_irqrouting =1 ; +printk (KERN_INFO "%s detected - fixing broken IRQ routing\n" , d->ident); + } +return 0 ; +} +static struct dmi_system_id __initdata pciirq_dmi_table[] = { { .callback = fix_broken_hp_bios_irq9,
@@ -925,6 +938,14 @@ static struct dmi_system_id __initdata p DMI_MATCH(DMI_BIOS_VERSION, "GE.M1.03"), DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"), DMI_MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736"), + }, + }, + { + .callback = fix_acer_tm360_irqrouting, + .ident = "Acer TravelMate 36x Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, { }
PATCH 1/6 2.6.7-mm1, port PnP BIOS driver to new DMI probing
This patch ports PnP BIOS driver to new DMI probing API.
arch/i386/kernel/dmi_scan.c | 24 ------------------------ drivers/pnp/pnpbios/core.c | 32 +++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 25 deletions(-)
arch/i386/kernel/dmi_scan.c +0 -24
@@ -433,18 +433,6 @@ static __init int broken_ps2_resume(strureturn 0 ; } -/* -* Exploding PnPBIOS. Don't yet know if its the BIOS or us for -* some entries -*/ - -static __init int exploding_pnp_bios (struct dmi_blacklist *d) -{ -printk (KERN_WARNING "%s detected. Disabling PnPBIOS\n" , d->ident); - dmi_broken |=BROKEN_PNP_BIOS ; -return 0 ; -} -static __init int acer_cpufreq_pst (struct dmi_blacklist *d) {printk (KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n" , d->ident);
@@ -748,18 +736,6 @@ static __initdata struct dmi_blacklist d MATCH(DMI_BIOS_DATE, "10/26/01"), NO_MATCH } }, - { exploding_pnp_bios, "Higraded P14H", { /* PnPBIOS GPF on boot */ -MATCH (DMI_BIOS_VENDOR ,"American Megatrends Inc." ), -MATCH (DMI_BIOS_VERSION ,"07.00T" ), -MATCH (DMI_SYS_VENDOR ,"Higraded" ), -MATCH (DMI_PRODUCT_NAME ,"P14H" ) - } }, - { exploding_pnp_bios, "ASUS P4P800", { /* PnPBIOS GPF on boot */ -MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer Inc." ), -MATCH (DMI_BOARD_NAME ,"P4P800" ), -NO_MATCH ,NO_MATCH - } }, -/* Machines which have problems handling enabled local APICs */ { local_apic_kills_bios, "Dell Inspiron", {
drivers/pnp/pnpbios/core.c +31 -1
@@ -59,6 +59,7 @@#include <linux/kmod.h> #include <linux/completion.h> #include <linux/spinlock.h> +#include <linux/dmi.h> #include <asm/page.h> #include <asm/desc.h>
@@ -498,10 +499,39 @@ int __init pnpbios_probe_system(void)return 0 ; } +static int __init exploding_pnp_bios (struct dmi_system_id *d) +{ +printk (KERN_WARNING "%s detected. Disabling PnPBIOS\n" , d->ident); +return 0 ; +} + +static struct dmi_system_id pnpbios_dmi_table[] = { + {/* PnPBIOS GPF on boot */ + .callback = exploding_pnp_bios, + .ident ="Higraded P14H" , + .matches = { +DMI_MATCH (DMI_BIOS_VENDOR ,"American Megatrends Inc." ), +DMI_MATCH (DMI_BIOS_VERSION ,"07.00T" ), +DMI_MATCH (DMI_SYS_VENDOR ,"Higraded" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"P14H" ), + }, + }, + {/* PnPBIOS GPF on boot */ + .callback = exploding_pnp_bios, + .ident ="ASUS P4P800" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer Inc." ), +DMI_MATCH (DMI_BOARD_NAME ,"P4P800" ), + }, + }, + { } +}; +int __init pnpbios_init (void ) {int ret; -if (pnpbios_disabled || (dmi_broken &BROKEN_PNP_BIOS )) { + +if (pnpbios_disabled ||dmi_check_system (pnpbios_dmi_table)) {printk (KERN_INFO "PnPBIOS: Disabled\n" );return -ENODEV ; }
PATCH 2/6 2.6.7-mm1, port sonypi driver to new DMI probing
This patch ports sonypi driver to new DMI probing API and removes is_sony_vaio_laptop global variable.
arch/i386/kernel/dmi_scan.c | 24 ------------------------ arch/i386/kernel/i386_ksyms.c | 3 --- drivers/char/sonypi.c | 18 +++++++++++++++--- include/asm-i386/system.h | 1 - 4 files changed, 15 insertions(+), 31 deletions(-)
arch/i386/kernel/dmi_scan.c +0 -24
@@ -19,7 +19,6 @@ EXPORT_SYMBOL(dmi_broken);unsigned int i8042_dmi_noloop =0 ;EXPORT_SYMBOL (i8042_dmi_noloop); -int is_sony_vaio_laptop;int is_unsafe_smbus;int es7000_plat =0 ;
@@ -340,24 +339,6 @@ static __init int broken_apm_power(struc }/* -* Check for a Sony Vaio system -* -* On a Sony system we want to enable the use of the sonypi -* driver for Sony-specific goodies like the camera and jogdial. -* We also want to avoid using certain functions of the PnP BIOS. -*/ - -static __init int sony_vaio_laptop (struct dmi_blacklist *d) -{ -if (is_sony_vaio_laptop ==0 ) - { - is_sony_vaio_laptop =1 ; -printk (KERN_INFO "%s laptop detected.\n" , d->ident); - } -return 0 ; -} - -/* * Several HP Proliant (and maybe other OSB4/ProFusion) systems * shouldn't use the AUX LoopBack command, or they crash or reboot. */
@@ -651,11 +632,6 @@ static __initdata struct dmi_blacklist d { apm_likes_to_melt, "AMI Bios", { /* APM idle hangs */MATCH (DMI_BIOS_VENDOR ,"American Megatrends Inc." ),MATCH (DMI_BIOS_VERSION ,"0AASNP05" ), -NO_MATCH ,NO_MATCH , - } }, - { sony_vaio_laptop, "Sony Vaio", { /* This is a Sony Vaio laptop */ -MATCH (DMI_SYS_VENDOR ,"Sony Corporation" ), -MATCH (DMI_PRODUCT_NAME ,"PCG-" ),NO_MATCH ,NO_MATCH , } }, { swab_apm_power_in_minutes, "Sony VAIO", { /* Handle problems with APM on Sony Vaio PCG-N505X(DE) */
arch/i386/kernel/i386_ksyms.c +0 -3
@@ -187,9 +187,6 @@ EXPORT_SYMBOL_NOVERS(memcmp);EXPORT_SYMBOL (atomic_dec_and_lock);#endif -extern int is_sony_vaio_laptop; -EXPORT_SYMBOL (is_sony_vaio_laptop); -EXPORT_SYMBOL (__PAGE_KERNEL);#ifdef CONFIG_HIGHMEM
drivers/char/sonypi.c +15 -3
@@ -43,6 +43,7 @@#include <linux/delay.h> #include <linux/wait.h> #include <linux/acpi.h> +#include <linux/dmi.h> #include <asm/uaccess.h> #include <asm/io.h>
@@ -820,10 +821,21 @@ static void __devexit sonypi_remove(voidprintk (KERN_INFO "sonypi: removed.\n" ); } -static int __init sonypi_init_module (void ) { -struct pci_dev *pcidev =NULL ; +static struct dmi_system_id __initdata sonypi_dmi_table[] = { + { + .ident ="Sony Vaio" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Sony Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"PCG-" ), + }, + }, + { } +}; -if (is_sony_vaio_laptop) { +static int __init sonypi_init_module (void ) +{ +struct pci_dev *pcidev =NULL ; +if (dmi_check_system (sonypi_dmi_table)) { pcidev =pci_find_device (PCI_VENDOR_ID_INTEL ,PCI_DEVICE_ID_INTEL_82371AB_3 ,NULL );
include/asm-i386/system.h +0 -1
@@ -466,7 +466,6 @@ void disable_hlt(void);void enable_hlt (void );extern unsigned long dmi_broken; -extern int is_sony_vaio_laptop;extern int es7000_plat;#define BROKEN_ACPI_Sx 0x0001
PATCH 3/6 2.6.7-mm1, port PIIX4 SMBUS driver to new DMI probing
This patch ports sonypi driver to new DMI probing API and removes is_unsafe_smbus global variable.
arch/i386/kernel/dmi_scan.c | 25 ------------------------- drivers/i2c/busses/i2c-piix4.c | 23 ++++++++++------------- 2 files changed, 10 insertions(+), 38 deletions(-)
arch/i386/kernel/dmi_scan.c +0 -25
@@ -19,7 +19,6 @@ EXPORT_SYMBOL(dmi_broken);unsigned int i8042_dmi_noloop =0 ;EXPORT_SYMBOL (i8042_dmi_noloop); -int is_unsafe_smbus;int es7000_plat =0 ;struct dmi_header
@@ -302,19 +301,6 @@ static int __init local_apic_kills_bios(return 0 ; } -/* -* Don't access SMBus on IBM systems which get corrupted eeproms -*/ - -static __init int disable_smbus (struct dmi_blacklist *d) -{ -if (is_unsafe_smbus ==0 ) { - is_unsafe_smbus =1 ; -printk (KERN_INFO "%s machine detected. Disabling SMBus accesses.\n" , d->ident); - } -return 0 ; -} -/* * Check for clue free BIOS implementations who use * the following QA technique
@@ -775,15 +761,6 @@ static __initdata struct dmi_blacklist d } },/* -* SMBus / sensors settings -*/ - - { disable_smbus, "IBM", { -MATCH (DMI_SYS_VENDOR ,"IBM" ), -NO_MATCH ,NO_MATCH ,NO_MATCH - } }, - -/* * Some Athlon laptops have really fucked PST tables. * A BIOS update is all that can save them. * Mention this, and disable cpufreq.
@@ -1076,8 +1053,6 @@ void __init dmi_scan_machine(void)else printk (KERN_INFO "DMI not present.\n" ); } - -EXPORT_SYMBOL (is_unsafe_smbus);/**
drivers/i2c/busses/i2c-piix4.c +10 -13
@@ -40,6 +40,7 @@#include <linux/i2c.h> #include <linux/init.h> #include <linux/apm_bios.h> +#include <linux/dmi.h> #include <asm/io.h>
@@ -114,18 +115,13 @@ static int piix4_transaction(void);static unsigned short piix4_smba =0 ;static struct i2c_adapter piix4_adapter; -/* -* Get DMI information. -*/ -static int __devinit ibm_dmi_probe (void ) -{ -#ifdef CONFIG_X86 -extern int is_unsafe_smbus; -return is_unsafe_smbus; -#else -return 0 ; -#endif -} +static struct dmi_system_id __devinitdata piix4_dmi_table[] = { + { + .ident ="IBM" , + .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"IBM" ), }, + }, + { }, +};static int __devinit piix4_setup (struct pci_dev *PIIX4_dev,const struct pci_device_id *id)
@@ -138,7 +134,8 @@ static int __devinit piix4_setup(structdev_info (&PIIX4_dev->dev,"Found %s device\n" ,pci_name (PIIX4_dev)); -if (ibm_dmi_probe ()) { +/* Don't access SMBus on IBM systems which get corrupted eeproms */ +if (dmi_check_system (piix4_dmi_table)) {dev_err (&PIIX4_dev->dev,"IBM Laptop detected; this module " "may corrupt your serial eeprom! Refusing to load " "module!\n" );
PATCH 4/6 2.6.7-mm1, port powernow-k7 driver to new DMI probing
This patch ports powernow-k7 driver to new DMI probing API.
arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 28 +++++++++++++++++++++++++++- arch/i386/kernel/dmi_scan.c | 20 -------------------- 2 files changed, 27 insertions(+), 21 deletions(-)
arch/i386/kernel/cpu/cpufreq/powernow-k7.c +27 -1
@@ -22,6 +22,7 @@#include <linux/cpufreq.h> #include <linux/slab.h> #include <linux/string.h> +#include <linux/dmi.h> #include <asm/msr.h> #include <asm/timex.h>
@@ -554,6 +555,31 @@ static unsigned int powernow_get(unsigne } +static int __init acer_cpufreq_pst (struct dmi_system_id *d) +{ +printk (KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n" , d->ident); +printk (KERN_WARNING "You need to downgrade to 3A21 (09/09/2002), or try a newer BIOS than 3A71 (01/20/2003)\n" ); +printk (KERN_WARNING "cpufreq scaling has been disabled as a result of this.\n" ); +return 0 ; +} + +/* +* Some Athlon laptops have really fucked PST tables. +* A BIOS update is all that can save them. +* Mention this, and disable cpufreq. +*/ +static struct dmi_system_id __initdata powernow_dmi_table[] = { + { + .callback = acer_cpufreq_pst, + .ident ="Acer Aspire" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Insyde Software" ), +DMI_MATCH (DMI_BIOS_VERSION ,"3A71" ), + }, + }, + { } +}; +static int __init powernow_cpu_init (struct cpufreq_policy *policy) {union msr_fidvidstatus fidvidstatus;
@@ -572,7 +598,7 @@ static int __init powernow_cpu_init (str } dprintk(KERN_INFO PFX "FSB: %3d.%03d MHz\n", fsb/1000, fsb%1000); -if ((dmi_broken &BROKEN_CPUFREQ ) || acpi_force) { +if (dmi_check_system (powernow_dmi_table) || acpi_force) { printk (KERN_INFO PFX "PSB/PST known to be broken. Trying ACPI instead\n"); result =powernow_acpi_init (); }else {
arch/i386/kernel/dmi_scan.c +0 -20
@@ -400,15 +400,6 @@ static __init int broken_ps2_resume(strureturn 0 ; } -static __init int acer_cpufreq_pst (struct dmi_blacklist *d) -{ -printk (KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n" , d->ident); -printk (KERN_WARNING "You need to downgrade to 3A21 (09/09/2002), or try a newer BIOS than 3A71 (01/20/2003)\n" ); -printk (KERN_WARNING "cpufreq scaling has been disabled as a result of this.\n" ); - dmi_broken |=BROKEN_CPUFREQ ; -return 0 ; -} -/* * Simple "print if true" callback
@@ -758,17 +749,6 @@ static __initdata struct dmi_blacklist d { set_apm_ints, "IBM", { /* Allow interrupts during suspend on IBM laptops */MATCH (DMI_SYS_VENDOR ,"IBM" ),NO_MATCH ,NO_MATCH ,NO_MATCH - } }, - -/* -* Some Athlon laptops have really fucked PST tables. -* A BIOS update is all that can save them. -* Mention this, and disable cpufreq. -*/ - { acer_cpufreq_pst, "Acer Aspire", { -MATCH (DMI_SYS_VENDOR ,"Insyde Software" ), -MATCH (DMI_BIOS_VERSION ,"3A71" ), - NO_MATCH, NO_MATCH, } },/*
PATCH 5/6 2.6.7-mm1, remove unused ASUS K7V-RM DMI quirk
BROKEN_ACPI_Sx flag doesn't seem to be used anywhere in the kernel, so ASUS K7V-RM can be removed.
arch/i386/kernel/dmi_scan.c | 17 ----------------- 1 files changed, 17 deletions(-)
arch/i386/kernel/dmi_scan.c +0 -17
@@ -348,17 +348,6 @@ static __init int swab_apm_power_in_minu }/* -* ASUS K7V-RM has broken ACPI table defining sleep modes -*/ - -static __init int broken_acpi_Sx (struct dmi_blacklist *d) -{ -printk (KERN_WARNING "Detected ASUS mainboard with broken ACPI sleep table\n" ); - dmi_broken |= BROKEN_ACPI_Sx; -return 0 ; -} - -/* * Toshiba keyboard likes to repeat keys when they are not repeated. */
@@ -712,12 +701,6 @@ static __initdata struct dmi_blacklist d { local_apic_kills_bios, "ASUS L3C", {MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ),MATCH (DMI_BOARD_NAME ,"P4_L3C" ), -NO_MATCH ,NO_MATCH - } }, - - { broken_acpi_Sx, "ASUS K7V-RM", { /* Bad ACPI Sx table */ -MATCH (DMI_BIOS_VERSION ,"ASUS K7V-RM ACPI BIOS Revision 1003A" ), -MATCH (DMI_BOARD_NAME ,"<K7V-RM>" ),NO_MATCH ,NO_MATCH } },
PATCH 6/6 2.6.7-mm1, port APM BIOS driver to new DMI probing
This patch ports APM BIOS driver to new DMI probing API.
arch/i386/kernel/apm.c | 316 ++++++++++++++++++++++++++++++++++++++++ arch/i386/kernel/dmi_scan.c | 340 -------------------------------------------- 2 files changed, 316 insertions(+), 340 deletions(-)
arch/i386/kernel/apm.c +316 -0
@@ -222,6 +222,7 @@#include <linux/kernel.h> #include <linux/smp.h> #include <linux/smp_lock.h> +#include <linux/dmi.h> #include <asm/system.h> #include <asm/uaccess.h>
@@ -1884,6 +1885,319 @@ static struct miscdevice apm_device = { &apm_bios_fops }; + +/* Simple "print if true" callback */ +static int __init print_if_true (struct dmi_system_id *d) +{ +printk ("%s\n" , d->ident); +return 0 ; +} + +/* +* Some Bioses enable the PS/2 mouse (touchpad) at resume, even if it was +* disabled before the suspend. Linux used to get terribly confused by that. +*/ +static int __init broken_ps2_resume (struct dmi_system_id *d) +{ +printk (KERN_INFO "%s machine detected. Mousepad Resume Bug workaround hopefully not needed.\n" , d->ident); +return 0 ; +} + +/* Some bioses have a broken protected mode poweroff and need to use realmode */ +static int __init set_realmode_power_off (struct dmi_system_id *d) +{ +if (apm_info.realmode_power_off ==0 ) { + apm_info.realmode_power_off =1 ; +printk (KERN_INFO "%s bios detected. Using realmode poweroff only.\n" , d->ident); + } +return 0 ; +} + +/* Some laptops require interrupts to be enabled during APM calls */ +static int __init set_apm_ints (struct dmi_system_id *d) +{ +if (apm_info.allow_ints ==0 ) { + apm_info.allow_ints =1 ; +printk (KERN_INFO "%s machine detected. Enabling interrupts during APM calls.\n" , d->ident); + } +return 0 ; +} + +/* Some APM bioses corrupt memory or just plain do not work */ +static int __init apm_is_horked (struct dmi_system_id *d) +{ +if (apm_info.disabled ==0 ) { + apm_info.disabled =1 ; +printk (KERN_INFO "%s machine detected. Disabling APM.\n" , d->ident); + } +return 0 ; +} + +static int __init apm_is_horked_d850md (struct dmi_system_id *d) +{ +if (apm_info.disabled ==0 ) { + apm_info.disabled =1 ; +printk (KERN_INFO "%s machine detected. Disabling APM.\n" , d->ident); +printk (KERN_INFO "This bug is fixed in bios P15 which is available for \n" ); +printk (KERN_INFO "download from support.intel.com \n" ); + } +return 0 ; +} + +/* Some APM bioses hang on APM idle calls */ +static int __init apm_likes_to_melt (struct dmi_system_id *d) +{ +if (apm_info.forbid_idle ==0 ) { + apm_info.forbid_idle =1 ; +printk (KERN_INFO "%s machine detected. Disabling APM idle calls.\n" , d->ident); + } +return 0 ; +} + +/* +* Check for clue free BIOS implementations who use +* the following QA technique +* +* [ Write BIOS Code ]<------ +* | ^ +* < Does it Compile >----N-- +* |Y ^ +* < Does it Boot Win98 >-N-- +* |Y +* [Ship It] +* +* Phoenix A04 08/24/2000 is known bad (Dell Inspiron 5000e) +* Phoenix A07 09/29/2000 is known good (Dell Inspiron 5000) +*/ +static int __init broken_apm_power (struct dmi_system_id *d) +{ + apm_info.get_power_status_broken =1 ; +printk (KERN_WARNING "BIOS strings suggest APM bugs, disabling power status reporting.\n" ); +return 0 ; +} + +/* +* This bios swaps the APM minute reporting bytes over (Many sony laptops +* have this problem). +*/ +static int __init swab_apm_power_in_minutes (struct dmi_system_id *d) +{ + apm_info.get_power_status_swabinminutes =1 ; +printk (KERN_WARNING "BIOS strings suggest APM reports battery life in minutes and wrong byte order.\n" ); +return 0 ; +} + +static struct dmi_system_id __initdata apm_dmi_table[] = { + { + print_if_true, +KERN_WARNING "IBM T23 - BIOS 1.03b+ and controller firmware 1.02+ may be needed for Linux APM." , + {DMI_MATCH (DMI_SYS_VENDOR ,"IBM" ), +DMI_MATCH (DMI_BIOS_VERSION ,"1AET38WW (1.01b)" ), }, + }, + {/* Handle problems with APM on the C600 */ + broken_ps2_resume,"Dell Latitude C600" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Dell" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Latitude C600" ), }, + }, + {/* Allow interrupts during suspend on Dell Latitude laptops*/ + set_apm_ints,"Dell Latitude" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Latitude C510" ), } + }, + {/* APM crashes */ + apm_is_horked,"Dell Inspiron 2500" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Inspiron 2500" ), +DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"A11" ), }, + }, + {/* Allow interrupts during suspend on Dell Inspiron laptops*/ + set_apm_ints,"Dell Inspiron" , { +DMI_MATCH (DMI_SYS_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Inspiron 4000" ), }, + }, + {/* Handle problems with APM on Inspiron 5000e */ + broken_apm_power,"Dell Inspiron 5000e" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"A04" ), +DMI_MATCH (DMI_BIOS_DATE ,"08/24/2000" ), }, + }, + {/* Handle problems with APM on Inspiron 2500 */ + broken_apm_power,"Dell Inspiron 2500" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"A12" ), +DMI_MATCH (DMI_BIOS_DATE ,"02/04/2002" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Dell Dimension 4100" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"XPS-Z" ), +DMI_MATCH (DMI_BIOS_VENDOR ,"Intel Corp." ), +DMI_MATCH (DMI_BIOS_VERSION ,"A11" ), }, + }, + {/* Allow interrupts during suspend on Compaq Laptops*/ + set_apm_ints,"Compaq 12XL125" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Compaq" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Compaq PC" ), +DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"4.06" ), }, + }, + {/* Allow interrupts during APM or the clock goes slow */ + set_apm_ints,"ASUSTeK" , + {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK Computer Inc." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"L8400K series Notebook PC" ), }, + }, + {/* APM blows on shutdown */ + apm_is_horked,"ABIT KX7-333[R]" , + {DMI_MATCH (DMI_BOARD_VENDOR ,"ABIT" ), +DMI_MATCH (DMI_BOARD_NAME ,"VT8367-8233A (KX7-333[R])" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Trigem Delhi3" , + {DMI_MATCH (DMI_SYS_VENDOR ,"TriGem Computer, Inc" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Delhi3" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Fujitsu-Siemens" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"hoenix/FUJITSU SIEMENS" ), +DMI_MATCH (DMI_BIOS_VERSION ,"Version1.01" ), }, + }, + {/* APM crashes */ + apm_is_horked_d850md,"Intel D850MD" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Intel Corp." ), +DMI_MATCH (DMI_BIOS_VERSION ,"MV85010A.86A.0016.P07.0201251536" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Intel D810EMO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Intel Corp." ), +DMI_MATCH (DMI_BIOS_VERSION ,"MO81010A.86A.0008.P04.0004170800" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Dell XPS-Z" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Intel Corp." ), +DMI_MATCH (DMI_BIOS_VERSION ,"A11" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"XPS-Z" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Sharp PC-PJ/AX" , + {DMI_MATCH (DMI_SYS_VENDOR ,"SHARP" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"PC-PJ/AX" ), +DMI_MATCH (DMI_BIOS_VENDOR ,"SystemSoft" ), +DMI_MATCH (DMI_BIOS_VERSION ,"Version R2.08" ), }, + }, + {/* APM crashes */ + apm_is_horked,"Dell Inspiron 2500" , + {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Computer Corporation" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Inspiron 2500" ), +DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"A11" ), }, + }, + {/* APM idle hangs */ + apm_likes_to_melt,"Jabil AMD" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"American Megatrends Inc." ), +DMI_MATCH (DMI_BIOS_VERSION ,"0AASNP06" ), }, + }, + {/* APM idle hangs */ + apm_likes_to_melt,"AMI Bios" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"American Megatrends Inc." ), +DMI_MATCH (DMI_BIOS_VERSION ,"0AASNP05" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-N505X(DE) */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0206H" ), +DMI_MATCH (DMI_BIOS_DATE ,"08/23/99" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-N505VX */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"W2K06H0" ), +DMI_MATCH (DMI_BIOS_DATE ,"02/03/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-XG29 */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0117A0" ), +DMI_MATCH (DMI_BIOS_DATE ,"04/25/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z600NE */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0121Z1" ), +DMI_MATCH (DMI_BIOS_DATE ,"05/11/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z600NE */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"WME01Z1" ), +DMI_MATCH (DMI_BIOS_DATE ,"08/11/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z600LEK(DE) */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0206Z3" ), +DMI_MATCH (DMI_BIOS_DATE ,"12/25/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z505LS */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0203D0" ), +DMI_MATCH (DMI_BIOS_DATE ,"05/12/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z505LS */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0203Z3" ), +DMI_MATCH (DMI_BIOS_DATE ,"08/25/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-Z505LS (with updated BIOS) */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0209Z3" ), +DMI_MATCH (DMI_BIOS_DATE ,"05/12/01" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-F104K */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0204K2" ), +DMI_MATCH (DMI_BIOS_DATE ,"08/28/00" ), }, + }, + + {/* Handle problems with APM on Sony Vaio PCG-C1VN/C1VE */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0208P1" ), +DMI_MATCH (DMI_BIOS_DATE ,"11/09/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-C1VE */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"R0204P1" ), +DMI_MATCH (DMI_BIOS_DATE ,"09/12/00" ), }, + }, + {/* Handle problems with APM on Sony Vaio PCG-C1VE */ + swab_apm_power_in_minutes,"Sony VAIO" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Phoenix Technologies LTD" ), +DMI_MATCH (DMI_BIOS_VERSION ,"WXPO1Z3" ), +DMI_MATCH (DMI_BIOS_DATE ,"10/26/01" ), }, + }, + {/* broken PM poweroff bios */ + set_realmode_power_off,"Award Software v4.60 PGMA" , + {DMI_MATCH (DMI_BIOS_VENDOR ,"Award Software International, Inc." ), +DMI_MATCH (DMI_BIOS_VERSION ,"4.60 PGMA" ), +DMI_MATCH (DMI_BIOS_DATE ,"134526184" ), }, + }, + +/* Generic per vendor APM settings */ + + {/* Allow interrupts during suspend on IBM laptops */ + set_apm_ints,"IBM" , + {DMI_MATCH (DMI_SYS_VENDOR ,"IBM" ), }, + }, + + { } +}; +/* * Just start the APM thread. We do NOT want to do APM BIOS * calls from anything but the APM thread, if for no other reason
@@ -1899,6 +2213,8 @@ static int __init apm_init(void)struct proc_dir_entry *apm_proc;int ret;int i; + +dmi_check_system (apm_dmi_table);if (apm_info.bios.version ==0 ) {printk (KERN_INFO "apm: BIOS not found.\n" );
arch/i386/kernel/dmi_scan.c +0 -340
396 lines not on this page · raw message
Re: [PATCH 5/6] 2.6.7-mm1, remove unused ASUS K7V-RM DMI quirk
In reply to Andrey PaninQuoted 31 lines · Andrey Panin
BROKEN_ACPI_Sxflag doesn't seem to be used anywhere in the kernel, so ASUS K7V-RM can be removed.Signed-off-by Andrey Panin <[email protected]>arch/i386/kernel/dmi_scan.c | 17 ----------------- 1 files changed, 17 deletions(-)diff -urpN -X
/usr/share/dontdifflinux-2.6.7-mm1.vanilla/arch/i386/kernel/dmi_scan.clinux-2.6.7-mm1/arch/i386/kernel/dmi_scan.carch/i386/kernel/dmi_scan.c +0
-11@@ -348,17 +348,6 @@ static __init int swab_apm_power_in_minu }/* -* ASUS K7V-RM has broken ACPI table defining sleep modes -*/ - -static __init int broken_acpi_Sx (struct dmi_blacklist *d) -{ -printk (KERN_WARNING "Detected ASUS mainboard with broken ACPI sleep table\n" ); - dmi_broken |= BROKEN_ACPI_Sx; -return 0 ; -} - -/* * Toshiba keyboard likes to repeat keys when they are not repeated. */ @@ -712,12 +701,6 @@ static __initdata struct dmi_blacklist d { local_apic_kills_bios, "ASUS L3C", {
arch/i386/kernel/dmi_scan.c static __initdata struct dmi_blacklist d · line 705
Quoted 10 lines
arch/i386/kernel/dmi_scan.c +0
-6MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ),MATCH (DMI_BOARD_NAME ,"P4_L3C" ), - NO_MATCH, NO_MATCH - } }, - - { broken_acpi_Sx, "ASUS K7V-RM", { /* Bad ACPI Sx table */ -MATCH (DMI_BIOS_VERSION ,"ASUS K7V-RM ACPI BIOS Revision 1003A" ), -MATCH (DMI_BOARD_NAME ,"<K7V-RM>" ), NO_MATCH, NO_MATCH } },
Maybe CC Len Brown on this, to see if he screams? :)
Jeff
Re: [PATCH 5/6] 2.6.7-mm1, remove unused ASUS K7V-RM DMI quirk
Quoted 6 lines · Jeff Garzik
Quoted 3 lines · Andrey Panin
BROKEN_ACPI_Sxflag doesn't seem to be used anywhere in the kernel, so ASUS K7V-RM can be removed.
...Maybe CC Len Brown on this, to see if he screams? :)
Dead code, go ahead and clean it out.
Indeed, in the upstream kernel, I'm thinking about deleting all the ACPI related blacklist entries. Maintaining them is more trouble than it is worth. When they do work, they generally are masking bugs that we should instead fix.
thanks,
-Len
Re: [PATCH 5/6] 2.6.7-mm1, remove unused ASUS K7V-RM DMI quirk
Hi!
Quoted 1 line
Dead code, go ahead and clean it out.
My fault, thanks for cleaning.
Quoted 5 lines
Indeed, in the upstream kernel, I'm thinking about deleting all the ACPI related blacklist entries. Maintaining them is more trouble than it is worth. When they do work, they generally are masking bugs that we should instead fix.
Well, I guess that for 2.6 we want them masked.
For 2.7, proper fix is better...
Signature · 1 line
64 bytes from 195.113.31.123: icmp_seq=28 ttl=51 time=448769.1 ms