Re: [PATCH RT] kernel/printk: Don't try to print from IRQ/NMI region

From: Steven Rostedt
Date: Fri May 27 2016 - 10:12:58 EST


On Fri, 27 May 2016 15:58:12 +0200
Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote:

> On -RT we try to acquire sleeping locks which might lead to warnings
> from lockdep or a warn_on() from spin_try_lock() (which is a rtmutex on
> RT).
> We don't print in general from a IRQ off region so we should not try
> this via console_unblank() / bust_spinlocks() as well.
>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
> ---
> kernel/printk/printk.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1502,6 +1502,11 @@ static void call_console_drivers(int lev
> if (!console_drivers)
> return;
>
> + if (IS_ENABLED(CONFIG_PREEMPT_RT_BASE)) {
> + if (in_irq() || in_nmi())
> + return;
> + }
> +

We use to have a patch where a console could flag itself as atomic.
That is, that it doesn't call any sleeping locks. What happened to that.

IIRC, the video console was one such console. Otherwise, we lose out on
backtraces in irq context.

-- Steve

> migrate_disable();
> for_each_console(con) {
> if (exclusive_console && con != exclusive_console)