On Fri, Apr 16, 2010 at 04:54:51PM +1000, Benjamin Herrenschmidt wrote: > On Thu, 2010-04-15 at 07:28 -0700, Paul E. McKenney wrote: > > > > Of course, with call_rcu_sched(), the corresponding RCU read-side > > critical > > sections are non-preemptible. Therefore, in CONFIG_PREEMPT_RT, these > > read-side critical sections must use raw spinlocks. > > > > Can the code in question accommodate these restrictions? > > What we protect against is always code that hard-disable IRQs (though > there seem to be a bug in the hugepages code there...). Would that > work ? >From the perspective of call_rcu_sched() and synchronize_sched(), the following things mark RCU-sched read-side critical sections: 1. rcu_read_lock_sched() and rcu_read_unlock_sched(). 2. preempt_disable() and preempt_enable(), along with anything else that disables preemption. 3. local_bh_disable() and local_bh_enable(), along with anything else that disables bottom halves. 4. local_irq_disable() and local_irq_enable(), along wiht anything else that disables hardirqs. 5. Handlers for NMIs. So I believe that in this case call_rcu_sched() is your friend. ;-) Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html