Messages in this thread | | | Date | Fri, 25 Jun 2021 14:36:23 +0200 | From | Petr Mladek <> | Subject | Re: [PATCH printk v3 4/6] printk: remove NMI tracking |
| |
On Thu 2021-06-24 13:17:46, John Ogness wrote: > All NMI contexts are handled the same as the safe context: store the > message and defer printing. There is no need to have special NMI > context tracking for this. Using in_nmi() is enough. > > Signed-off-by: John Ogness <john.ogness@linutronix.de> > Reviewed-by: Petr Mladek <pmladek@suse.com> > --- > arch/arm/kernel/smp.c | 2 -- > arch/powerpc/kexec/crash.c | 3 --- > include/linux/hardirq.h | 2 -- > include/linux/printk.h | 12 ------------ > init/Kconfig | 5 ----- > kernel/printk/internal.h | 6 ------ > kernel/printk/printk_safe.c | 37 +------------------------------------ > kernel/trace/trace.c | 2 -- > 8 files changed, 1 insertion(+), 68 deletions(-) > > diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c > index 74679240a9d8..0dd2d733ad62 100644 > --- a/arch/arm/kernel/smp.c > +++ b/arch/arm/kernel/smp.c > @@ -668,9 +668,7 @@ static void do_handle_IPI(int ipinr) > break; > > case IPI_CPU_BACKTRACE: > - printk_nmi_enter(); > nmi_cpu_backtrace(get_irq_regs()); > - printk_nmi_exit();
It looks to me that in_nmi() returns false here. As a result, nmi_cpu_backtrace() might newly call consoles immediately.
If I recall correctly, arm does not have a proper NMI. And this is just some special case of a "normal" IRQ.
And indeed, nmi_enter() is called only from handle_fiq_as_nmi() and it is just a boiler plate.
If I am right, we should replace printk_nmi_enter() with printk_safe_enter_irqsave(flags) or so.
Even better solution might be to call this within nmi_enter()/nmi_exit(). But I am not sure if this is what the arm people want.
Best Regards, Petr
PS: Sigh, I have skipped this patch yesterday because it already had my Reviewed-by. And I missed it before...
| |