From: Jamie Lokier on 1 Apr 2010 05:50 David Howells wrote: > Russell King <rmk(a)arm.linux.org.uk> wrote: > > We use the standard generic kernel implementation. Is x86 different? ;) > > The optimised fast paths used on x86 rwsems don't disable interrupts. Any reason not to use the same technique for all the archs - plus the trick used in arch/armkernel/entry-armv.S:__kuser_cmpxchg for those archs which don't have atomic instructions or ll/sc? If the problem here is _only_ semaphores, and the above might make semaphores faster anyway, perhaps it's a solution. -- Jamie -- 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: David Howells on 1 Apr 2010 07:00 Jamie Lokier <jamie(a)shareable.org> wrote: > Any reason not to use the same technique for all the archs It depends what atomic instructions you have available. David -- 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: Matthew Wilcox on 1 Apr 2010 07:30 On Thu, Apr 01, 2010 at 10:41:11AM +0100, Jamie Lokier wrote: > David Howells wrote: > > Russell King <rmk(a)arm.linux.org.uk> wrote: > > > We use the standard generic kernel implementation. Is x86 different? ;) > > > > The optimised fast paths used on x86 rwsems don't disable interrupts. > > Any reason not to use the same technique for all the archs - plus the > trick used in arch/armkernel/entry-armv.S:__kuser_cmpxchg for those > archs which don't have atomic instructions or ll/sc? Assuming you're talking about the __LINUX_ARM_ARCH__ < 6 + CONFIG_MMU case, then this only works for uniprocessor machines. > If the problem here is _only_ semaphores, and the above might make > semaphores faster anyway, perhaps it's a solution. You trade off a bit of overhead in the semaphore path for a bit of overhead in the interrupt path. We probably take more sempahores than we do interrupts, so it's probably worthwhile. Still, cmpxchg() needs to be SMP-safe. Realistically, this isn't something that can be done in generic code. It has to be done in arch-specific code. -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- 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: Christoph Lameter on 1 Apr 2010 12:10 On Thu, 1 Apr 2010, Benjamin Herrenschmidt wrote: > On Wed, 2010-03-31 at 16:42 -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? > > The problem isn't about checks. Those -will- enable IRQs before it's > safe to do so, the checks are perfectly right to point it out, it -is- a > bug waiting to happen on some random HW. Taking sems in single threaded mode is pretty pointless. Those functions could just return success until the scheduler is actually able to do something with threads. -- 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: Christoph Lameter on 1 Apr 2010 12:10
On Thu, 1 Apr 2010, David Howells wrote: > > Can we provide a kmem_cache_create_early()? One that takes no locks and gets > cleaned up with the other __init stuff? Sure. We can also check if we are early in boot in kmem_cache_create and just not take the semaphores (which are useless if we are single threaded). -- 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/ |