]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drivers/irqchip: xtensa: add warning to irq_retrigger
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 25 Jan 2019 00:51:28 +0000 (16:51 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Sat, 26 Jan 2019 10:02:14 +0000 (02:02 -0800)
XEA2 and MX PIC can only retrigger software interrupts. Issue a warning
if an interrupt of any other type is retriggered.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
drivers/irqchip/irq-xtensa-mx.c
drivers/irqchip/irq-xtensa-pic.c

index 5385f5768345ef3aa22bdeed8bd22195469d2f9d..0bd3fe3b969e75c64d6cac2897daac737656e0bb 100644 (file)
@@ -113,7 +113,11 @@ static void xtensa_mx_irq_ack(struct irq_data *d)
 
 static int xtensa_mx_irq_retrigger(struct irq_data *d)
 {
-       xtensa_set_sr(1 << d->hwirq, intset);
+       unsigned int mask = 1u << d->hwirq;
+
+       if (WARN_ON(mask & ~XCHAL_INTTYPE_MASK_SOFTWARE))
+               return 0;
+       xtensa_set_sr(mask, intset);
        return 1;
 }
 
index c200234dd2c9d68555f79e2b4a7a2127b645ff01..ab12328be5eed398621e003272fd132c755841a0 100644 (file)
@@ -70,7 +70,11 @@ static void xtensa_irq_ack(struct irq_data *d)
 
 static int xtensa_irq_retrigger(struct irq_data *d)
 {
-       xtensa_set_sr(1 << d->hwirq, intset);
+       unsigned int mask = 1u << d->hwirq;
+
+       if (WARN_ON(mask & ~XCHAL_INTTYPE_MASK_SOFTWARE))
+               return 0;
+       xtensa_set_sr(mask, intset);
        return 1;
 }