Re: [BUG] irqchip: armada-370-xp: workqueue lockup
From: Marc Zyngier <maz@kernel.org>
Date: 2021-09-22 08:14:21
On Wed, 22 Sep 2021 07:49:05 +0100, Steffen Trumtrar [off-list ref] wrote:
Hi, Marc Zyngier [off-list ref] writes:quoted
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 concerneddidn't the fasteoi flow just call the irq_eoi earlier? Same as the irq_ack now?
Yes, of course, you are correct. Another proof that the whole initial fasteoi flow that used EOI as an ACK was *a bad idea* (tm).
quoted
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/
Thanks. Can I use this as a Tested-by: tag in the official patch? M. -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel