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