On Fri, 30 Nov 2012, Paul E. McKenney wrote: > On Fri, Nov 30, 2012 at 04:15:09PM -0800, Frank Rowand wrote: > > > Possible unsafe locking scenario: > > > > > > CPU0 > > > ---- > > > lock(rcu_kthread_wq.lock.lock.wait_lock); > > > <Interrupt> > > > lock(rcu_kthread_wq.lock.lock.wait_lock); > > ??? > > These are all spin_lock_irqsave() calls, so how would the interrupt > happen? Or do these need to be changed to raw_spinlock_t? > > Hmmm... In include/linux/wait.h, doesn't struct __wait_queue_head > need to have raw_spinlock_t rather than spinlock_t? Please try that > change and let me know what happens. No. We can't do that. The reason is that some wait queue wakeups have callbacks which can't be called with interrupts disabled on RT. IIRC, I restructured the RCU code in 3.0-rt so it won't be affected by this. I'll have a look. Thanks, Thomas -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html