Messages in this thread | | | Date | Mon, 12 Oct 2009 11:38:44 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [this_cpu_xx V5 19/19] SLUB: Experimental new fastpath w/o interrupt disable |
| |
* Christoph Lameter (cl@linux-foundation.org) wrote: > On Mon, 12 Oct 2009, Mathieu Desnoyers wrote: > > > > If I just enable interrupts there then the preempt check will not be > > > done and we may miss a scheduling point. > > > > > > > That's why you should do: > > > > local_irq_save() > > preempt_enable_no_resched() > > ... > > local_irq_restore() > > preempt_check_resched() > > What is the difference then to > > local_irq_save() > > ... > > local_irq_enable(); > preempt_enable(); > > ?
local_irq_save() preempt_enable_no_resched() <- barrier() ... local_irq_enable() preempt_check_resched()
vs
local_irq_save() ... local_irq_enable(); preempt_enable(); <- barrier()
In the first scenario, the compiler barrier is at the beginning of the slow path function, which should impose less restrictions on the compiler optimizations.
Mathieu
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |