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

From: Waiman Long
Date: Wed Sep 20 2023 - 20:38:02 EST


On 9/20/23 20:05, 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!

That said, running with your patch, I'm seeing bootup hang pretty
close to where init starts when I've had a fair amount of debug
printks go off. It's odd because the lockup detectors don't seem to
fire.
I'll try to debug further, but wanted to give you a heads up. Let me
know if you have any suggestions.

Thanks for testing this patch. This was not merged because Peter thought the merging of atomic console would probably make this not an issue at all. We are close to getting the atomic console merged. Let's see if this is really the case.

Cheers,
Longman