riscv: prefix IRQ_ macro names with an RV_ namespace
authorPaul Walmsley <paul.walmsley@sifive.com>
Fri, 20 Dec 2019 11:09:49 +0000 (03:09 -0800)
committerPaul Walmsley <paul.walmsley@sifive.com>
Sun, 5 Jan 2020 05:48:59 +0000 (21:48 -0800)
"IRQ_TIMER", used in the arch/riscv CSR header file, is a sufficiently
generic macro name that it's used by several source files across the
Linux code base.  Some of these other files ultimately include the
arch/riscv CSR include file, causing collisions.  Fix by prefixing the
RISC-V csr.h IRQ_ macro names with an RV_ prefix.

Fixes: a4c3733d32a72 ("riscv: abstract out CSR names for supervisor vs machine mode")
Reported-by: Olof Johansson <olof@lixom.net>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
arch/riscv/include/asm/csr.h
arch/riscv/kernel/irq.c
drivers/irqchip/irq-sifive-plic.c

index 0a62d2d684552da8c665d17632bc590e61b1dbc0..435b65532e2945703cc17a9e5c4f7613a0d5b6b8 100644 (file)
 # define SR_PIE                SR_MPIE
 # define SR_PP         SR_MPP
 
-# define IRQ_SOFT      IRQ_M_SOFT
-# define IRQ_TIMER     IRQ_M_TIMER
-# define IRQ_EXT       IRQ_M_EXT
+# define RV_IRQ_SOFT           IRQ_M_SOFT
+# define RV_IRQ_TIMER  IRQ_M_TIMER
+# define RV_IRQ_EXT            IRQ_M_EXT
 #else /* CONFIG_RISCV_M_MODE */
 # define CSR_STATUS    CSR_SSTATUS
 # define CSR_IE                CSR_SIE
 # define SR_PIE                SR_SPIE
 # define SR_PP         SR_SPP
 
-# define IRQ_SOFT      IRQ_S_SOFT
-# define IRQ_TIMER     IRQ_S_TIMER
-# define IRQ_EXT       IRQ_S_EXT
+# define RV_IRQ_SOFT           IRQ_S_SOFT
+# define RV_IRQ_TIMER  IRQ_S_TIMER
+# define RV_IRQ_EXT            IRQ_S_EXT
 #endif /* CONFIG_RISCV_M_MODE */
 
 /* IE/IP (Supervisor/Machine Interrupt Enable/Pending) flags */
-#define IE_SIE         (_AC(0x1, UL) << IRQ_SOFT)
-#define IE_TIE         (_AC(0x1, UL) << IRQ_TIMER)
-#define IE_EIE         (_AC(0x1, UL) << IRQ_EXT)
+#define IE_SIE         (_AC(0x1, UL) << RV_IRQ_SOFT)
+#define IE_TIE         (_AC(0x1, UL) << RV_IRQ_TIMER)
+#define IE_EIE         (_AC(0x1, UL) << RV_IRQ_EXT)
 
 #ifndef __ASSEMBLY__
 
index 3f07a91d5afb4571bb30eb706bd2bb9c49dacc7e..345c4f2eba13f41a58cdf2f2193f08371863a68f 100644 (file)
@@ -23,11 +23,11 @@ asmlinkage __visible void __irq_entry do_IRQ(struct pt_regs *regs)
 
        irq_enter();
        switch (regs->cause & ~CAUSE_IRQ_FLAG) {
-       case IRQ_TIMER:
+       case RV_IRQ_TIMER:
                riscv_timer_interrupt();
                break;
 #ifdef CONFIG_SMP
-       case IRQ_SOFT:
+       case RV_IRQ_SOFT:
                /*
                 * We only use software interrupts to pass IPIs, so if a non-SMP
                 * system gets one, then we don't know what to do.
@@ -35,7 +35,7 @@ asmlinkage __visible void __irq_entry do_IRQ(struct pt_regs *regs)
                riscv_software_interrupt();
                break;
 #endif
-       case IRQ_EXT:
+       case RV_IRQ_EXT:
                handle_arch_irq(regs);
                break;
        default:
index 8df547d2d935309c2bdf5f60d018e0b64dc686ac..0aca5807a119ba2d0bda2ed2cade2d4de985159b 100644 (file)
@@ -256,7 +256,7 @@ static int __init plic_init(struct device_node *node,
                 * Skip contexts other than external interrupts for our
                 * privilege level.
                 */
-               if (parent.args[0] != IRQ_EXT)
+               if (parent.args[0] != RV_IRQ_EXT)
                        continue;
 
                hartid = plic_find_hart_id(parent.np);