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