summaryrefslogtreecommitdiff
path: root/drivers/irqchip/irq-gic.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/irqchip/irq-gic.c')
-rw-r--r--drivers/irqchip/irq-gic.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 25b5a2427705..db27aa9c7e8d 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -42,7 +42,7 @@
#include <linux/irqchip/chained_irq.h>
#include <linux/irqchip/arm-gic.h>
#include <linux/syscore_ops.h>
-
+#include <linux/wakeup_reason.h>
#include <asm/cputype.h>
#include <asm/irq.h>
#include <asm/exception.h>
@@ -544,12 +544,13 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
} while (1);
}
-static void gic_handle_cascade_irq(struct irq_desc *desc)
+static bool gic_handle_cascade_irq(struct irq_desc *desc)
{
struct gic_chip_data *chip_data = irq_desc_get_handler_data(desc);
struct irq_chip *chip = irq_desc_get_chip(desc);
unsigned int cascade_irq, gic_irq;
unsigned long status;
+ int handled = false;
chained_irq_enter(chip, desc);
@@ -565,10 +566,12 @@ static void gic_handle_cascade_irq(struct irq_desc *desc)
if (unlikely(gic_irq < 32 || gic_irq > 1020))
handle_bad_irq(desc);
else
- generic_handle_irq(cascade_irq);
+ handled = generic_handle_irq(cascade_irq);
+
out:
chained_irq_exit(chip, desc);
+ return handled == true;
}
static struct irq_chip gic_chip = {