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

Florian Bezdeka <[email protected]> Thu, 16 Jul 2026 09:27:22 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
On Tue, 2026-07-14 at 11:43 +0800, linz wrote:
> Thank you for your feedback

Welcome, but that shoudn't be part of the patch description.

>=20
> Under 6.6.63-dovetail2 environment, raw_spinlock_t for the ITS node lock =
triggers out=E2=80=91of=E2=80=91band context warning in irq=E2=80=91pipelin=
e code.
> As suggested by Florian, hybrid_spinlock_t should be limited to struct ir=
q_desc and irqchip internals. ITS node lock is more suitable to use hard_sp=
inlock_t.
>=20
> After replacing raw_spinlock_t with hard_spinlock_t, the call=E2=80=91tra=
ce warning disappears and system runs stably.

Which warning? That should be part of the problem description here.
(I know that it was part of some previous report/patch)

>=20
> In addition, the gic=E2=80=91v3 irqchip already has IRQCHIP_PIPELINE_SAFE=
 flag, while its_irq_chip lacks this flag.
> Enabling IRQCHIP_PIPELINE_SAFE for its_irq_chip has no effect to resolve =
the warning.

To my understanding gic-v3-its is kind of an extension to the gic-v3, so
that gic-v3-its doesn't need to be flagged with IRQCHIP_PIPELINE_SAFE on
its own. That part should be fine.

The main question for me: Is it an invalid code path that we take or is
the oob stage not properly synchronized with the inband code? I will try
to find some time to look at this again. Meanwhile:

Philippe, any comment on that?

>=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-v=
3-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
> 2.34.1