From: Christoph Lameter on 31 Mar 2010 17:50 On Wed, 31 Mar 2010, Matthew Wilcox wrote: > On Wed, Mar 31, 2010 at 02:05:00PM -0700, H. Peter Anvin wrote: > > What I note is that lib/rwsem-spinlock.c seems to be rather inconsistent > > in its use of spin_lock_irqsave/spin_lock_irqrestore versus > > spin_lock_irq/spin_unlock_irq... in fact, __down_read is the *only* > > place where we use the latter as opposed to the former. > > > > Is that a bug? If so, it would certainly explain this behavior. > > It's based on down_read() and down_write() not being callable from > interrupt context, or with interrupts disabled (since they can sleep). > up_read(), up_write(), down_read_trylock(), down_write_trylock(), > downgrade_write() can all be called from interrupt context since they > cannot sleep. Do not run the checks while we are in a single threaded context? I thought we had some dynamic code patching thingamy that could change those when we go to smp mode? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Russell King on 31 Mar 2010 18:00 On Wed, Mar 31, 2010 at 04:42:25PM -0500, Christoph Lameter wrote: > Do not run the checks while we are in a single threaded context? > > I thought we had some dynamic code patching thingamy that could change > those when we go to smp mode? You have to remember that on embedded architectures, such as ARM, where XIP is supported we can't change the text segment at run time - which means dynamic code patching won't work. However, the kernel should still work in such situations. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: H. Peter Anvin on 31 Mar 2010 18:10 On 03/31/2010 02:54 PM, Russell King wrote: > On Wed, Mar 31, 2010 at 04:42:25PM -0500, Christoph Lameter wrote: >> Do not run the checks while we are in a single threaded context? >> >> I thought we had some dynamic code patching thingamy that could change >> those when we go to smp mode? > > You have to remember that on embedded architectures, such as ARM, > where XIP is supported we can't change the text segment at run time - > which means dynamic code patching won't work. > > However, the kernel should still work in such situations. > The question still remains what the incremental cost is of doing irqsave/irqrestore. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Russell King on 31 Mar 2010 18:40 On Wed, Mar 31, 2010 at 02:57:20PM -0700, H. Peter Anvin wrote: > On 03/31/2010 02:54 PM, Russell King wrote: > > On Wed, Mar 31, 2010 at 04:42:25PM -0500, Christoph Lameter wrote: > >> Do not run the checks while we are in a single threaded context? > >> > >> I thought we had some dynamic code patching thingamy that could change > >> those when we go to smp mode? > > > > You have to remember that on embedded architectures, such as ARM, > > where XIP is supported we can't change the text segment at run time - > > which means dynamic code patching won't work. > > > > However, the kernel should still work in such situations. > > > > The question still remains what the incremental cost is of doing > irqsave/irqrestore. Compared to irq disable/enable, it wouldn't be much higher; saving can be done by a direct register to register move, so that should be relatively cheap. The restore may be a little bit more depending on the CPU arch version, but not significant. So there shouldn't be a problem from ARM POV to switch to using irqsave/irqrestore. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Benjamin Herrenschmidt on 31 Mar 2010 18:40
On Wed, 2010-03-31 at 14:57 -0700, H. Peter Anvin wrote: > > The question still remains what the incremental cost is of doing > irqsave/irqrestore. The only other option is to have local_irq_enable() check a global (system_state ?) before enabling. Almost as gross ... Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |