summary refs log tree commit diff
path: root/drivers/irqchip/irq-csky-mpintc.c
diff options
context:
space:
mode:
authorGuo Ren <ren_guo@c-sky.com>2019-06-06 15:37:33 +0800
committerMarc Zyngier <marc.zyngier@arm.com>2019-06-11 12:28:13 +0100
commite85c9c90b4316131c94e2297e08ea337586c0471 (patch)
tree45fccc608f32747d717ad1514952d640b86c7518 /drivers/irqchip/irq-csky-mpintc.c
parentdc96f45074a55f307d9618ebd444991fc643836c (diff)
downloadlinux-e85c9c90b4316131c94e2297e08ea337586c0471.tar.gz
irqchip/irq-csky-mpintc: Remove unnecessary loop in interrupt handler
csky_mpintc_handler()
  ->handle_domain_irq()
    ->irq_exit()
      ->invoke_softirq()
        ->__do_softirq()
          ->local_irq_enable()

If new interrupt coming, it'll get into interrupt trap before return to
csky_mpintc_handler(). So there is no need loop in csky_mpintc_handler.

Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'drivers/irqchip/irq-csky-mpintc.c')
-rw-r--r--drivers/irqchip/irq-csky-mpintc.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/irqchip/irq-csky-mpintc.c b/drivers/irqchip/irq-csky-mpintc.c
index 4457722cdd18..806ba0ef33c0 100644
--- a/drivers/irqchip/irq-csky-mpintc.c
+++ b/drivers/irqchip/irq-csky-mpintc.c
@@ -34,7 +34,6 @@ static void __iomem *INTCL_base;
 #define INTCL_PICTLR	0x0
 #define INTCL_CFGR	0x14
 #define INTCL_SIGR	0x60
-#define INTCL_HPPIR	0x68
 #define INTCL_RDYIR	0x6c
 #define INTCL_SENR	0xa0
 #define INTCL_CENR	0xa4
@@ -75,11 +74,8 @@ static void csky_mpintc_handler(struct pt_regs *regs)
 {
 	void __iomem *reg_base = this_cpu_read(intcl_reg);
 
-	do {
-		handle_domain_irq(root_domain,
-				  readl_relaxed(reg_base + INTCL_RDYIR),
-				  regs);
-	} while (readl_relaxed(reg_base + INTCL_HPPIR) & BIT(31));
+	handle_domain_irq(root_domain,
+		readl_relaxed(reg_base + INTCL_RDYIR), regs);
 }
 
 static void csky_mpintc_enable(struct irq_data *d)