diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2011-05-02 00:08:54 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-16 20:07:44 (GMT) |
commit | 55dd23eca666876e6028aa35d5e391cfced54871 (patch) | |
tree | 7f1006b68c8f04f4590c5442e5822b71d87e761d /arch/sparc/kernel/irq.h | |
parent | ecbc42b70acbc6327adefe9635db93fcf62bf59d (diff) | |
download | linux-fsl-qoriq-55dd23eca666876e6028aa35d5e391cfced54871.tar.xz |
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>
Diffstat (limited to 'arch/sparc/kernel/irq.h')
-rw-r--r-- | arch/sparc/kernel/irq.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/sparc/kernel/irq.h b/arch/sparc/kernel/irq.h index a189c27..100b9c2 100644 --- a/arch/sparc/kernel/irq.h +++ b/arch/sparc/kernel/irq.h @@ -86,4 +86,10 @@ BTFIXUPDEF_CALL(void, set_irq_udt, int) #define set_cpu_int(cpu,level) BTFIXUP_CALL(set_cpu_int)(cpu,level) #define clear_cpu_int(cpu,level) BTFIXUP_CALL(clear_cpu_int)(cpu,level) #define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu) + +/* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */ +#define SUN4D_IPI_IRQ 14 + +extern void sun4d_ipi_interrupt(void); + #endif |