aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/intel/haswell/haswell_init.c
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2020-10-28 22:23:02 +0100
committerPatrick Georgi <pgeorgi@google.com>2021-01-22 14:25:22 +0000
commitc89d2a289079b666a2a88168b5734417fb07c122 (patch)
tree8f4395e0a80caa21c770cec25f34aec85f2d87ea /src/cpu/intel/haswell/haswell_init.c
parent8199b88222f9657c8afeeff10199da0c4d1b6bbd (diff)
cpu/intel/haswell: Enable timed MWAIT if supported
Broadwell code unconditionally enables timed MWAIT, but not all Haswell steppings support it. In preparation for merging Haswell and Broadwell, also enable timed MWAIT on Haswell code, but only if it is supported. Change-Id: I1d11d62f1801d65ae4d5623994fd55fd35e8f34a Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46916 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/cpu/intel/haswell/haswell_init.c')
-rw-r--r--src/cpu/intel/haswell/haswell_init.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cpu/intel/haswell/haswell_init.c b/src/cpu/intel/haswell/haswell_init.c
index 0e48876d10..9881bb880f 100644
--- a/src/cpu/intel/haswell/haswell_init.c
+++ b/src/cpu/intel/haswell/haswell_init.c
@@ -431,7 +431,9 @@ void set_power_limits(u8 power_limit_1_time)
static void configure_c_states(void)
{
- msr_t msr;
+ msr_t msr = rdmsr(MSR_PLATFORM_INFO);
+
+ const bool timed_mwait_capable = !!(msr.hi & TIMED_MWAIT_SUPPORTED);
msr = rdmsr(MSR_PKG_CST_CONFIG_CONTROL);
msr.lo |= (1 << 30); // Package c-state Undemotion Enable
@@ -441,6 +443,10 @@ static void configure_c_states(void)
msr.lo |= (1 << 26); // C1 Auto Demotion Enable
msr.lo |= (1 << 25); // C3 Auto Demotion Enable
msr.lo &= ~(1 << 10); // Disable IO MWAIT redirection
+
+ if (timed_mwait_capable)
+ msr.lo |= (1 << 31); // Timed MWAIT Enable
+
/* The deepest package c-state defaults to factory-configured value. */
wrmsr(MSR_PKG_CST_CONFIG_CONTROL, msr);