[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87msx9f7a2.ffs@tglx>
Date: Tue, 26 Sep 2023 14:28:21 +0200
From: Thomas Gleixner <tglx@...utronix.de>
To: Wei Gong <gongwei833x@...il.com>
Cc: linux-kernel@...r.kernel.org, Wei Gong <gongwei833x@...il.com>
Subject: Re: [PATCH v2] genirq: avoid long loops in handle_edge_irq
On Mon, Sep 25 2023 at 10:51, Wei Gong wrote:
> diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
> index dc94e0bf2c94..6da455e1a692 100644
> --- a/kernel/irq/chip.c
> +++ b/kernel/irq/chip.c
> @@ -831,7 +831,8 @@ void handle_edge_irq(struct irq_desc *desc)
> handle_irq_event(desc);
>
> } while ((desc->istate & IRQS_PENDING) &&
> - !irqd_irq_disabled(&desc->irq_data));
> + !irqd_irq_disabled(&desc->irq_data) &&
> + cpumask_test_cpu(smp_processor_id(), irq_data_get_affinity_mask(&desc->irq_data)));
Assume affinty mask has CPU0 and CPU1 set and the loop is on CPU0, but
the effective affinity is on CPU1 then how is this going to move the
interrupt?
Thanks,
tglx
Powered by blists - more mailing lists