]> git.ipfire.org Git - thirdparty/linux.git/commit
i3c: master: svc: Fix missed IBI after false SLVSTART on NPCM845
authorStanley Chu <yschu@nuvoton.com>
Mon, 13 Apr 2026 00:50:39 +0000 (08:50 +0800)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 30 Apr 2026 10:00:36 +0000 (12:00 +0200)
commitfa1d4fa118f4229168e9ca88cea260c5e5a94652
tree4924668367a22d7d533845c55e5bb8c102567468
parent254f49634ee16a731174d2ae34bc50bd5f45e731
i3c: master: svc: Fix missed IBI after false SLVSTART on NPCM845

The NPCM845 I3C controller may raise a false SLVSTART interrupt. The
handler first latches MSTATUS and then clears SLVSTART. If a real IBI
request arrives after the handler latches MSTATUS but before it clears
the SLVSTART interrupt status, HW sets the SLVREQ state. However, the
handler still relies on the stale MSTATUS snapshot, returns early, and
misses the real IBI. No further interrupt is generated for this pending
IBI.

Re-read MSTATUS to obtain the latest state and avoid missing a real IBI
due to this race condition.

Fixes: 4dd12e944f07 ("i3c: master: svc: Fix npcm845 invalid slvstart event")
Signed-off-by: Stanley Chu <yschu@nuvoton.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260413005040.1211107-2-yschu@nuvoton.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/svc-i3c-master.c