]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code
authorMarek Behún <kabel@kernel.org>
Thu, 11 Jul 2024 11:57:47 +0000 (13:57 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 30 Jul 2024 11:35:47 +0000 (13:35 +0200)
Refactor the mpic_handle_msi_irq() function to make it simpler:
- drop the function arguments, they are not needed
- rename the variable holding the doorbell cause register to "cause"
- rename the iterating variable to "i"
- use for_each_set_bit() (requires retyping "cause" to unsigned long)

Signed-off-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/all/20240711115748.30268-10-kabel@kernel.org
drivers/irqchip/irq-armada-370-xp.c

index 179a30a4a128e1ba7beb7569a33ac1fd7ef78332..5c2631f6f7b00496bec306565ce5c8b3f311bc2b 100644 (file)
@@ -602,29 +602,21 @@ 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)
+static void mpic_handle_msi_irq(void)
 {
-       u32 msimask, msinr;
+       unsigned long cause;
+       unsigned int i;
 
-       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(i, &cause, BITS_PER_LONG)
+               generic_handle_domain_irq(mpic_msi_inner_domain,
+                                         i - msi_doorbell_start());
 }
 #else
-static void mpic_handle_msi_irq(struct pt_regs *r, bool b) {}
+static void mpic_handle_msi_irq(void) {}
 #endif
 
 static void mpic_handle_cascade_irq(struct irq_desc *desc)
@@ -647,7 +639,7 @@ static void mpic_handle_cascade_irq(struct irq_desc *desc)
                        continue;
 
                if (irqn == 0 || irqn == 1) {
-                       mpic_handle_msi_irq(NULL, true);
+                       mpic_handle_msi_irq();
                        continue;
                }
 
@@ -675,7 +667,7 @@ static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs)
 
                /* MSI handling */
                if (irqnr == 1)
-                       mpic_handle_msi_irq(regs, false);
+                       mpic_handle_msi_irq();
 
 #ifdef CONFIG_SMP
                /* IPI Handling */