Re: [PATCH] printk: stop spining waiter when console resume to flush prb
From: Sergey Senozhatsky
Date: Thu May 06 2021 - 10:12:10 EST
On (21/05/06 23:07), Sergey Senozhatsky wrote:
>
> Can we count the number of lines that we print from the `current` context
> in console_unlock() and if after N messages there is no console_lock waiter
> waiting for the `current` to handover console lock ownership, then create
> one: schedule IRQ work that will become a console lock owner, spin on
> console lock and call console_unlock() once it acquired the ownership.
> That 'artificial' console lock owner will do the same - print N
> messages, if nothing wants to become a console lock owner then it'll
> queue another IRQ work.
Or even simpler
console_unlock()
{
...
if (printed_messages > limit && !console_lock_spinning_disable_and_check()) {
printk_safe_exit_irqrestore(flags);
console_locked = 0;
up_console_sem();
defer_console_output();
return;
}
...
}