tools/power x86_energy_perf_policy: Enhance HWP enable
authorLen Brown <len.brown@intel.com>
Fri, 19 Sep 2025 18:07:02 +0000 (14:07 -0400)
committerLen Brown <len.brown@intel.com>
Fri, 26 Sep 2025 03:12:01 +0000 (23:12 -0400)
On enabling HWP, preserve the reserved bits in MSR_PM_ENABLE.

Also, skip writing the MSR_PM_ENABLE if HWP is already enabled.

Signed-off-by: Len Brown <len.brown@intel.com>
tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c

index 2bf0f87..70d7cdf 100644 (file)
@@ -1166,13 +1166,18 @@ int update_hwp_request_pkg(int pkg)
 
 int enable_hwp_on_cpu(int cpu)
 {
-       unsigned long long msr;
+       unsigned long long old_msr, new_msr;
+
+       get_msr(cpu, MSR_PM_ENABLE, &old_msr);
+
+       if (old_msr & 1)
+               return 0;       /* already enabled */
 
-       get_msr(cpu, MSR_PM_ENABLE, &msr);
-       put_msr(cpu, MSR_PM_ENABLE, 1);
+       new_msr = old_msr | 1;
+       put_msr(cpu, MSR_PM_ENABLE, new_msr);
 
        if (verbose)
-               printf("cpu%d: MSR_PM_ENABLE old: %d new: %d\n", cpu, (unsigned int) msr, 1);
+               printf("cpu%d: MSR_PM_ENABLE old: %llX new: %llX\n", cpu, old_msr, new_msr);
 
        return 0;
 }