]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge commit 'v3.0' into x86/cpu
authorH. Peter Anvin <hpa@linux.intel.com>
Fri, 5 Aug 2011 19:25:56 +0000 (12:25 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 5 Aug 2011 19:25:56 +0000 (12:25 -0700)
arch/x86/include/asm/msr-index.h
arch/x86/kernel/cpu/intel.c

index 485b4f1f079b130346c584d78e5a5edbd47d3267..d96bdb25ca3d378b16365e5168076d59804c20ea 100644 (file)
 #define MSR_IA32_TEMPERATURE_TARGET    0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS      0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE   0
+#define ENERGY_PERF_BIAS_NORMAL                6
+#define ENERGY_PERF_BIAS_POWERSAVE     15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS          0x000001b1
 
index 1edf5ba4fb2b76076f448db70d01587c71a96d3d..ed6086eedf1d2aaafd5a767d2cb56f5ed51aead9 100644 (file)
@@ -456,6 +456,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
        if (cpu_has(c, X86_FEATURE_VMX))
                detect_vmx_virtcap(c);
+
+       /*
+        * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+        * x86_energy_perf_policy(8) is available to change it at run-time
+        */
+       if (cpu_has(c, X86_FEATURE_EPB)) {
+               u64 epb;
+
+               rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+               if ((epb & 0xF) == ENERGY_PERF_BIAS_PERFORMANCE) {
+                       printk_once(KERN_WARNING "ENERGY_PERF_BIAS:"
+                               " Set to 'normal', was 'performance'\n"
+                               "ENERGY_PERF_BIAS: View and update with"
+                               " x86_energy_perf_policy(8)\n");
+                       epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+                       wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+               }
+       }
 }
 
 #ifdef CONFIG_X86_32