On Thu 2021-05-06 23:07:19, Sergey Senozhatsky wrote:
Thanks for Cc-ing PetrLuo, please, correct me if I am wrong.
On (21/05/06 15:39), Petr Mladek wrote:
Many printk messages might get accumulated when consoles were suspended.If we have a lot of pending messages in the logbuf, then there is
They are proceed when console_unlock() is called in resume_console().
The possibility to pass the console lock owner was added to reduce the risk
of softlockup when too many messages were handled in an atomic context.
Now, resume_console() is always in a preemptible context that is safe
to handle all accumulated messages. The possibility to pass the console
lock owner actually makes things worse. The new owner might be in an atomic
context and might cause softlockup when processing all messages accumulated
when the console was suspended.
Create new console_unlock_preemptible() that will not allow to pass
the console lock owner. As a result, all accumulated messages will
be proceed in the safe preemptible process.
something chatty - some context (task, irq) or maybe several contexts.
And those contexts can continue adding messages, while we print them
_exclusively_ from preemptible context only. without ever throttling down
printk() callers - something that console_owner spinning and handover
does for us. And those printk() callers can even preempt
console_unlock_preemptible() and cause delays and lost messages.
This patch a about one well defined scenario. The messages are
accumulated between suspend_console() and resume_console().
It is "small" part of the system hibernation. And we need
to get them out now. There might be many if something special
was debugged.
I am pretty sure that Luo did not see any flood of messages:
+ Flood in more contexts would be balanced by switching
the console_owner.
+ Flood in one context would be naturally throttled because
this context will become the console_owner.
In each case, these messages would be generated after
console_resume(). Luo's original patch was explicitly talking
about messages accumulated during the suspend.
Luo, could you please provide some log showing the problem?
Best Regards,
Petr
.