powerpc: Make the irq reverse mapping radix tree lockless
authorSebastien Dugue <sebastien.dugue@bull.net>
Thu, 4 Sep 2008 12:37:08 +0000 (22:37 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 15 Sep 2008 18:08:45 +0000 (11:08 -0700)
commit150c6c8fecf6daaf68c2987ba2b6b259baefdff2
treed624972d02c6e6da7966077b006b39a88ef5059b
parent967e012ef306e99cfddcd7423f37414e6b568361
powerpc: Make the irq reverse mapping radix tree lockless

The radix trees used by interrupt controllers for their irq reverse
mapping (currently only the XICS found on pSeries) have a complex
locking scheme dating back to before the advent of the lockless radix
tree.

This takes advantage of the lockless radix tree and of the fact that
the items of the tree are pointers to a static array (irq_map)
elements which can never go under us to simplify the locking.

Concurrency between readers and writers is handled by the intrinsic
properties of the lockless radix tree.  Concurrency between writers is
handled with a global mutex.

Signed-off-by: Sebastien Dugue <sebastien.dugue@bull.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/irq.c