Re: [PATCH v4 2/2] tty/sysrq: Dump printk ring buffer messages via sysrq

From: Sreenath Vijayan
Date: Mon Feb 26 2024 - 03:09:01 EST


On Wed, Feb 14, 2024 at 04:42:36PM +0530, Sreenath Vijayan wrote:
> On Wed, Feb 07, 2024 at 04:09:34PM +0100, Petr Mladek wrote:
> > Idea:
> >
> > Using console_trylock() actually might be more reliable than
> > workqueues. console_trylock() might fail repeatably when:
> >
> > + the console_lock() owner is stuck. But workqueues would fail
> > in this case as well.
> >
> > + there is a flood of messages. In this case, replaying
> > the log would not help much.
> >
> > Another advantage is that the consoles would be flushed
> > in sysrq context with the manipulated console_loglevel.
> >
> > Best Regards,
> > Petr
>
> Yes, this seems to work well from interrupt context when the
> console lock owner is not stuck. We can also manipulate
> the console_loglevel. Something like this:
>
> //in printk.c
> void console_replay_all(void)
> {
> if (console_trylock()) {
> __console_rewind_all();
> console_unlock();
> }
> }
>
> //in sysrq.c
> static void sysrq_handle_dmesg_dump(u8 key)
> {
> int orig_log_level = console_loglevel;
> console_loglevel = CONSOLE_LOGLEVEL_DEFAULT;
> console_replay_all();
> console_loglevel = orig_log_level;
> }
>
>
> The downside I see is that the user may have to hit the
> key multiple times or give up trying if the console lock
> owner is busy at the time of key press. This information
> should probably be updated in the documentation.
>
> Please let me know your opinion.
>
> Regards,
> Sreenath

Hi,

Kindly let me know your opinion on the suggested changes.

Regards,
Sreenath