summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/intel/turbo/turbo.c17
-rw-r--r--src/include/cpu/intel/turbo.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/src/cpu/intel/turbo/turbo.c b/src/cpu/intel/turbo/turbo.c
index ac6627372b..3fae3f0bd7 100644
--- a/src/cpu/intel/turbo/turbo.c
+++ b/src/cpu/intel/turbo/turbo.c
@@ -106,3 +106,20 @@ void enable_turbo(void)
printk(BIOS_INFO, "Turbo has been enabled\n");
}
}
+
+/*
+ * Try to disable Turbo mode.
+ */
+void disable_turbo(void)
+{
+ msr_t msr;
+
+ /* Set Turbo Disable bit in Misc Enables */
+ msr = rdmsr(MSR_IA32_MISC_ENABLES);
+ msr.hi |= H_MISC_DISABLE_TURBO;
+ wrmsr(MSR_IA32_MISC_ENABLES, msr);
+
+ /* Update cached turbo state */
+ set_global_turbo_state(TURBO_UNAVAILABLE);
+ printk(BIOS_INFO, "Turbo has been disabled\n");
+}
diff --git a/src/include/cpu/intel/turbo.h b/src/include/cpu/intel/turbo.h
index 6626cb13c0..58f4831d4b 100644
--- a/src/include/cpu/intel/turbo.h
+++ b/src/include/cpu/intel/turbo.h
@@ -39,4 +39,7 @@ int get_turbo_state(void);
/* Enable turbo */
void enable_turbo(void);
+/* Disable turbo */
+void disable_turbo(void);
+
#endif