Re: WARN_ON() in netconsole with PREEMPT_RT

From: Steven Rostedt
Date: Sun Nov 11 2018 - 21:01:10 EST


On Sun, 11 Nov 2018 21:16:00 +0100
Oleksandr Natalenko <oleksandr@xxxxxxxxxxxxxx> wrote:


> > This is a v4.19.1-rt3-based kernel.
> >
> > The WARN_ON() is:
> >
> > 362 void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
> > 363 {
> > â
> > 372 WARN_ON_ONCE(!irqs_disabled());
> > â
> >
> > If that matters, I have "threadirqs" passed to the kernel.
> >
> > Netconsole seems to work even after this warning. Is this OK/expected?
> >
> > Thanks.
>
> Oh, I see that write_msg() calls netpoll_send_udp() under
> spin_lock_irqsave(), but in PREEMPT_RT this, AFAIK, does not disable
> interrupts.
>
> So, the real question here is whether the interrupts should be indeed
> disabled. And if so, -rt should replace spin_lock_irqsave() call there
> with what? local_irq_save()? and get rid of the warning?
>

Why do we care if interrupts are disabled with PREEMPT_RT here?

printk() itself has a lot of issues with PREEMPT_RT that we are working
on dealing with. Right now netconsole is actually at the end of that
todo list.

-- Steve