Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pm-6.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull power management fixes from Rafael Wysocki:
"These fix three issues in the amd-pstate cpufreq driver.

Specifics:

- Remove checks for highest performance match on preferred cores when
updating preferred core ranking in amd-pstate (Mario Limonciello)

- Make amd-pstate call topology_logical_package_id() instead of
logical_die_id() to get a socked ID for a CPU (Gautham Shenoy)

- Fix uninitialized variable in amd_pstate_cpu_boost_update() (Dan
Carpenter)"

* tag 'pm-6.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
cpufreq/amd-pstate-ut: Don't check for highest perf matching on prefcore
cpufreq/amd-pstate: Use topology_logical_package_id() instead of logical_die_id()
cpufreq: amd-pstate: Fix uninitialized variable in amd_pstate_cpu_boost_update()

+10 -7
+8 -5
drivers/cpufreq/amd-pstate-ut.c
··· 160 160 lowest_perf = AMD_CPPC_LOWEST_PERF(cap1); 161 161 } 162 162 163 - if ((highest_perf != READ_ONCE(cpudata->highest_perf)) || 164 - (nominal_perf != READ_ONCE(cpudata->nominal_perf)) || 163 + if (highest_perf != READ_ONCE(cpudata->highest_perf) && !cpudata->hw_prefcore) { 164 + pr_err("%s cpu%d highest=%d %d highest perf doesn't match\n", 165 + __func__, cpu, highest_perf, cpudata->highest_perf); 166 + goto skip_test; 167 + } 168 + if ((nominal_perf != READ_ONCE(cpudata->nominal_perf)) || 165 169 (lowest_nonlinear_perf != READ_ONCE(cpudata->lowest_nonlinear_perf)) || 166 170 (lowest_perf != READ_ONCE(cpudata->lowest_perf))) { 167 171 amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL; 168 - pr_err("%s cpu%d highest=%d %d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n", 169 - __func__, cpu, highest_perf, cpudata->highest_perf, 170 - nominal_perf, cpudata->nominal_perf, 172 + pr_err("%s cpu%d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n", 173 + __func__, cpu, nominal_perf, cpudata->nominal_perf, 171 174 lowest_nonlinear_perf, cpudata->lowest_nonlinear_perf, 172 175 lowest_perf, cpudata->lowest_perf); 173 176 goto skip_test;
+2 -2
drivers/cpufreq/amd-pstate.c
··· 321 321 return 0; 322 322 323 323 for_each_present_cpu(cpu) { 324 - unsigned long logical_id = topology_logical_die_id(cpu); 324 + unsigned long logical_id = topology_logical_package_id(cpu); 325 325 326 326 if (test_bit(logical_id, &logical_proc_id_mask)) 327 327 continue; ··· 692 692 struct amd_cpudata *cpudata = policy->driver_data; 693 693 struct cppc_perf_ctrls perf_ctrls; 694 694 u32 highest_perf, nominal_perf, nominal_freq, max_freq; 695 - int ret; 695 + int ret = 0; 696 696 697 697 highest_perf = READ_ONCE(cpudata->highest_perf); 698 698 nominal_perf = READ_ONCE(cpudata->nominal_perf);