ARC: Reset the value of Interrupt Priority Register
authorVineet Gupta <vgupta@synopsys.com>
Thu, 12 Sep 2013 08:23:06 +0000 (13:53 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Wed, 6 Nov 2013 05:11:40 +0000 (10:41 +0530)
In case bootloader has changed the priority of one/more IRQ lines

Reported-by: Noam Camus <noamc@ezchip.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/kernel/irq.c

index 5fc92455da368132960515a7eb81faa72c7717ae..02684e1a0cf05b3eb2ac776643bfb4b820317217 100644 (file)
@@ -39,10 +39,14 @@ void arc_init_IRQ(void)
        level_mask |= IS_ENABLED(CONFIG_ARC_IRQ5_LV2) << 5;
        level_mask |= IS_ENABLED(CONFIG_ARC_IRQ6_LV2) << 6;
 
-       if (level_mask) {
+       /*
+        * Write to register, even if no LV2 IRQs configured to reset it
+        * in case bootloader had mucked with it
+        */
+       write_aux_reg(AUX_IRQ_LEV, level_mask);
+
+       if (level_mask)
                pr_info("Level-2 interrupts bitset %x\n", level_mask);
-               write_aux_reg(AUX_IRQ_LEV, level_mask);
-       }
 }
 
 /*