Thread (5 messages) flat view 5 messages, 2 authors, 2021-09-22

Re: [BUG] irqchip: armada-370-xp: workqueue lockup

From: Steffen Trumtrar <hidden>
Date: 2021-09-22 07:26:28

Hi,

Marc Zyngier [off-list ref] writes:
It isn't obvious to me how reverting this patch fixes anything.  The
fasteoi flow does the same thing as far as the IPI driver is concerned
didn't the fasteoi flow just call the irq_eoi earlier? Same as the
irq_ack now?
quoted hunk ↗ jump to hunk
However, it appears that I have broken that part much earlier in
f02147dd02eb ("irqchip/armada-370-xp: Configure IPIs as standard
interrupts"), as the write to ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS that
used to occur before the handling (an ACK) has now been moved after as
an EOI. That's a pretty good way to lose edge interrupts.

Could you try the following patch on top of 5.12-rc2?

Thanks,

	M.
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index 7557ab551295..53e0fb0562c1 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -359,16 +359,16 @@ static void armada_370_xp_ipi_send_mask(struct irq_data *d,
 		ARMADA_370_XP_SW_TRIG_INT_OFFS);
 }

-static void armada_370_xp_ipi_eoi(struct irq_data *d)
+static void armada_370_xp_ipi_ack(struct irq_data *d)
 {
 	writel(~BIT(d->hwirq), per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS);
 }

 static struct irq_chip ipi_irqchip = {
 	.name		= "IPI",
+	.irq_ack	= armada_370_xp_ipi_ack,
 	.irq_mask	= armada_370_xp_ipi_mask,
 	.irq_unmask	= armada_370_xp_ipi_unmask,
-	.irq_eoi	= armada_370_xp_ipi_eoi,
 	.ipi_send_mask	= armada_370_xp_ipi_send_mask,
 };
This fixes it, yes \o/


Best regards,
Steffen

--
Pengutronix e.K.                | Dipl.-Inform. Steffen Trumtrar |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help