Re: [PATCH 2/5] sched/topology: Wrappers for sched_domains_mutex

From: Juri Lelli
Date: Wed Mar 05 2025 - 05:53:49 EST


On 04/03/25 11:01, Waiman Long wrote:
> On 3/4/25 10:05 AM, Waiman Long wrote:
> > > --- a/kernel/sched/topology.c
> > > +++ b/kernel/sched/topology.c
> > > @@ -6,6 +6,19 @@
> > >   #include <linux/bsearch.h>
> > >     DEFINE_MUTEX(sched_domains_mutex);
> > > +#ifdef CONFIG_SMP
> > > +void sched_domains_mutex_lock(void)
> > > +{
> > > +    mutex_lock(&sched_domains_mutex);
> > > +}
> > > +void sched_domains_mutex_unlock(void)
> > > +{
> > > +    mutex_unlock(&sched_domains_mutex);
> > > +}
> > > +#else
> > > +void sched_domains_mutex_lock(void) { }
> > > +void sched_domains_mutex_unlock(void) { }
> > > +#endif
> > >     /* Protected by sched_domains_mutex: */
> > >   static cpumask_var_t sched_domains_tmpmask;
> > > @@ -2791,7 +2804,7 @@ void partition_sched_domains_locked(int
> > > ndoms_new, cpumask_var_t doms_new[],
> > >   void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[],
> > >                    struct sched_domain_attr *dattr_new)
> > >   {
> > > -    mutex_lock(&sched_domains_mutex);
> > > +    sched_domains_mutex_lock();
> > >       partition_sched_domains_locked(ndoms_new, doms_new, dattr_new);
> > > -    mutex_unlock(&sched_domains_mutex);
> > > +    sched_domains_mutex_unlock();
> > >   }
> >
> > There are two "lockdep_assert_held(&sched_domains_mutex);" statements in
> > topology.c file and one in cpuset.c. That can be problematic in the
> > non-SMP case. Maybe another wrapper to do the assert?
>
> Ignore that as both topology.c and cpuset.c will only be compiled if
> CONFIG_SMP is defined. IOW, you don't need the the "#ifdef CONFIG_SMP"
> above.

Indeed!

Thanks,
Juri