From: Thomas Rosner This adds all known BIOS versions of IBM R40e Laptops to the C2/C3 processor state blacklist and thus prevents them from crashing. Fixes Bug #3549. Implementation is probably overly verbose, but DMI_MATCH seems to give us no choice. Signed-off-by: Thomas Rosner Cc: Cc: "Brown, Len" Signed-off-by: Andrew Morton --- drivers/acpi/processor_idle.c | 109 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 95 insertions(+), 14 deletions(-) diff -puN drivers/acpi/processor_idle.c~acpi-disable-c2-c3-for-_all_-ibm-r40e-laptops-for-2613-bug-3549 drivers/acpi/processor_idle.c --- devel/drivers/acpi/processor_idle.c~acpi-disable-c2-c3-for-_all_-ibm-r40e-laptops-for-2613-bug-3549 2005-09-15 20:56:35.000000000 -0700 +++ devel-akpm/drivers/acpi/processor_idle.c 2005-09-15 21:02:15.000000000 -0700 @@ -94,23 +94,104 @@ static int set_max_cstate(struct dmi_sys } static struct dmi_system_id __initdata processor_power_dmi_table[] = { + /* The known versions of IBM R40e BIOS */ {set_max_cstate, "IBM ThinkPad R40e", { - DMI_MATCH(DMI_BIOS_VENDOR, - "IBM"), - DMI_MATCH(DMI_BIOS_VERSION, - "1SET60WW")}, - (void *)1}, + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET32WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET43WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET45WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET47WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET50WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET52WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET55WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET56WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET59WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET60WW")}, + (void *)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET61WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET62WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET64WW") }, + (void*)1}, + {set_max_cstate, "IBM ThinkPad R40e", { + DMI_MATCH(DMI_BIOS_VENDOR, + "IBM"), + DMI_MATCH(DMI_BIOS_VERSION, + "1SET65WW") }, + (void*)1}, + /* Other laptops, same problem */ {set_max_cstate, "Medion 41700", { - DMI_MATCH(DMI_BIOS_VENDOR, - "Phoenix Technologies LTD"), - DMI_MATCH(DMI_BIOS_VERSION, - "R01-A1J")}, (void *)1}, + DMI_MATCH(DMI_BIOS_VENDOR, + "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, + "R01-A1J")}, + (void *)1}, {set_max_cstate, "Clevo 5600D", { - DMI_MATCH(DMI_BIOS_VENDOR, - "Phoenix Technologies LTD"), - DMI_MATCH(DMI_BIOS_VERSION, - "SHE845M0.86C.0013.D.0302131307")}, - (void *)2}, + DMI_MATCH(DMI_BIOS_VENDOR, + "Phoenix Technologies LTD"), + DMI_MATCH(DMI_BIOS_VERSION, + "SHE845M0.86C.0013.D.0302131307")}, + (void *)2}, {}, }; _