Messages in this thread | | | Date | Tue, 31 Jul 2012 11:21:14 -0700 | From | "Paul E. McKenney" <> | Subject | Re: __update_max_tr: rcu_read_lock() used illegally while idle! |
| |
On Tue, Jul 31, 2012 at 02:06:41PM -0400, Steven Rostedt wrote: > On Tue, 2012-07-31 at 10:44 -0700, Paul E. McKenney wrote: > > > OK, I interpret this as excluding NMI handlers, but please let me > > know if I am still being naive. ;-) > > > > You are correct. This is only called where lockdep is called (to trace > enabling of IRQS). Note, that its called before normal irqs are actually > enabled (interrupts are still disabled), this is why it's called outside > of the in_irq() sections, because it is called just before returning > back to process context. > > That said, because NMIs are so difficult, lockdep doesn't record the > disabling (and then enabling) of interrupts when an NMI triggers. Thus, > the irqsoff tracer also does not record NMIs. Which is fine, because > NMIs should not take long to run (we can add other mechanisms to time > NMI length if that is needed), and NMIs should not be enabling > interrupts nor taking any locks. > > >From arch/x86/kernel/entry_64.S: > > /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
Then the patch on my earlier email should do it for you.
Thanx, Paul
| |