diff -Nru a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c --- a/drivers/acpi/processor_idle.c 2008-04-26 17:54:38.000000000 +0200 +++ b/drivers/acpi/processor_idle.c 2008-04-26 17:31:15.000000000 +0200 @@ -181,6 +181,9 @@ DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")}, (void *)2}, + { set_max_cstate, "TOSHIBA L30-11E", { + DMI_MATCH(DMI_BIOS_VENDOR,"TOSHIBA"), + DMI_MATCH(DMI_BIOS_VERSION,"V2.80")}, (void *)2}, {}, }; @@ -1018,6 +1021,22 @@ "latency too large [%d]\n", cx->latency)); return; } + + /* + * Hack MUPUF : If the processor does not support this mode. + * don't tell it is valid if it is not ! + */ + else if (max_cstate < ACPI_STATE_C2) + { + cx->valid = 0; + + printk(KERN_NOTICE + "ACPI: processor limited to max C-state %d -> set C-state 2 to invalid\n", + max_cstate); + + return; + } + /* * Otherwise we've met all of our C2 requirements. @@ -1101,6 +1120,21 @@ } acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0); } + + /* + * Hack MUPUF : If the processor does not support this mode. + * don't tell it is valid if it is not ! + */ + if (max_cstate < ACPI_STATE_C3) + { + cx->valid = 0; + + printk(KERN_NOTICE + "ACPI: processor limited to max C-state %d -> set C-state 3 to invalid\n", + max_cstate); + + return; + } /* * Otherwise we've met all of our C3 requirements.