Re: [PATCH v2] locking/semaphore: Use wake_q to wake up processes outside lock critical section

From: Peter Zijlstra
Date: Thu Sep 21 2023 - 16:57:55 EST


On Wed, Sep 20, 2023 at 05:05:56PM -0700, John Stultz wrote:
> On Fri, Sep 9, 2022 at 12:28 PM Waiman Long <longman@xxxxxxxxxx> wrote:
> >
> > It was found that a circular lock dependency can happen with the
> > following locking sequence:
> >
> > +--> (console_sem).lock --> &p->pi_lock --> &rq->__lock --+
> > | |
> > +---------------------------------------------------------+
> >
> > The &p->pi_lock --> &rq->__lock sequence is very common in all the
> > task_rq_lock() calls.
>
> Thanks for sending this out! I've been hitting these lockdep warningns
> a lot recently, particularly if I have any debug printks/WARN_ONs in
> the scheduler that trip, so I'm eager to get a fix for this!

https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/log/?h=debug/experimental

and use with: earlyprintk=serial,ttyS0,115200 force_early_printk, or
somesuch.

I could not have done perf or much of the sched patches without it.