diff options
author | Qais Yousef <qais.yousef@imgtec.com> | 2015-01-19 11:51:29 +0000 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2015-01-26 11:38:23 +0100 |
commit | d7eb4f2ecccd71f701bc8873bcf07c2d3b0375f6 (patch) | |
tree | 293479773c2e028aff2ea9ae1d3c2dc14bbb7f16 /drivers/irqchip/irq-hip04.c | |
parent | 8041dfbd31cfff31309a2469c3d692595381c38e (diff) | |
download | linux-d7eb4f2ecccd71f701bc8873bcf07c2d3b0375f6.tar.bz2 |
irqchip: mips-gic: Handle pending interrupts once in __gic_irq_dispatch()
When an interrupt occurs __gic_irq_dispatch() continuously reads local
and shared pending registers until all is serviced before
returning. The problem with that is that it could introduce a long
delay before returning if a piece of hardware keeps triggering while
in one of these loops.
To ensure fairness and priority doesn't get skewed a lot, read local
and shared pending registers once to service each pending IRQ once.
If another interupt triggers while servicing the current ones, then we
shall re-enter the handler after we return.
Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Bresticker <abrestic@chromium.org>
Cc: <linux-mips@linux-mips.org>
Link: http://lkml.kernel.org/r/1421668289-828-1-git-send-email-qais.yousef@imgtec.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/irqchip/irq-hip04.c')
0 files changed, 0 insertions, 0 deletions