Re: [irqchip: irq/irqchip-next] irqdomain: Protect the linear revmap with RCU

From: Marc Zyngier
Date: Mon Jul 05 2021 - 14:01:42 EST


Hi Guenter,

On Mon, 05 Jul 2021 18:23:52 +0100,
Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>
> Hi,
>
> On Fri, Jun 11, 2021 at 01:54:36PM -0000, irqchip-bot for Marc Zyngier wrote:
> > The following commit has been merged into the irq/irqchip-next branch of irqchip:
> >
> > Commit-ID: d4a45c68dc81f9117ceaff9f058d5fae674181b9
> > Gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms/d4a45c68dc81f9117ceaff9f058d5fae674181b9
> > Author: Marc Zyngier <maz@xxxxxxxxxx>
> > AuthorDate: Mon, 05 Apr 2021 12:57:27 +01:00
> > Committer: Marc Zyngier <maz@xxxxxxxxxx>
> > CommitterDate: Thu, 10 Jun 2021 13:09:18 +01:00
> >
> > irqdomain: Protect the linear revmap with RCU
> >
> > It is pretty odd that the radix tree uses RCU while the linear
> > portion doesn't, leading to potential surprises for the users,
> > depending on how the irqdomain has been created.
> >
> > Fix this by moving the update of the linear revmap under
> > the mutex, and the lookup under the RCU read-side lock.
> >
> > The mutex name is updated to reflect that it doesn't only
> > cover the radix-tree anymore.
> >
> > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx>
>
> This patch results in various RCU warnings when booting mipsel images
> in qemu. I can not revert the patch due to subsequent changes, so I
> don't know if a simple revert fixes the problem. Log messages and
> bisect log see below.

Thanks for the heads up. Do you have a config file I can use to
reproduce this? The QEMU invocation runes would certainly help too.

It strikes me that in drivers/irqchip/irq-mips-cpu.c,
plat_irq_dispatch() now uses the irqdomain resolution before
irq_enter() took place. That's certainly a latent bug. I'll fix that
regardless, but I'd like to make sure this is what you are seeing too.

Thanks,

M.

--
Without deviation from the norm, progress is not possible.