| From | Josh Don <> | Date | Fri, 23 Apr 2021 18:22:52 -0700 | Subject | Re: [PATCH 04/19] sched: Prepare for Core-wide rq->lock |
| |
Hi Peter,
> --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -186,12 +186,37 @@ int sysctl_sched_rt_runtime = 950000; > > void raw_spin_rq_lock_nested(struct rq *rq, int subclass) > { > - raw_spin_lock_nested(rq_lockp(rq), subclass); > + raw_spinlock_t *lock; > + > + if (sched_core_disabled()) {
Nothing to stop sched_core from being enabled right here? Leading to us potentially taking the wrong lock.
> + raw_spin_lock_nested(&rq->__lock, subclass); > + return; > + } > + > + for (;;) { > + lock = rq_lockp(rq); > + raw_spin_lock_nested(lock, subclass); > + if (likely(lock == rq_lockp(rq))) > + return; > + raw_spin_unlock(lock); > + } > }
|