From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012026.outbound.protection.outlook.com [52.101.66.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FF733C1969 for ; Wed, 22 Apr 2026 09:19:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.26 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776849570; cv=fail; b=F3efwO0LAqCa8DKDWVqYa7/XvgZ0A358cAv8IrpPFSX9/cvoSkzFLy4lZmXEbqbFhZkNTB6gTGiqBbN59V2Eg19vtF1F4ngpIXLdXX/t8TfyI0sfwsFG69eolJAdmjyONE/vykzmCGvFRgLHEJQeJ2UeyOlzPCZ/f6XVQbAmMnM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776849570; c=relaxed/simple; bh=3nthKw9Ky0BLMKkh+hKJByQA08/OExxgGsfwQZiO2qA=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=DGmANneUdA0uy6cWCyGq722XJNwznq4ObxNixLF7Ixh0TtLcCUacuEOvEaSkmfxVPM/zR5F1JpVGmOHtOvCCi5dq8gOnc1h3H4mEck/JIq38KZtUxtrIrcMDCeTGIfgQk8pG2AsFT1BsUcdvwuZt/R7q+DevC6wBsmJqc9XeQmI= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=bY+SnAUR; arc=fail smtp.client-ip=52.101.66.26 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="bY+SnAUR" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=frozXALvzgkZ7wqFO7tWZYnJw1e9reF2oyf0yRusHlje3jN5Qq2gQpyCs2R1vvZal9gWlaA/lYln1sRw7xj50iTXcGEsCTQy7eQijdFSIxs/7uzg9mdgl0ita675GXWq6eJsOvCnpuouxxKMADEHFMQMHhks/4szKTo0f6dExuwAnPavqtQZvkB4EadPUfaVg0Q14vNJaAuDCsgcnsm6QFJYbX7Ik/Sn0Kwm4dPRtInwy2oEulhkMkAaCuSo/vvtTa6hyvwv0eHH4ArS0CyAf1W1WM4R3iiNY6vviY7lrxN4vSASOkYxg/wRDPmVypSZKj1ON8m1Kxpv72dvb2aZ6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=72Pk1el29vfmwWP9UIADy5S22FfgDeaIbiRfzczC0x4=; b=zDMVg4Eby6bhuWizQUtUJTfFsruCwJ3790wXfEs9YOSUlKqQxh8Bd8siFR4npeX9rar9h9YqlSXIaOu2Te21Vp1oLZzs/vXqBOR69h6YRqyNBclNbC/N6WpWLM1ZRCq6McprpwG5siKcnC6ws+2ZwNTOKdHFcDi3gaqRl8vvsN1v3aeFnMLaR4W0ODujyfT3rLI1yRKaP1rQVBcl7f1Nt+Cgz+AC0ESAK02TVhr3AME9KKWhjyiLknpA5Fxh4wB1/F+g1haaNdY79vLCcTSmjGlN5ZUY6XJ8Olh/uA9uCogz1MdZCK5AH8jHg40/ZwXYxddHwfJ7lQWAWaM+J8z8hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=72Pk1el29vfmwWP9UIADy5S22FfgDeaIbiRfzczC0x4=; b=bY+SnAURcPw0Sh96cBV0bTA+3SnUztWuDhJyP1ek9fYOwQhQ1zkYtRjIQKP1PXLH6ZBZz8dFonNDTLXUPBdo63GaCwviiPZkyJOgYOwiM3/OTuXJRH2wvPnCZYPv4tbFP+LGaKRW0UPiIysSFEbe8Flx2pVVinwZ5EyFouOSzBfpx4EbcPA3fzBZ4XWMtykao2Wl2vf9I8QTUpGWv8D7doQi56dDBUUDkAbISqtJTcU2oVJII4QH7S0LgGjXoLWCmIGit8edgS6Va/ollbBGv3ntoVLxTSw4oPZbbeEvCaNfjpKkdRWJEvi2omLWmZvLC8HPNafm2a0QElh1t6Nk9A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AS8PR04MB8612.eurprd04.prod.outlook.com (2603:10a6:20b:427::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Wed, 22 Apr 2026 09:19:25 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9846.016; Wed, 22 Apr 2026 09:19:25 +0000 Date: Wed, 22 Apr 2026 05:19:16 -0400 From: Frank Li To: Stanley Chu Cc: miquel.raynal@bootlin.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com Subject: Re: [PATCH v1 1/2] i3c: master: svc: Fix missed IBI after false SLVSTART on NPCM845 Message-ID: References: <20260413005040.1211107-1-yschu@nuvoton.com> <20260413005040.1211107-2-yschu@nuvoton.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-ClientProxiedBy: BY1P220CA0042.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59e::17) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AS8PR04MB8612:EE_ X-MS-Office365-Filtering-Correlation-Id: b91f4980-8638-482b-fec4-08dea0503f50 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|19092799006|1800799024|38350700014|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: uCGjsKIdzvKFhjUO3mHaNcxnuIhk+K7RmQHROpRZJRcA4dk9w+dvZm9+lWrAkUc0WLkP5r/jlNckuYGSueV+3PLPPGyGIO0n9jESJlOYm3k1JTbq7/JndRsRIjj/8Ub4tYcCo9HoGS1+VjG1mmXWSOxTym+k4qfjMDsYAoqRd9tTGnurcaWRX3/Aweb2RYElDK2tj1k/3jxlpD55/d0/NGV4So1iTSfCr7HKR2narI+i8rCOKxLMP8lf+PPoBgEpNsR/1qzkuTUbzMvC+XTW/bMN71a/Qzb+4LQvZhIsJX/RzImba+tAo7erONEQJZn4HuLhPAcxDDiuHYwob1orYQ0b2iLmk4En4qJqp23KeXfQHwzVmHzX3AW7IThwxewRg8fGCFN7t6o+8EECRbbHiTrgUXUJKFqMwnVQ9wA7FELJisul/khJAAKM04DFezymzGFKUlvW3KqpEHkz1bdJZ97KiMW+wSq6eKRpVGyD3vfF/vtLIIpLWIGVjpVEFVVsm1tnaDCfd+ZeNUowymWGw+u/387805pCckNZSEZLzPixqvH6sBzNYxWz1VjQP/GDhyzQ9rHyewKPwd4WSB+yMeVxPFF8OiML3EOTFXxesA+kTbWSs1shLvQ/KbEnHqgjm2Y+fFa5G9dyP1SsR/nbd/eCLNttBNOCVyY00o0dcb2SZAjW+zK08Nmk+EW1vA5SSctZzsZrJNhaJDZPykf6RnPIFyXH0YPBE32pD7YFeqbQdpKC9U6zbU+HwD14sgrtgRMlVgCWex2s0RLzTx8vvUhyJWHP/jHXg834+QOv8RI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(19092799006)(1800799024)(38350700014)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QWxHUmJTalo0NVhhdHJibm5neTFSYzFGYUV0MmJrcEFYNkJDaWlXaFdvckRY?= =?utf-8?B?d3IvS1pDL2Q4Q2kzWVZYMFVYdGRzdHBoL1Z4STQzVXFha3l0NDNhcVBlTWti?= =?utf-8?B?cG9lcnNjMTJhRVQrMm5Md1lBVU1USEVqbUpoTWRHS2JiNG1rNVdXd0NWN2Nm?= =?utf-8?B?NVJYa3ZSc2ZnbnJGT1NIbU0wUzRoKzZzSHBGcVdmWlM1NXoyUUhBbVNSekpz?= =?utf-8?B?VWlHSm5tQ0N2cXgxRGdRK0NteGRyUEV1NHJvVEI2ZXUrTm5NU0xuQUVGQ0Ez?= =?utf-8?B?cFNhVnBHaGd5aVFLQ0E5Y0hFQzdiRlhIVjBDZEgxZ1JyVFJ3amkxaU9Yai9W?= =?utf-8?B?VTMrMzgwMzNwb0llTWV6aXVMbG5YM0FrSFRlbmNBcGJxc0gwSEM3SmxHTVAv?= =?utf-8?B?QkdzakNYRGhteWNhYm9vM3RtSWN4djB0Z2hVWTEvejNaMFp2MTltSXNiVzd0?= =?utf-8?B?Vmk5ZG00MElVUlZSd0tZRzhPSi96WVRWeXJEeGc4bDNwbktLOGlxR2Vaa2tM?= =?utf-8?B?dkxFcVRhZ0hmYlBLR3kzclZYL1RkR2hJYXUyWHRXa3d5ZGdab2FXczU1dHln?= =?utf-8?B?VTY3UmRZS1F6SVVhdlF0c3VqVUVIYTc2dzVib1MxWXBoUGRBNWRZbzBsdzFz?= =?utf-8?B?bW5uNjJQRThjVmdhT2RyRWIzc1FwaWVVaFBpYWZ2TDk4c1lVZU9NdXdnMDcy?= =?utf-8?B?VFprTlF2N0Y1eFdad3Z6ZXpEZDFibmd6NUdSeCtmTzdQM2JmMk40dzRPOENx?= =?utf-8?B?Z0REYWg1c2FmKzRONzJybEUxSEJwK2RmNnd1M3pqNE9lQkF4eFdQQXZ2V2Yv?= =?utf-8?B?ZlliK2RKdHY2QUJ6Z0JLVkg5OUhocVdpbEViOVhHTzRZdVM4NVVnOFRGWnov?= =?utf-8?B?c3JYeWNBWjk1Qk40ZzdpVWM5NEtteEtkVWp1RUhFNlZLYnNvWGd0RDgvU1E4?= =?utf-8?B?bWU4elQ0aVp4anAwWkRGYzI5V2dScHFqTXlLbUUwaXFyZERYMmVLNFkyOTl6?= =?utf-8?B?aGQ1Vlh3bEpJQktxd3FzMmZSWjV4aE9UckRxbjcrMTVkOU42dGl5dWRVL0Z2?= =?utf-8?B?T3VBS3FSdVZLdWhtTVdmeW1xT1VUMEl1MGtuWG1tS2VrRUs5eFZidEtkaGl1?= =?utf-8?B?S1VJeGtSa2dFN0ZSNThPM2dBcVVESFVMc3gvRFNJWkhIMTQzTy81dEp0VHVr?= =?utf-8?B?ZUQvVEdUTjBXc0J3T1dvSEpWYm9laDhEOFFueEM4K1p3RlRZWUVjM1BTQ1dE?= =?utf-8?B?S2xXbXEyVWZWUVpCTGhaR3NOZlk1bkdWbWhOb1NpR2JPaktXd3NZeDNGQ1ZJ?= =?utf-8?B?NG1VQnZFVnREY0gwcE0vWHhSMCsxemlZZStXSzVtLzFyM0wvcDZuWUxzUndB?= =?utf-8?B?UWxOTGtlaXAydWJQMVNabE1yMTZwdis3ZjBHTVNTMmd2VkFWbDFsUGM4WlRr?= =?utf-8?B?cXM1M0FxVVozS29ubXJBcUFiQ3pyb1crV3FhN3pGUlM5ZVcwMGtKUUZBWHVp?= =?utf-8?B?bjM3QUd4N2pRQ3ZzQ0FMQnpxcm10dGZxMWJPMVl3NDZEMmxkYlJoQ1hqaFIw?= =?utf-8?B?WkVKZ0taQ3NQeCtXMWloRnlRMUdaM0ZpVEJJYXFuWHkvMzdLQ3EvODhuQkV0?= =?utf-8?B?TEZ1Q1FveEFTSzc4MVo0OWtoUU1sUHUwbVQvN3pCNXY4ZVdxaFNiQkxPTDhy?= =?utf-8?B?NkhTV25CaTBBcjNLTlRSazlDSVFLYlorSDBGWkdsNVhONTRrN0lkVDNsZm0v?= =?utf-8?B?ODBqQUR4aFArT2tJWHBPcUJIejhDVmhXdXVKMjB1OHk2YURjZmJQeVRIc1FJ?= =?utf-8?B?Rnp6OVRqVlIvcGMvMmVoaEhmUVREU2JzaFFoRFNwdktYY09mcW9PemFmOFBF?= =?utf-8?B?WnB3andWV3I3N29RU1lqM2o5VW5vS0dPQmFBUXErRU1JQlFEWURYLzFkTVAr?= =?utf-8?B?Wm5YVnA3N3p3RzRDRHdXK2o2M0lTZFQ5QXBmOWdxM3hjTDg1MFkwM29zc2pB?= =?utf-8?B?cmdYbGU4cllUSHZFQ2x1ZDkrSnpHamJkblJHdkpxK0l0SWJsQjV5VkR4K0hz?= =?utf-8?B?MFJoSklRQnArdTBOSm1scXU0UTdxK2Z6cnFrTEsxUFlrODVDWWlaM0dxVU42?= =?utf-8?B?cUFqNG51NUh5dE1BSGhIN3M5VDkzTlgxdDg3aFd0eFY1MmthTHJKSS8xRk1n?= =?utf-8?B?UWgrSnF4SlF0eFdwbGJlTjBEVjNWRS92T2lCdldONkRwaWx5ZXZvMnlGWkFq?= =?utf-8?B?WnpyVVNOMll0a2FuN3lvc3d4N1VmLzRDUG50RllmdnRwRm1tOW41Z1VWYkJ4?= =?utf-8?B?cEFNcFdBYTJWLytteTFxUWlEUkVIcGFkY0dqZk1rN1R5Skk1akJ1Zz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b91f4980-8638-482b-fec4-08dea0503f50 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2026 09:19:25.5310 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: j7o7XAVPaDePpFYkYz0/nFG74BLH8Pl6eZ3lbeLIP5tdV/Blky63NBOpSWqmQxufS8YTUEFHzPaPp9SrYhbijg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8612 On Mon, Apr 13, 2026 at 11:59:59AM +0800, Stanley Chu wrote: > On Mon, Apr 13, 2026 at 11:00 AM Frank Li wrote: > > > > On Mon, Apr 13, 2026 at 09:40:02AM +0800, Stanley Chu wrote: > > > On Mon, Apr 13, 2026 at 9:16 AM Frank Li wrote: > > > > > > > > On Mon, Apr 13, 2026 at 08:50:39AM +0800, Stanley Chu wrote: > > > > > From: Stanley Chu > > > > > > > > > > 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, > > > > > > > > How this happen? If irq handler running, hardware (real IBI) will trigger > > > > irq line before it. > > > > > > > > Do you enable other type irq? > > > > > > > > Frank > > > > > > Hi Frank, > > > > > > Only SLVSTART interrupt. Below is the sequence: > > > - HW raises a false SLVSTART interrupt. > > > - The IRQ handler latches the MSTATUS register. > > > - Before the handler clears the SLVSTART status, a real IBI request arrives. > > > - HW updates the SLVREQ state to indicate a pending IBI. > > > - The handler continues using the stale MSTATUS snapshot, does not see > > > the new SLVREQ state, and returns early. > > > > Because reading register and IBI request arriving are totally async > > > > readl(master->regs + SVC_I3C_MSTATUS), may return two results > > 1. before IBI request > > 2. after IBI request > > > > How do you make sure second readl(master->regs + SVC_I3C_MSTATUS) always > > get the result of after IBI request. > > > > Frank > > Hi Frank, > The ordering between the second readl(MSTATUS) and the real IBI arrival is > not critical, as long as the second read is performed after clearing SLVSTART. > > There are two cases: > 1. IBI arrives before the second read > After SLVSTART is cleared, HW has already updated the SLVREQ state, so the > second MSTATUS read can observe the pending IBI and handle it in the same > IRQ. > > 2. IBI arrives after the second read > Even though the second MSTATUS read does not reflect the pending IBI, the > IBI will assert SLVSTART again. A new interrupt will be generated > after the current > handler returns, and the pending IBI is handled in the next IRQ. Reviewed-by: Frank Li > > Thanks. > > > > > > - The real IBI is missed and no further interrupt is generated. > > > > > > Thanks. > > > > > > > > > > > > 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 > > > > > --- > > > > > drivers/i3c/master/svc-i3c-master.c | 16 ++++++++++++---- > > > > > 1 file changed, 12 insertions(+), 4 deletions(-) > > > > > > > > > > diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c > > > > > index b84b324e4111..7d88e8fe3742 100644 > > > > > --- a/drivers/i3c/master/svc-i3c-master.c > > > > > +++ b/drivers/i3c/master/svc-i3c-master.c > > > > > @@ -672,10 +672,18 @@ static irqreturn_t svc_i3c_master_irq_handler(int irq, void *dev_id) > > > > > /* Clear the interrupt status */ > > > > > writel(SVC_I3C_MINT_SLVSTART, master->regs + SVC_I3C_MSTATUS); > > > > > > > > > > - /* Ignore the false event */ > > > > > - if (svc_has_quirk(master, SVC_I3C_QUIRK_FALSE_SLVSTART) && > > > > > - !SVC_I3C_MSTATUS_STATE_SLVREQ(active)) > > > > > - return IRQ_HANDLED; > > > > > + if (svc_has_quirk(master, SVC_I3C_QUIRK_FALSE_SLVSTART)) { > > > > > + /* > > > > > + * Re-read MSTATUS to obtain the latest state and avoid > > > > > + * missing an IBI that arrives after MSTATUS is latched > > > > > + * but before SLVSTART is cleared. > > > > > + */ > > > > > + active = readl(master->regs + SVC_I3C_MSTATUS); > > > > > + > > > > > + /* Ignore the false event */ > > > > > + if (!SVC_I3C_MSTATUS_STATE_SLVREQ(active)) > > > > > + return IRQ_HANDLED; > > > > > + } > > > > > > > > > > /* > > > > > * The SDA line remains low until the request is processed. > > > > > -- > > > > > 2.34.1 > > > > >