diff options
-rw-r--r-- | drivers/acpi/processor_idle.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 89d3fd4c3cd2..2278b21b5eb8 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -99,6 +99,9 @@ static int set_max_cstate(struct dmi_system_id *id) | |||
99 | static struct dmi_system_id __cpuinitdata processor_power_dmi_table[] = { | 99 | static struct dmi_system_id __cpuinitdata processor_power_dmi_table[] = { |
100 | { set_max_cstate, "IBM ThinkPad R40e", { | 100 | { set_max_cstate, "IBM ThinkPad R40e", { |
101 | DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), | 101 | DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), |
102 | DMI_MATCH(DMI_BIOS_VERSION,"1SET70WW")}, (void *)1}, | ||
103 | { set_max_cstate, "IBM ThinkPad R40e", { | ||
104 | DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), | ||
102 | DMI_MATCH(DMI_BIOS_VERSION,"1SET60WW")}, (void *)1}, | 105 | DMI_MATCH(DMI_BIOS_VERSION,"1SET60WW")}, (void *)1}, |
103 | { set_max_cstate, "IBM ThinkPad R40e", { | 106 | { set_max_cstate, "IBM ThinkPad R40e", { |
104 | DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), | 107 | DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), |
@@ -365,7 +368,9 @@ static void acpi_processor_idle(void) | |||
365 | t1 = inl(acpi_fadt.xpm_tmr_blk.address); | 368 | t1 = inl(acpi_fadt.xpm_tmr_blk.address); |
366 | /* Invoke C2 */ | 369 | /* Invoke C2 */ |
367 | inb(cx->address); | 370 | inb(cx->address); |
368 | /* Dummy op - must do something useless after P_LVL2 read */ | 371 | /* Dummy wait op - must do something useless after P_LVL2 read |
372 | because chipsets cannot guarantee that STPCLK# signal | ||
373 | gets asserted in time to freeze execution properly. */ | ||
369 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); | 374 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); |
370 | /* Get end time (ticks) */ | 375 | /* Get end time (ticks) */ |
371 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); | 376 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); |
@@ -403,7 +408,7 @@ static void acpi_processor_idle(void) | |||
403 | t1 = inl(acpi_fadt.xpm_tmr_blk.address); | 408 | t1 = inl(acpi_fadt.xpm_tmr_blk.address); |
404 | /* Invoke C3 */ | 409 | /* Invoke C3 */ |
405 | inb(cx->address); | 410 | inb(cx->address); |
406 | /* Dummy op - must do something useless after P_LVL3 read */ | 411 | /* Dummy wait op (see above) */ |
407 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); | 412 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); |
408 | /* Get end time (ticks) */ | 413 | /* Get end time (ticks) */ |
409 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); | 414 | t2 = inl(acpi_fadt.xpm_tmr_blk.address); |