powerpc/book3e: More doorbell cleanups. Sample the PIR register
commitb9f1cd71dbf21a91fb7e2336a1d1ff18b97771e5
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 9 Jul 2010 05:29:53 +0000 (9 15:29 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 9 Jul 2010 05:29:53 +0000 (9 15:29 +1000)
tree3c99af81977a06bce82f13ab1f3c748a444c5362
parente3145b387a02d4bf8b8033b1354d413fc0864494
powerpc/book3e: More doorbell cleanups. Sample the PIR register

The doorbells use the content of the PIR register to match messages
from other CPUs. This may or may not be the same as our linux CPU
number, so using that as the "target" is no right.

Instead, we sample the PIR register at boot on every processor
and use that value subsequently when sending IPIs.

We also use a per-cpu message mask rather than a global array which
should limit cache line contention.

Note: We could use the CPU number in the device-tree instead of
the PIR register, as they are supposed to be equivalent. This
might prove useful if doorbells are to be used to kick CPUs out
of FW at boot time, thus before we can sample the PIR. This is
however not the case now and using the PIR just works.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/dbell.h
arch/powerpc/kernel/dbell.c
arch/powerpc/platforms/85xx/smp.c