Re: printk: preempt_disable with long time resulting in softlockup/RCU stall issues

From: Petr Mladek
Date: Thu Jul 09 2015 - 03:57:05 EST


On Wed 2015-07-08 14:00:17, Steven Rostedt wrote:
> On Wed, 08 Jul 2015 10:35:29 -0700
> Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> > On Wed, 2015-07-08 at 19:04 +0200, Luis R. Rodriguez wrote:
> > > On Wed, Jul 08, 2015 at 05:08:35PM +0800, Gavin Hu wrote:
> > > > Hi,
> > > >
> > > > Yes. We should disable the printk_limit feature when panic to avoid missing
> > > > messages.
> > >
> > > Sounds like you have been looking into it and have a good idea of what you
> > > want to do, why not try it and send some RFC patches ?
> > >
> > > While at it, then we could consider doing different things depending on the
> > > message type. KERN_EMERG would disable preemption, whereas KERN_INFO may not be
> > > so critical to require it.
> >
> > That might be a bit difficult to implement with complete correctness
> > given KERN_EMERG use and continuation lines.
> >
>
> Or just have the current context determine what to do. If printk() was
> called with preemption or interrupts disabled, it flushes the full
> buffer before returning, otherwise it allows the writes to console be
> preempted.

I am afraid that any variant of this approach will make the original
problem even worse. There will be more messages waiting and it will
increase the chance of the softlockup.

I guess that people call printk() with disabled interrupts or
preemption with the naive hope that it will be fast (just store
the message in the ring buffer and come back).

I think that we really need to break the console output when it
takes too long and schedule it somewhere else.

Best Regards,
Petr
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/