From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: Tue, 24 Aug 2010 08:01:25 +1000
On Mon, 2010-08-23 at 15:44 +0200, Arnd Bergmann wrote:
quoted
* Alpha has an optimization for the uniprocessor case, where the atomic
instructions get turned into nonatomic additions. The spinlock based
version uses no locks on UP but disables interrupts for reasons I don't
understand (nothing running at interrupt time should try to access an rwsem).
Should the generic version do the same as Alpha?
I've seen drivers in the past do trylocks at interrupt time ... tho I
agree it sucks.
Recently there was a thread where this was declared absolutely illegal.
Maybe it was allowed, or sort-of worked before, and that's why it's
accounted for with IRQ disables in some implementations. I don't
know.