Re: [patch] speed up / fix the new generic semaphore code (fix AIM740% regression with 2.6.26-rc1)

From: Linus Torvalds
Date: Thu May 08 2008 - 12:03:44 EST




On Thu, 8 May 2008, Ingo Molnar wrote:
>
> Peter pointed it out that because sem->count is u32, the <= 0 is in fact
> a "== 0" condition - the patch below does that. As expected gcc figured
> out the same thing too so the resulting code output did not change. (so
> this is just a cleanup)

Why don't we just make it do the same thing that the x86 semaphores used
to do: make it signed, and decrement unconditionally. And callt eh
slow-path if it became negative.

IOW, make the fast-path be

spin_lock_irqsave(&sem->lock, flags);
if (--sem->count < 0)
__down();
spin_unlock_irqrestore(&sem->lock, flags);

and now we have an existing known-good implementation to look at?

Rather than making up a totally new and untested thing.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/