amd-pstate fixes for 6.11-rc

- Fix to unit test coverage
 - Fix bug with enabling CPPC on hetero designs
 - Fix uninitialized variable
 -----BEGIN PGP SIGNATURE-----
 
 iQJOBAABCgA4FiEECwtuSU6dXvs5GA2aLRkspiR3AnYFAmbM5LcaHG1hcmlvLmxp
 bW9uY2llbGxvQGFtZC5jb20ACgkQLRkspiR3AnbLqhAAyIjkC40c6Xlu58GsiJmv
 LMCBDcDNyP3DERxE5zVCyn4XVfpFHmN4au5mQJUyyMAo4o/HweEP12g4kB7JssKo
 POjGlc7HaRrJ70ItdV7rMJfXFCIrObjzmR5BHKBWwJTLVAjmM09zDzPZdlgei2SG
 Gjpuz5F8mOXv6GxZoxvp8CE0RN2c2HxdTJMDXdwZn7d3i7VbyhkWUmKxI8RfLFDI
 1+GB/PzIOTyina2p5Yzlqq1NUkxQJHugw8IUMJ5Z6elshQLoInBZBvHP3xwPeaKa
 lfxHb/vdYdtmP+whD6d+6rrNHhi1X296qEkZSHjmXXP90WjlbB+mSLk+qJ18fX3M
 303HvKPswUW+/i0dBRy07yntpVDxZu+NLihysXo2CsotsbWOFY2UTLi8L6WgTQ+c
 XAwJQfQwZ+H6tGK/c+5nj+m7qYXGCVPSbg8+1gnVkI+GawttWUslrboBRnJnGbwm
 zB535TXwDh5rB+SqOXQLcpE6lHKWBra5N809ZHaIx8HteNu2XanTBcfBUYDLXDs5
 jqP38E1oezIJl3WQRdqLeWrykhCiLCKFZCwScIbId49al1mwMu2PBDfWj7gk4nZo
 psPLvuMPXkEROawsmoMqgRYdkl/WoZwu33RpDLKLaMSUERVrxZGkreazVZxu8SfU
 uIVSJTBGPWB6FW2dX6XDzt8=
 =5eXu
 -----END PGP SIGNATURE-----

Merge tag 'amd-pstate-v6.11-2024-08-26' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/superm1/linux

Merge amd-pstate driver fixes for 6.11-rc6 from Mario Limonciello:

"amd-pstate fixes for 6.11-rc
 - Fix to unit test coverage
 - Fix bug with enabling CPPC on hetero designs
 - Fix uninitialized variable"

* tag 'amd-pstate-v6.11-2024-08-26' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/superm1/linux:
  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()
This commit is contained in:
Rafael J. Wysocki 2024-08-27 20:40:10 +02:00
commit 15d75184a8
2 changed files with 10 additions and 7 deletions

View File

@ -160,14 +160,17 @@ static void amd_pstate_ut_check_perf(u32 index)
lowest_perf = AMD_CPPC_LOWEST_PERF(cap1);
}
if ((highest_perf != READ_ONCE(cpudata->highest_perf)) ||
(nominal_perf != READ_ONCE(cpudata->nominal_perf)) ||
if (highest_perf != READ_ONCE(cpudata->highest_perf) && !cpudata->hw_prefcore) {
pr_err("%s cpu%d highest=%d %d highest perf doesn't match\n",
__func__, cpu, highest_perf, cpudata->highest_perf);
goto skip_test;
}
if ((nominal_perf != READ_ONCE(cpudata->nominal_perf)) ||
(lowest_nonlinear_perf != READ_ONCE(cpudata->lowest_nonlinear_perf)) ||
(lowest_perf != READ_ONCE(cpudata->lowest_perf))) {
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
pr_err("%s cpu%d highest=%d %d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n",
__func__, cpu, highest_perf, cpudata->highest_perf,
nominal_perf, cpudata->nominal_perf,
pr_err("%s cpu%d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n",
__func__, cpu, nominal_perf, cpudata->nominal_perf,
lowest_nonlinear_perf, cpudata->lowest_nonlinear_perf,
lowest_perf, cpudata->lowest_perf);
goto skip_test;

View File

@ -321,7 +321,7 @@ static inline int pstate_enable(bool enable)
return 0;
for_each_present_cpu(cpu) {
unsigned long logical_id = topology_logical_die_id(cpu);
unsigned long logical_id = topology_logical_package_id(cpu);
if (test_bit(logical_id, &logical_proc_id_mask))
continue;
@ -692,7 +692,7 @@ static int amd_pstate_cpu_boost_update(struct cpufreq_policy *policy, bool on)
struct amd_cpudata *cpudata = policy->driver_data;
struct cppc_perf_ctrls perf_ctrls;
u32 highest_perf, nominal_perf, nominal_freq, max_freq;
int ret;
int ret = 0;
highest_perf = READ_ONCE(cpudata->highest_perf);
nominal_perf = READ_ONCE(cpudata->nominal_perf);