mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
irqchip/loongson-eiointc: Skip handling if there is no pending interrupt
eiointc_irq_dispatch() iterates over the pending bit registers of the interrupt controller and evaluates the result even if there is no interrupt pending in a particular 64bit chunk. Skip handling and especially the pointless write back for clearing the non-pending bits if a chunk is empty. [ tglx: Massaged changelog ] Signed-off-by: Bibo Mao <maobibo@loongson.cn> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Huacai Chen <chenhuacai@loongson.cn> Link: https://lore.kernel.org/r/20240130082722.2912576-3-maobibo@loongson.cn
This commit is contained in:
parent
aafd753555
commit
3eece72ded
|
|
@ -198,6 +198,12 @@ static void eiointc_irq_dispatch(struct irq_desc *desc)
|
|||
|
||||
for (i = 0; i < eiointc_priv[0]->vec_count / VEC_COUNT_PER_REG; i++) {
|
||||
pending = iocsr_read64(EIOINTC_REG_ISR + (i << 3));
|
||||
|
||||
/* Skip handling if pending bitmap is zero */
|
||||
if (!pending)
|
||||
continue;
|
||||
|
||||
/* Clear the IRQs */
|
||||
iocsr_write64(pending, EIOINTC_REG_ISR + (i << 3));
|
||||
while (pending) {
|
||||
int bit = __ffs(pending);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user