From: Xuewen Yan <xuewen....@unisoc.com> When the policy->related_cpus are all offline, and then bring up one cpu, this time, if the ->online is NULL, the code would update the ->related_cpus with ->cpus, and now ->cpus is only one online cpu, as a result, the ->related_cpus is different from the origion ->related_cpus.
Signed-off-by: Xuewen Yan <xuewen....@unisoc.com> --- drivers/cpufreq/cpufreq.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index d0a3525ce27f..3d512ac463a5 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -1374,8 +1374,10 @@ static int cpufreq_online(unsigned int cpu) if (ret) goto out_exit_policy; - /* related_cpus should at least include policy->cpus. */ - cpumask_copy(policy->related_cpus, policy->cpus); + if (new_policy) { + /* related_cpus should at least include policy->cpus. */ + cpumask_copy(policy->related_cpus, policy->cpus); + } } down_write(&policy->rwsem); -- 2.29.0