[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140210170526.GP9987@twins.programming.kicks-ass.net>
Date: Mon, 10 Feb 2014 18:05:26 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Dave Hansen <dave.hansen@...ux.intel.com>
Cc: mingo@...nel.org, hpa@...or.com, linux-kernel@...r.kernel.org,
tglx@...utronix.de, dzickus@...hat.com,
linux-tip-commits@...r.kernel.org
Subject: Re: [tip:perf/core] x86/nmi: Push duration printk() to irq context
On Mon, Feb 10, 2014 at 08:45:16AM -0800, Dave Hansen wrote:
> On 02/10/2014 05:29 AM, tip-bot for Peter Zijlstra wrote:
> > x86/nmi: Push duration printk() to irq context
> >
> > Calling printk() from NMI context is bad (TM), so move it to IRQ
> > context.
>
> Bad since the I/O device that we're doing it to may be slow and make the
> NMI painfully long?
>
> I can see why it might be a bad idea, but I'm unsold that it is
> *universally* a bad idea.
printk() takes locks, NMI interrupts printk lock and tries to printk.
you get to keep pieces.
> > In doing so we slightly change (probably wreck) the debugfs
> > nmi_longest_ns thingy, in that it doesn't update to reflect the
> > longest, nor does writing to it reset the count.
>
> The reason I coded this up was that NMIs were firing off so fast that
> nothing else was getting a chance to run. With this patch, at least the
> printk() would come out and I'd have some idea what was going on.
Ah indeed, in which case you don't get to run the irq_work. But you
really shouldn't do printk() from NMI and esp. not in a case that
regularly and reliably triggers for everyone and is not a hardware
error.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists