sparc32, sun4d: Implemented SMP IPIs support for SUN4D machines
authorDaniel Hellstrom <daniel@gaisler.com>
Mon, 2 May 2011 00:08:54 +0000 (00:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 May 2011 20:07:44 +0000 (13:07 -0700)
commit55dd23eca666876e6028aa35d5e391cfced54871
tree7f1006b68c8f04f4590c5442e5822b71d87e761d
parentecbc42b70acbc6327adefe9635db93fcf62bf59d
sparc32, sun4d: Implemented SMP IPIs support for SUN4D machines

The sun4d does not seem to have a distingstion between soft and hard
IRQs. When generating IPIs the generated IRQ looks like a hard IRQ,
this patch adds a "IPI check" in the sun4d irq trap handler at a
predefined IRQ number (SUN4D_IPI_IRQ). Before generating an IPI
a per-cpu memory structure is modified for the "IPI check" to
successfully detect a IPI request to a specific processor, the check
clears the IPI work requested.

All three IPIs (resched, single and cpu-mask) use the same IRQ
number.

The IPI IRQ should preferrably be on a separate IRQ and definitly
not shared with IRQ handlers requesting IRQ with IRQF_SHARED.

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/irq.h
arch/sparc/kernel/sun4d_irq.c
arch/sparc/kernel/sun4d_smp.c