summaryrefslogtreecommitdiff
path: root/arch/arc/plat-arcfpga/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arc/plat-arcfpga/irq.c')
-rw-r--r--arch/arc/plat-arcfpga/irq.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arc/plat-arcfpga/irq.c b/arch/arc/plat-arcfpga/irq.c
index ed726360b9f6..590edd174c47 100644
--- a/arch/arc/plat-arcfpga/irq.c
+++ b/arch/arc/plat-arcfpga/irq.c
@@ -9,7 +9,17 @@
*/
#include <linux/interrupt.h>
+#include <asm/irq.h>
void __init plat_init_IRQ(void)
{
+ /*
+ * SMP Hack because UART IRQ hardwired to cpu0 (boot-cpu) but if the
+ * request_irq() comes from any other CPU, the low level IRQ unamsking
+ * essential for getting Interrupts won't be enabled on cpu0, locking
+ * up the UART state machine.
+ */
+#ifdef CONFIG_SMP
+ arch_unmask_irq(UART0_IRQ);
+#endif
}