Re: [PATCH v3] irqchip: gic-v3-its: irq_pipeline: Fix OOB context in-band lock warning for ITS lock

Florian Bezdeka <[email protected]> Mon, 03 Aug 2026 16:51:45 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
On Thu, 2026-07-23 at 17:08 +0200, Philippe Gerum wrote:
> linz <[email protected]> writes:
>=20
> > The warning shown below could be observed on dovetail 6.6 with arm64
> > architecture when CONFIG_DEBUG_IRQ_PIPELINE is enabled.
> >=20
> > The reason is the usage of a raw_spinlock_t in hard IRQ masking code
> > path. A migration to hard_spinlock_t fixes this issue.
> >=20
> > [=C2=A0 =C2=A0 1.510903] IRQ pipeline: some code running in oob context=
 'Xenomai'
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0called an in-band only routine
> > [=C2=A0 =C2=A0 1.510912] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G S=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A06.6.63-dovetail2=
 #8
> > [=C2=A0 =C2=A0 1.510918] Hardware name: Pe2204 DEMO DDR4 (DT)
> > [=C2=A0 =C2=A0 1.510920] IRQ stage: Xenomai
> > [=C2=A0 =C2=A0 1.510923] Call trace:
> > [=C2=A0 =C2=A0 1.510926]=C2=A0 dump_backtrace+0x90/0xe4
> > [=C2=A0 =C2=A0 1.510940]=C2=A0 show_stack+0x14/0x1c
> > [=C2=A0 =C2=A0 1.510946]=C2=A0 dump_stack_lvl+0x84/0xc8
> > [=C2=A0 =C2=A0 1.510953]=C2=A0 dump_stack+0x14/0x1c
> > [=C2=A0 =C2=A0 1.510957]=C2=A0 check_inband_stage+0xb0/0xc8
> > [=C2=A0 =C2=A0 1.510965]=C2=A0 inband_irq_save+0xc/0x28
> > [=C2=A0 =C2=A0 1.510971]=C2=A0 _raw_spin_lock_irqsave+0x14/0x90
> > [=C2=A0 =C2=A0 1.510977]=C2=A0 its_send_single_command+0x24/0x154
> > [=C2=A0 =C2=A0 1.510984]=C2=A0 lpi_update_config+0x9c/0x144
> > [=C2=A0 =C2=A0 1.510990]=C2=A0 its_mask_irq+0x2c/0x64
> > [=C2=A0 =C2=A0 1.510997]=C2=A0 irq_chip_mask_parent+0x18/0x20
> > [=C2=A0 =C2=A0 1.511005]=C2=A0 its_mask_msi_irq+0x1c/0x28
> > [=C2=A0 =C2=A0 1.511012]=C2=A0 handle_fasteoi_irq+0x1cc/0x2b4
> > [=C2=A0 =C2=A0 1.511016]=C2=A0 generic_pipeline_irq_desc+0x6c/0xa4
> > [=C2=A0 =C2=A0 1.511021]=C2=A0 generic_handle_domain_irq+0x18/0x20
> > [=C2=A0 =C2=A0 1.511028]=C2=A0 gic_handle_irq+0x4c/0x120
> > [=C2=A0 =C2=A0 1.511032]=C2=A0 handle_irq_pipelined+0x40/0x64
> > [=C2=A0 =C2=A0 1.511038]=C2=A0 call_on_irq_stack+0x24/0x30
> > [=C2=A0 =C2=A0 1.511044]=C2=A0 do_interrupt_handler+0x138/0x158
> > [=C2=A0 =C2=A0 1.511050]=C2=A0 el1_interrupt+0x40/0x110
> > [=C2=A0 =C2=A0 1.511055]=C2=A0 el1h_64_irq_handler+0x14/0x1c
> > [=C2=A0 =C2=A0 1.511061]=C2=A0 el1h_64_irq+0x64/0x68
> > [=C2=A0 =C2=A0 1.511064]=C2=A0 default_idle_call+0x30/0x78
> > [=C2=A0 =C2=A0 1.511071]=C2=A0 do_idle+0x128/0x150
> > [=C2=A0 =C2=A0 1.511077]=C2=A0 cpu_startup_entry+0x34/0x38
> > [=C2=A0 =C2=A0 1.511081]=C2=A0 kernel_init+0x0/0x1d4
> > [=C2=A0 =C2=A0 1.511088]=C2=A0 arch_post_acpi_subsys_init+0x0/0x8
> > [=C2=A0 =C2=A0 1.511096]=C2=A0 start_kernel+0x504/0x5cc
> > [=C2=A0 =C2=A0 1.511103]=C2=A0 __primary_switched+0xbc/0xc4
> >=20
> > Signed-off-by: zhanglin <[email protected]>
> > ---
> >  drivers/irqchip/irq-gic-v3-its.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >=20
> > diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic=
-v3-its.c
> > index 0e57735eac..3f2b02b8f4 100644
> > --- a/drivers/irqchip/irq-gic-v3-its.c
> > +++ b/drivers/irqchip/irq-gic-v3-its.c
> > @@ -94,7 +94,7 @@ struct its_device;
> >   * list.
> >   */
> >  struct its_node {
> > -	raw_spinlock_t		lock;
> > +	hard_spinlock_t		lock;
> >  	struct mutex		dev_alloc_lock;
> >  	struct list_head	entry;
> >  	void __iomem		*base;
>=20
> This is correct, but we need more changes for this irqchip driver,
> particularly for handlers mentioned by this document [1], like irq_mask,
> irq_unmask.
>=20
> For instance, anything which calls lpi_update_config() needs to be made
> oob-capable, so it looks like gic_data_rdist_cpu(cpu)->rd_lock needs
> care too.

Agreed.

Btw: There is a difference in the display name between the mail address
used for sending (From: header) and the Signed-off-by: tag. So I'm not
sure about the greeting ;-)

linz/zhanglin, do you plan to address the comments from Philippe?

Best regards,
Florian