aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorKjetil Oftedal <oftedal@gmail.com>2011-08-29 00:16:28 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-03 11:40:01 -0700
commit8d537b9f6c2bef25dd3ef257be686ebb91629dd6 (patch)
tree326b33ec6644b050cee1b793d2c96691ea0df381 /arch/sparc
parentd91d1ddeab465c3bd1a5bb503be6bc2414b451a9 (diff)
downloadkernel_samsung_smdk4412-8d537b9f6c2bef25dd3ef257be686ebb91629dd6.zip
kernel_samsung_smdk4412-8d537b9f6c2bef25dd3ef257be686ebb91629dd6.tar.gz
kernel_samsung_smdk4412-8d537b9f6c2bef25dd3ef257be686ebb91629dd6.tar.bz2
sparc32,sun4d: Change IPI IRQ level to prevent collision between IPI and timer interrupt
commit 38f7f8f05e8239e9871f7e1c4b0a842080e85315 upstream. 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> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/kernel/irq.h2
1 files changed, 1 insertions, 1 deletions
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);