RE: [PATCH v3 4/8] irqchip/al-fic: switch to shared parent interrupt
From: Farber, Eliav
Date: Thu Oct 08 2026 - 04:27:28 EST
On Thu, 2026-10-08 at 01:06 +0000, Radu Rendec wrote:
> Reviewed-by: Radu Rendec <radu@xxxxxxxxxx>
Thanks. I have dropped it from this patch in v4, because the patch has
changed since you looked at it.
sashiko-bot flagged the v3 posting: with the parent now requested as a
shared interrupt, the handler can report IRQ_HANDLED for a line this
instance did not drive. IRQ_GC_INIT_MASK_CACHE seeds gc->mask_cache by
reading the mask register, but only on the first child mapping - which is
after request_irq(), and never happens at all for a group that has no
consumer in the devicetree. Until then the cache reads 0 and every latched
cause bit passes the handler's filter.
I checked it against the controller's register specification: the mask
registers gate the controller's output, not the cause latch, so a masked
source still latches its bit. There are groups in our devicetrees with no
consumer sharing a parent with groups that have one, so for those the cache
would stay 0 for the lifetime of the system.
So al_fic_register() now seeds the cache from the value al_fic_wire_init()
programmed, before the parent is requested, and drops
IRQ_GC_INIT_MASK_CACHE - nothing else writes the mask register before the
first child is mapped, so the read could only ever have returned that same
value.
That is a functional change, so the tag came off rather than being carried
over. The fix is in v4, which I will post shortly.
Thanks,
Eliav