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.