]> git.karo-electronics.de Git - linux-beck.git/commitdiff
intel_pstate: enable HWP per CPU
authorKristen Carlson Accardi <kristen@linux.intel.com>
Tue, 14 Jul 2015 16:46:23 +0000 (09:46 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 16 Jul 2015 21:51:27 +0000 (23:51 +0200)
HWP previously was only enabled at driver load time, on the boot
CPU, however, HWP must be enabled per package. Move the code to
enable HWP to the cpufreq driver init path so that it will be
called per CPU.

Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Tested-by: David Zhuang <david.zhuang@oracle.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/intel_pstate.c

index 15ada47bb720b710454795d8d7e83c235c2fccfc..763d8f34ab496bb6bd3a2f5d6ded7cb10855cfa8 100644 (file)
@@ -484,12 +484,11 @@ static void __init intel_pstate_sysfs_expose_params(void)
 }
 /************************** sysfs end ************************/
 
-static void intel_pstate_hwp_enable(void)
+static void intel_pstate_hwp_enable(struct cpudata *cpudata)
 {
-       hwp_active++;
        pr_info("intel_pstate: HWP enabled\n");
 
-       wrmsrl( MSR_PM_ENABLE, 0x1);
+       wrmsrl_on_cpu(cpudata->cpu, MSR_PM_ENABLE, 0x1);
 }
 
 static int byt_get_min_pstate(void)
@@ -932,6 +931,10 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
        cpu = all_cpu_data[cpunum];
 
        cpu->cpu = cpunum;
+
+       if (hwp_active)
+               intel_pstate_hwp_enable(cpu);
+
        intel_pstate_get_cpu_pstates(cpu);
 
        init_timer_deferrable(&cpu->timer);
@@ -1245,7 +1248,7 @@ static int __init intel_pstate_init(void)
                return -ENOMEM;
 
        if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp)
-               intel_pstate_hwp_enable();
+               hwp_active++;
 
        if (!hwp_active && hwp_only)
                goto out;