On 02-02-21, 17:36, Xuewen Yan wrote: > From: Xuewen Yan <[email protected]> > > 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 <[email protected]> > --- > 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); > + } > }
The driver's ->init() callback is responsible for filling policy->cpus here. -- viresh

