Patchwork sparc32,sun4d: Change IPI IRQ level to prevent collision between IPI and timer interrupt

login
register
mail settings
Submitter oftedal
Date Aug. 28, 2011, 10:16 p.m.
Message ID <Pine.LNX.4.64.1108282349020.24571@oizys.tordivel.org>
Download mbox | patch
Permalink /patch/111955/
State Accepted
Delegated to: David Miller
Headers show

Comments

oftedal - Aug. 28, 2011, 10:16 p.m.
On Sun4d systems running in SMP mode, IRQ 14 is used for timer interrupts 
and has a specialized interrupt handler. IPI is currently set to use IRQ 14 
as well, which causes it to trigger the timer interrupt handler, and not the 
IPI interrupt handler. 

The IPI interrupt is therefore changed to IRQ 13, which is the highest 
normally handled interrupt. This IRQ is also used for SBUS interrupts, 
however there is nothing in the IPI/SBUS interrupt handlers that indicate 
that they will not handle sharing the interrupt.
(IRQ 13 is indicated as audio interrupt, which is unlikely to be found in a 
sun4d system)

Signed-off-by: Kjetil Oftedal <oftedal@gmail.com>
---

 arch/sparc/kernel/irq.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Aug. 29, 2011, 4:26 p.m.
From: Kjetil Oftedal <oftedal@gmail.com>
Date: Mon, 29 Aug 2011 00:16:28 +0200 (CEST)

> On Sun4d systems running in SMP mode, IRQ 14 is used for timer interrupts 
> and has a specialized interrupt handler. IPI is currently set to use IRQ 14 
> as well, which causes it to trigger the timer interrupt handler, and not the 
> IPI interrupt handler. 
> 
> The IPI interrupt is therefore changed to IRQ 13, which is the highest 
> normally handled interrupt. This IRQ is also used for SBUS interrupts, 
> however there is nothing in the IPI/SBUS interrupt handlers that indicate 
> that they will not handle sharing the interrupt.
> (IRQ 13 is indicated as audio interrupt, which is unlikely to be found in a 
> sun4d system)
> 
> Signed-off-by: Kjetil Oftedal <oftedal@gmail.com>

Applied, thanks a lot!
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/kernel/irq.h b/arch/sparc/kernel/irq.h
index 100b9c2..4285112 100644
--- a/arch/sparc/kernel/irq.h
+++ b/arch/sparc/kernel/irq.h
@@ -88,7 +88,7 @@  BTFIXUPDEF_CALL(void, set_irq_udt, int)
 #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
+#define SUN4D_IPI_IRQ 13
 
 extern void sun4d_ipi_interrupt(void);