Messages in this thread | | | Date | Wed, 23 Feb 2011 13:40:37 -0600 (CST) | From | Christoph Lameter <> | Subject | Re: [PATCH RFC tip/core/rcu 11/11] rcu: move TREE_RCU from softirq to kthread |
| |
On Wed, 23 Feb 2011, Peter Zijlstra wrote:
> On Wed, 2011-02-23 at 13:19 -0600, Christoph Lameter wrote: > > > this_cpu_inc is already percpu atomic. On x86 it is an instruction that > > cannot be interrupted nor preempted while in progress. > > On x86, yes, but is this true for all architectures? I guess the > fallback is implemented with local_irq_disable() which might be good > enough for some but not for NMI usage.
Fallback is to do preempt_disable(). But you can also disable interrupts on fallback by putting an irqsafe_ prefix before them. Its just more expensive and typically not needed.
There is no way to create an nmi safe per cpu atomicity emulation as far as I can tell. It is possible to check at compile time if the arch has per cpu atomic instructions available via CONFIG_CMPXCHG_LOCAL which allows optimized per cpu atomic use for arches that satisfy the safety requirements.
| |