On Fri, Aug 16, 2024 at 08:27:26AM +0000, Chen Ridong wrote: > Both fetch_xcpus and user_xcpus functions are used to retrieve the value > of exclusive_cpus. If exclusive_cpus is not set, cpus_allowed is the > implicit value used as exclusive in a local partition. I can not imagine > a scenario where effective_xcpus is not empty when exclusive_cpus is > empty. Therefore, I suggest removing the fetch_xcpus function. > > Signed-off-by: Chen Ridong <chenridong@xxxxxxxxxx> > --- > kernel/cgroup/cpuset.c | 13 +++---------- > 1 file changed, 3 insertions(+), 10 deletions(-) > > diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c > index fdd5346616d3..8be0259065f5 100644 > --- a/kernel/cgroup/cpuset.c > +++ b/kernel/cgroup/cpuset.c > @@ -771,13 +771,6 @@ static inline bool xcpus_empty(struct cpuset *cs) > cpumask_empty(cs->exclusive_cpus); > } > > -static inline struct cpumask *fetch_xcpus(struct cpuset *cs) > -{ > - return !cpumask_empty(cs->exclusive_cpus) ? cs->exclusive_cpus : > - cpumask_empty(cs->effective_xcpus) ? cs->cpus_allowed > - : cs->effective_xcpus; > -} > - > /* > * cpusets_are_exclusive() - check if two cpusets are exclusive > * > @@ -785,8 +778,8 @@ static inline struct cpumask *fetch_xcpus(struct cpuset *cs) > */ > static inline bool cpusets_are_exclusive(struct cpuset *cs1, struct cpuset *cs2) > { > - struct cpumask *xcpus1 = fetch_xcpus(cs1); > - struct cpumask *xcpus2 = fetch_xcpus(cs2); > + struct cpumask *xcpus1 = user_xcpus(cs1); > + struct cpumask *xcpus2 = user_xcpus(cs2); > > if (cpumask_intersects(xcpus1, xcpus2)) > return false; > @@ -2585,7 +2578,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, > invalidate = true; > rcu_read_lock(); > cpuset_for_each_child(cp, css, parent) { > - struct cpumask *xcpus = fetch_xcpus(trialcs); > + struct cpumask *xcpus = user_xcpus(trialcs); > > if (is_partition_valid(cp) && > cpumask_intersects(xcpus, cp->effective_xcpus)) { > -- > 2.34.1 > Hi, In update_cpumask too fetch_xcpus is used. You may want to remove it from there too. diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 40ec4abaf440..1b4ee6403de6 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -2587,7 +2587,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, invalidate = true; rcu_read_lock(); cpuset_for_each_child(cp, css, parent) { - struct cpumask *xcpus = fetch_xcpus(trialcs); + struct cpumask *xcpus = user_xcpus(trialcs); if (is_partition_valid(cp) && cpumask_intersects(xcpus, cp->effective_xcpus)) { Reviewed-by: Saket Kumar Bhaskar <skb99@xxxxxxxxxxxxx> Thanks, Saket