On Tue, Aug 08, 2023 at 04:09:57PM +0800, Meng Li wrote:
+static int amd_pstate_get_highest_perf(int cpu, u64 *highest_perf) +{
int ret;
if (boot_cpu_has(X86_FEATURE_CPPC)) {
u64 cap1;
ret = rdmsrl_safe_on_cpu(cpu, MSR_AMD_CPPC_CAP1, &cap1);
if (ret)
return ret;
WRITE_ONCE(*highest_perf, AMD_CPPC_HIGHEST_PERF(cap1));
} else {
ret = cppc_get_highest_perf(cpu, highest_perf);
}
return (ret);
+}
+static void amd_pstate_init_prefcore(void) +{
- int cpu, ret;
- u64 highest_perf;
- if (no_prefcore)
return;
- for_each_possible_cpu(cpu) {
ret = amd_pstate_get_highest_perf(cpu, &highest_perf);
if (ret)
break;
So what is the intended behaviour when online != possible ?
sched_set_itmt_core_prio(highest_perf, cpu);
- }
- /*
* This code can be run during CPU online under the
* CPU hotplug locks, so sched_set_amd_prefcore_support()
* cannot be called from here. Queue up a work item
* to invoke it.
*/
- schedule_work(&sched_prefcore_work);
+}