On Fri, Aug 17, 2007 at 01:48:09PM -0500, Corey Minyard wrote: > Paul E. McKenney wrote: > >On Fri, Aug 17, 2007 at 09:56:45AM +0200, Peter Zijlstra wrote: > > > >>On Thu, 2007-08-16 at 09:01 -0700, Paul E. McKenney wrote: > >> > >>>On Thu, Aug 16, 2007 at 04:25:07PM +0200, Peter Zijlstra wrote: > >>> > >>>>There seem to be some unbalanced rcu_read_{,un}lock() issues of late, > >>>>how about doing something like this: > >>>> > >>>This will break when rcu_read_lock() and rcu_read_unlock() are invoked > >>>from NMI/SMI handlers -- the raw_local_irq_save() in lock_acquire() will > >>>not mask NMIs or SMIs. > >>> > >>>One approach would be to check for being in an NMI/SMI handler, and > >>>to avoid calling lock_acquire() and lock_release() in those cases. > >>> > >>It seems: > >> > >>#define nmi_enter() do { lockdep_off(); __irq_enter(); } while > >>(0) > >>#define nmi_exit() do { __irq_exit(); lockdep_on(); } while (0) > >> > >>Should make it all work out just fine. (for NMIs at least, /me fully > >>ignorant of the workings of SMIs) > >> > > > >Very good point, at least for NMIs on i386 and x86_64. Can't say that I > >know much about SMIs myself. Or about whatever equivalents to NMIs and > >SMIs might exist on other platforms. :-/ Of course, the other platforms > >could be handled by making the RCU lockdep operate only on i386 and x86_64 > >if required. > > > >Corey, any advice on SMI handlers? Is there something like nmi_enter() > >and nmi_exit() that allows disabing lockdep? > > > You will certainly need something like nmi_enter() and nmi_exit() for > SMIs, since they can occur at any time like NMIs. As far as anything > else, you just have to be extremely careful and remember that it can > occur anyplace. But you already know that :).
So we would need to create an smi_enter() and smi_exit() an place them appropriately. Any preferences? > It would be nice if the PowerPC board vendors would tie watchdog > pretimeouts and some type of timer into the SMI input. It would make > debugging certain problems much easier. And all those Marvell bridge > chips have a watchdog pretimeout and I haven't seen any board vendor > wire it up :(. Can't say that I have much influence over them, but I must agree that debuggability is a very good thing! Thanx, Paul - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/