Message ID | 20240701170249.8128-18-kabel@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | armada-370-xp irqchip updates round 2 | expand |
On Mon, Jul 01, 2024 at 07:02:41PM +0200, Marek Behún wrote: > Refactor the mpic_handle_msi_irq() function to make it simpler: > - use for_each_set_bit() > - rename the variable holding the doorbell cause register to cause > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
On Wed, 3 Jul 2024 03:29:43 +0200 Andrew Lunn <andrew@lunn.ch> wrote: > On Mon, Jul 01, 2024 at 07:02:41PM +0200, Marek Behún wrote: > > Refactor the mpic_handle_msi_irq() function to make it simpler: > > - use for_each_set_bit() > > - rename the variable holding the doorbell cause register to cause > > > > Signed-off-by: Marek Behún <kabel@kernel.org> > > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > > Andrew Hi Andrew, I was overenthusiastic yesterday and already sent v2 where I refactored the two patches you had notes about, and also added some more patches. I can either send v3 with the rest of your R-b tags added, or you can resend them to v2, whichever you prefer. Marek
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index d8db46001961..9e8b189da1d1 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -618,24 +618,15 @@ static const struct irq_domain_ops mpic_irq_ops = { #ifdef CONFIG_PCI_MSI static void mpic_handle_msi_irq(struct pt_regs *regs, bool is_chained) { - u32 msimask, msinr; + unsigned long cause, nr; - msimask = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - msimask &= msi_doorbell_mask(); + cause = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); + cause &= msi_doorbell_mask(); + writel(~cause, per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - writel(~msimask, per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - - for (msinr = msi_doorbell_start(); - msinr < msi_doorbell_end(); msinr++) { - unsigned int irq; - - if (!(msimask & BIT(msinr))) - continue; - - irq = msinr - msi_doorbell_start(); - - generic_handle_domain_irq(mpic_msi_inner_domain, irq); - } + for_each_set_bit(nr, &cause, BITS_PER_LONG) + generic_handle_domain_irq(mpic_msi_inner_domain, + nr - msi_doorbell_start()); } #else static void mpic_handle_msi_irq(struct pt_regs *r, bool b) {}
Refactor the mpic_handle_msi_irq() function to make it simpler: - use for_each_set_bit() - rename the variable holding the doorbell cause register to cause Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-)