lkml.org 
[lkml]   [2012]   [Jul]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: __update_max_tr: rcu_read_lock() used illegally while idle!
From
Date
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 */

-- Steve




\
 
 \ /
  Last update: 2012-07-31 21:41    [W:0.091 / U:0.152 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site