summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/acpi/cstate.c
diff options
context:
space:
mode:
authorAlex Elder <aelder@sgi.com>2010-08-02 10:24:57 -0500
committerAlex Elder <aelder@sgi.com>2010-08-02 10:24:57 -0500
commit6b0a2996a0c023d84bc27ec7528a6e54cb5ea264 (patch)
tree9fa9a85d5d871b3cb3c28daf57d8ef8f05becd66 /arch/x86/kernel/acpi/cstate.c
parent209fb87a259ead17e966627b7f053d16a96898da (diff)
parent9fe6206f400646a2322096b56c59891d530e8d51 (diff)
Merge branch 'v2.6.35'
Diffstat (limited to 'arch/x86/kernel/acpi/cstate.c')
-rw-r--r--arch/x86/kernel/acpi/cstate.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c
index 2e837f5080f..fb7a5f052e2 100644
--- a/arch/x86/kernel/acpi/cstate.c
+++ b/arch/x86/kernel/acpi/cstate.c
@@ -145,6 +145,15 @@ int acpi_processor_ffh_cstate_probe(unsigned int cpu,
percpu_entry->states[cx->index].eax = cx->address;
percpu_entry->states[cx->index].ecx = MWAIT_ECX_INTERRUPT_BREAK;
}
+
+ /*
+ * For _CST FFH on Intel, if GAS.access_size bit 1 is cleared,
+ * then we should skip checking BM_STS for this C-state.
+ * ref: "Intel Processor Vendor-Specific ACPI Interface Specification"
+ */
+ if ((c->x86_vendor == X86_VENDOR_INTEL) && !(reg->access_size & 0x2))
+ cx->bm_sts_skip = 1;
+
return retval;
}
EXPORT_SYMBOL_GPL(acpi_processor_ffh_cstate_probe);