On Tue, Sep 05, 2023 at 09:51:12AM +0800, Meng Li wrote:
+static void amd_pstate_init_prefcore(void) +{
- int cpu, ret;
- u64 highest_perf;
- if (!prefcore)
return;
- for_each_online_cpu(cpu) {
ret = amd_pstate_get_highest_perf(cpu, &highest_perf);
if (ret)
break;
sched_set_itmt_core_prio(highest_perf, cpu);
/* check if CPPC preferred core feature is enabled*/
if (highest_perf == AMD_PSTATE_MAX_CPPC_PERF) {
hw_prefcore = false;
prefcore = false;
return;
}
- }
- /*
* 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);
+}
@@ -1506,6 +1593,8 @@ static int __init amd_pstate_init(void) } }
- amd_pstate_init_prefcore();
- return ret;
global_attr_free:
I'm confused,... you call amd_pstate_init_prefcore() at device_initcall(). Once per boot.
Then it iterates all online CPUs..
But what if you boot with some CPUs offline and bring then online later?