mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
irqchip/armada-370-xp: Refactor handling IPI interrupts
Refactor the handling of IPI interrupts - put into own function mpic_handle_ipi_irq(), similar to mpic_handle_msi_irq() - rename the variable holding the doorbell cause register to "cause" - retype and rename the variable holding the IPI HW IRQ number to "irq_hw_number_t i" 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-11-kabel@kernel.org
This commit is contained in:
committed by
Thomas Gleixner
parent
63697bc719
commit
baf01c726b
@@ -619,6 +619,22 @@ static void mpic_handle_msi_irq(void)
|
||||
static void mpic_handle_msi_irq(void) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static void mpic_handle_ipi_irq(void)
|
||||
{
|
||||
unsigned long cause;
|
||||
irq_hw_number_t i;
|
||||
|
||||
cause = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE);
|
||||
cause &= IPI_DOORBELL_MASK;
|
||||
|
||||
for_each_set_bit(i, &cause, IPI_DOORBELL_END)
|
||||
generic_handle_domain_irq(mpic_ipi_domain, i);
|
||||
}
|
||||
#else
|
||||
static inline void mpic_handle_ipi_irq(void) {}
|
||||
#endif
|
||||
|
||||
static void mpic_handle_cascade_irq(struct irq_desc *desc)
|
||||
{
|
||||
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||
@@ -669,19 +685,9 @@ static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs)
|
||||
if (irqnr == 1)
|
||||
mpic_handle_msi_irq();
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/* IPI Handling */
|
||||
if (irqnr == 0) {
|
||||
unsigned long ipimask;
|
||||
int ipi;
|
||||
|
||||
ipimask = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE) &
|
||||
IPI_DOORBELL_MASK;
|
||||
|
||||
for_each_set_bit(ipi, &ipimask, IPI_DOORBELL_END)
|
||||
generic_handle_domain_irq(mpic_ipi_domain, ipi);
|
||||
}
|
||||
#endif
|
||||
if (irqnr == 0)
|
||||
mpic_handle_ipi_irq();
|
||||
} while (1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user