Messages in this thread | | | Date | Thu, 27 Jan 2022 16:03:46 +0100 | From | Petr Mladek <> | Subject | Re: [PATCH v2 4/4] printk: Drop console_sem during panic |
| |
On Thu 2022-01-27 10:28:53, John Ogness wrote: > On 2022-01-26, Stephen Brennan <stephen.s.brennan@oracle.com> wrote: > > --- a/kernel/printk/printk.c > > +++ b/kernel/printk/printk.c > > @@ -2759,7 +2782,7 @@ void console_unlock(void) > > * flush, no worries. > > */ > > retry = prb_read_valid(prb, next_seq, NULL); > > - if (retry && console_trylock()) > > + if (retry && !abandon_console_lock_in_panic() && console_trylock()) > > As Sergey suggested [0], I would like to see the call to > abandon_console_lock_in_panic() move inside console_trylock(). This will > help to avoid the race between NMI CPU halt and the internal sema.lock > spinlock.
I would prefer if it is done as a followup patch. The code in this patch is still needed. It helps when the non-panic CPU is busy with pushing many pending messages. Also it is a more conservative approach.
Always failing console_trylock() on non-panic CPU makes sense as well. But it affects many more users. It is likely safe because it is trylock. But the entire effect is not fully clear to me. So, I suggest to do it in a separate patch. It might help with bisection.
Best Regards, Petr
| |