Re: [PATCH printk v2 12/18] printk: Add kthread for all legacy consoles

From: Petr Mladek
Date: Mon Jul 01 2024 - 10:51:00 EST


On Fri 2024-06-28 16:17:13, John Ogness wrote:
> On 2024-06-28, Petr Mladek <pmladek@xxxxxxxx> wrote:
> > On Fri 2024-06-28 14:28:47, John Ogness wrote:
> >> On 2024-06-28, Petr Mladek <pmladek@xxxxxxxx> wrote:
> >> >> @@ -1494,7 +1508,9 @@ void nbcon_cpu_emergency_exit(void)
> >> >> * to handle it.
> >> >> */
> >> >> do_trigger_flush = true;
> >> >> - if (printing_via_unlock && !is_printk_deferred()) {
> >> >> + if (!force_printkthreads() &&
> >> >
> >> > Is this correct? We still need to flush the messages directly
> >> > when the legacy kthread is not ready yet.
> >>
> >> No! If force_printkthreads() is set, messages will never flush directly
> >> except for console_flush_on_panic().
> >
> > But this is an _emergency_ context! This would be inconsistent with
> > the nbcon consoles where the messages are flushed directly.
> >
> > Is RT sheduling quaranteed when the system reached emergency state?
>
> No.
>
> > In fact, we probably should not check force_printkthreads() here at
> > all. It would be only for NBCON_PRIO_NORMAL context.
>
> On PREEMPT_RT, legacy consoles are not allowed to print from
> non-preemptible contexts because they use spinlocks (rtmutexes).

Ah, I see.

> This is a disadvantage for legacy consoles on PREEMPT_RT. If people want
> a legacy console to gain the reliability attribute on PREEMPT_RT, then
> that console _must_ be converted to nbcon.

Makes sense.

Thanks a lot for explanation.

Best Regards,
Petr