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?