From patchwork Tue Oct 1 16:02:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13818456 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1FF74CEACE5 for ; Tue, 1 Oct 2024 16:21:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To:In-Reply-To: References:Message-Id:Subject:Date:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=xIUN1UzNsSCFj99ODOEVBOzNpMMeBFUJLziVuVvs9tA=; b=pokSwFyal8YPvQigZiggaUdr0b USArVAFYuv5BX3DYDrYqclDXNdGIxasy2he/tsB6dK1Busk2a4xoHEIaWK4S1PvBBZ4ReCeoiKx0d uYpA6i5ODusLg4NI1zx47l9+ERqM/mmzJ67mbRppNGUe/Ji12QSksnadfGeyGkW3k1P7AQoyMCQRm aKI8A2H9Jyzw5H03hWPD7DMoMkH+lwoAT3H57ELIIRXd7mSGdFUhr55OhTqRp7htRVKdrPbjbkeO/ /IYxSj58Y0bukGXeFvJXKzTkAmuTH0n+l7FXYJKD/DXZ5DUHQP5YAeWMI7mtop6TaHY5HCkGtyM52 w2h5/UcQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1svfd7-00000003Wnb-3s2G; Tue, 01 Oct 2024 16:21:41 +0000 Received: from mail-westeuropeazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c201::3] helo=AS8PR04CU009.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1svfbQ-00000003VKH-3rw7 for linux-i3c@lists.infradead.org; Tue, 01 Oct 2024 16:19:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WCzFaRsniwF/UmqiKbka3S5AcXtYCbESh6lO+CBw6yZ898bP3NtUTdggYSBwAAXhdci8IEMG33jplc89WoRvn7AqcUDy0v79xW3Ha0nZuSXrPynMZ4Kd1mFmkfSTDKqgtb1onS1NKDWoOz5roW3bwyt4MidCkQeOqH45jZKsE37OJw5cpNmvtCeZBUvZ7DMya0hkI7KA/JhjfuB1+xdcD42SQ8euR+tgUfcXNStRRPyOfuWdLxXWRSV6ApIK42eUwIBPfFHPrQfKSndgrSjVn9o5UaLyY9lIV5n+wfREOBUBo0DCZsbWq00BTqrSFrvtNrSg27LDxglTN8A7anCxXQ== 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=lUG3B5sw0m9FDBnZS2WFp6KjUgxzk050Wfyb+JjQsVc=; b=nPHBgzNGQ7FHHJ2Y1QM+Th1meQvnmzPtRu2XGbQ0uw9BB728gBg1Q7qhF9o2YCZFGNTY5tjNF/O+WjN7X3NIpO9+71ZMz1VFG1xWU7jsVIh/LvTiyyp0BSECi+oDpMH+tMMvoAQrNMvu0JbQsGamCGyaCzllbX3bsf9JlSw+diTRbqjY1ipd8sDR3sb70fI8yrLluEzhLs+jgyy7uQUwZfVke2xmDNA81ezwtT50m96HwDMaKHIjGmJiEpIA/6LQCOlg4HhhFmP6kZVQGa/F3smOHXvRYAEw/0wFQxtaJcFVaAiMbIiXIvh61sotUo/CpzttIgi6qAAwbNY40K+EdQ== 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=lUG3B5sw0m9FDBnZS2WFp6KjUgxzk050Wfyb+JjQsVc=; b=md4eq4uU3YIqrhIx10tW90ezYrUtS3P/wemPY/SX1XTB1J6bK5WTKLkXF8OrDYhiWDadcPLncah/X42l8m4y1fqUsehTYTI4X/Dfy49elXJiUGBNYWWv9GgifZXQiqxKzhyJlgm594cXIqpe4JEE/8r21/5sTYK9VYHa9sgf4jRWcU0t3SlRl2dAyZH9Q2YLrqSZrL/2jETWD6LYbKEQyE1r6N4CEXbyOj/XiaoDSfXAko1RJbU7jVa+NPoK5P2ugXhLEAkFx9Z4tZpgc7fX0k6nIv7tRd6Cdk/mx3MvY7rYdALL0sDioKrXvtIl5UfJALb1n1/+WcyjOLi8HjXIKg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AS8PR04MB7879.eurprd04.prod.outlook.com (2603:10a6:20b:2a4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct 2024 16:03:44 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%4]) with mapi id 15.20.8005.024; Tue, 1 Oct 2024 16:03:44 +0000 From: Frank Li Date: Tue, 01 Oct 2024 12:02:53 -0400 Subject: [PATCH v5 4/6] i3c: master: svc: use spin_lock_irqsave at svc_i3c_master_ibi_work() Message-Id: <20241001-svc-i3c-hj-v5-4-480ab8aed849@nxp.com> References: <20241001-svc-i3c-hj-v5-0-480ab8aed849@nxp.com> In-Reply-To: <20241001-svc-i3c-hj-v5-0-480ab8aed849@nxp.com> To: Miquel Raynal , Conor Culhane , Alexandre Belloni Cc: linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1727798616; l=2497; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=bXdIg5zPM9BaWXsC+SgKZ7H7HKQdnYJSf5AlhHtZq7U=; b=3dJeBl7aVLwecgJrIlp8kF/ymDU4ZRPIwNY3GrPbPaPg5DF6K3DRd7q8IXlQKUFDcB0pdSDg6 WLMO7iSISDsBqIjxFMOpXjLIx/p8WY2WSaM9GbMwwRbYe3xwfW2RksI X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA1P222CA0045.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:2d0::22) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AS8PR04MB7879:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b594cf1-5c5a-4e69-1aec-08dce2329ff9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?V67RefDIH7fqkalFqeVFkrHeVtSCYK8?= =?utf-8?q?9ApaMwKnmvS82Kr9zfdoxud+oKpjO5RCiQ7/5twOWxfbVGwm+6CfgQdxGb/hwcMHk?= =?utf-8?q?Z3ss13TDOpRaKprltYy0tk1qA296fPG+nQKovPn4p5JqtwLjDWwYvqiylW/Q7svJl?= =?utf-8?q?GInkE+coNtFkEXErsW/wPEhppqituK7JpV/qvhM3p3Nx3ra1Zv+ylRAHfmMsXJpOb?= =?utf-8?q?4m8s7BT17U672eHXhSN0G/5aC0m+IKhuAkiAk96mGVnxiGNW0QwN2t1Grs4uhQlYK?= =?utf-8?q?25D/wsuKeGTrO4YtXDxlfGeNjuYkWr+p8cHClFZvCXbCMwYr3mWY8MjrQ5gX+5MQz?= =?utf-8?q?z26msMDt4XsqJq57KEKagEVDzoBEwqQYTy3VwahbSPRRArHw2uC2d5ANQkRD4F/4f?= =?utf-8?q?aypDijSlApQCClkiMo4g7KDNzSv8qa2keeAKxOdP4Y9KgjmGP2eucp/NDHdsv18Rr?= =?utf-8?q?sjHDcfMqcD6bodm+iggrPVyxherFxB1DL6APi1YQPmJ1v4qYoQVXW9bpZ0U0PXvjv?= =?utf-8?q?cnH+H34dA2xrjvD6w/nyw6/DmqScEOkGsYDc78RBRaVgDG4KWbx0ZjUlStpqO8E8H?= =?utf-8?q?55AFwDZcgsOdLyfKhjE9Txzxd8ZCaFmzwi+C4liT9yf8e8CQ0Tihtb9ELmQyADZL0?= =?utf-8?q?OfX+5SB27Ik1fHSna0+RMfWjDI332JAndG+9xeEmANYeFJAX5kRcEu5bVlvKBZdFL?= =?utf-8?q?8dYY0F4h1sSOK7CguGoSUgQO9vNkvfx0vVFe0BUTjCiJE2cswxPdUM8nApdBV3T6K?= =?utf-8?q?nUzpL6hJ28JHjc1pNF314Sue5ghdKgE2Rt+xR3B5T6SJkQfZKlZLTW67oJAeg9m2n?= =?utf-8?q?CQKasWxKvaUNLgE0rVz0GcYo3Wxm5UjHjeptxWHVSGMp8Gxos0RNSNof4f25Rpdgu?= =?utf-8?q?/Iyu7UYhzofJgpduTApnuCR7X8Ouy8GOqFTyIGa74i0jrqIpQmoCaRuqbi2I7tO+A?= =?utf-8?q?aHJcLU3nwL+CjjJlCtdQTTk8il+F4za1fN68ySqmCoc3xy5bC8bl57PQk6IUYZNEw?= =?utf-8?q?EhHjwvy0We6u/uJzDH08VAtBBF17QUW5+Rf0nVKTc1byExRQo3tUJijeIExL6oJnb?= =?utf-8?q?30Ww+y9qkY+O/NCMmHMmNtP0xtA+lJA9AjP4BgI6e63+/ciO4U9orMOnpE5i7YU9k?= =?utf-8?q?rVX8BjCmvrwJerM1z1pkE9+Wseim9z+HysHLBWylyaxPOx7aX7hLyDXya127hhyAY?= =?utf-8?q?r3rSv/qgrB/kEo0xRDh0oWdeluY736BgkUanrb4LpZiho/JxyIt6xNavo4/u3ZV+E?= =?utf-8?q?c95fGRnpM/xGjZo2pu9Y7Nhu3onE8fKBDQg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?eXUWsN4R9PDOXVOP/pe7CkFZXtIB?= =?utf-8?q?z7n1agRS1hxRtBrYYq9zcb+lFowv09bzhyod2Yx7RXbV5WdFzksmCbwRpGxT9EFmQ?= =?utf-8?q?7PFhrDig0dDUAlvWYHmsia0R8NwIRWnqGnp3gxkfHOyvuWK7tz2sDTei8Cc+AMSSM?= =?utf-8?q?23Yi/5/QFo8jQkfJ0KE1S+Q6x+92T2cJ2oAhq7mtf7rKKl8s4GV1qyGCCq9BqNT98?= =?utf-8?q?IaaXPCToCDsElN91LSMUc48QHRzpdNawEbK0oGD9Nu5K04lfGqtZFpFsAueIReEB0?= =?utf-8?q?/xkQHZ7CI5Lg1j+PnjHyYU6egsoOZsFhP9Ro+FEO9nJIsrcdXxEvPgPY7UF+/qzMC?= =?utf-8?q?5ZrUu5rP46vUWQIwvNyoTjlhx507u0o7hlNztOQs1sbyYJ9HbjrtPpkyOpj9Kut+z?= =?utf-8?q?J3jPuu6z3G6gnvfUhhOCte1lCVOnI5lod0lHQCq45Y/fMzY4SrpR163/rRSjyP0s4?= =?utf-8?q?AuPtQBmDr1ThqoLMtLzrRQy8ZBtq8HGp4Gx7geeGF5wqNyOIEZjMN9nELIK7eIMRI?= =?utf-8?q?8vUkMFyu9XhhOrqHJ+87DVABD/BBwb77gAZTjhxmzaneYQDU/l160n/ol1SuqFhbp?= =?utf-8?q?yt9TP4DU+C6qGFRisBrOsabXaErNKBnjCLEgDG1wHCedLRMOwmc+H33e+6I+XnBdd?= =?utf-8?q?Vs4ZDy030EAFc0N87Vv/9W5xfWwAL2T/7II26UTyYW2v/G4phjCy9ns8cMtfVK7Qd?= =?utf-8?q?YDBBJ8/hOE3aE6uNFlQeDWOvKxv8hVIydRk50MyoejSiD1SArfu0ItfKQ0sBjhLSF?= =?utf-8?q?SjdriDliWxUop37MYlSyEO6U5g3GwUGx4MqEkU6A05WP72d7GS/NC7K4YAZQCi1DE?= =?utf-8?q?iHzMWLe0Jwso7EGY9CEthAbodNeNxRVhEgIngyysCtNfe92dSJB3VQCklou/GnqHN?= =?utf-8?q?10M8bNVLFfkDF5wEry8tOxesTMmceV2S0vjDsWWepj8/p83XqC6OUYw6UlaKKzupO?= =?utf-8?q?jhyznU0BJIKXOwrBquq4bmCUTWqjCoCIYpZ1wUNp/FYyqADuL7WlXhFAizWChAhVY?= =?utf-8?q?wDdsHC8ZZptjcqXUChZxIY8bPFQyLqtyag8F/VtapnN1iTvCaDjT1HzvAKgwbmBch?= =?utf-8?q?Ba9+WM+Z83p5LUgVJhqAuoi9EMnOyeK7SRHnECdWtq1HN6iIWuOJPByUh5/OB47EM?= =?utf-8?q?YwCNfM/auY2gGtqfUG59qpjH2lvIzoo2gENhyKg+4Kvk9Lyxo9oBzkHCnUqzrLptb?= =?utf-8?q?z3me+/mISrcvE9O64veU3M3x8/vcbe3L9XHl+4m+RKTUwSGHsEQh2SwO+vP4pxSVF?= =?utf-8?q?i0zpDtKKIDrKAhIK5hBam7wR2nFJzIW2rolVnbLJzqHGubXKX7MDLZc8pR/U4Gw+O?= =?utf-8?q?0k0Ol5v9c3UYGaFGWwEJsyUV4hggXinoIGzyAtP/BIanWL94dd6/XD2NKMoCFOiDb?= =?utf-8?q?zA5p6YFrOpFfPQtX69WsotzOrY3CsjL3hSmvsxr3EH8byO68PsoqZ6UqNCECLGQwI?= =?utf-8?q?Ey2lI4SzA0OwiAu6NNkfCV13q8aGYjbrtC/mz5GX9ICDHl/z3Q9WV7ns=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b594cf1-5c5a-4e69-1aec-08dce2329ff9 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 16:03:44.0625 (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: 8F40fmGiCNXghkeQ8H75uUvFv2KDiFAGFfPVmeAmb6H9AL42g/dfjDSQMOK58w9ddLOC+kfV3Y3voRR4d9DknA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7879 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241001_091956_977962_175A9856 X-CRM114-Status: GOOD ( 11.55 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org According to I3C spec ver 1.1, 09-Jun-2021, section 5.1.2.5: The I3C Controller shall hold SCL low while the Bus is in ACK/NACK Phase of I3C/I2C transfer. But maximum stall time is 100us. The IRQs have to be disabled to prevent schedule during the whole I3C transaction, otherwise, the I3C bus timeout may happen if any irq or schedule happen during transaction. Replace mutex with spin_lock_irqsave() to avoid stalling SCL more than 100us. Signed-off-by: Frank Li Reviewed-by: Miquel Raynal --- Change from v3-v4 - improve commit message - needn't mutex here, other place already use spin_lock_saveirq to protent i3c transfer. --- drivers/i3c/master/svc-i3c-master.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c index 5df0ec02d73ce..1ee6ce186195c 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -436,7 +436,16 @@ static void svc_i3c_master_ibi_work(struct work_struct *work) u32 status, val; int ret; - mutex_lock(&master->lock); + /* + * According to I3C spec ver 1.1, 09-Jun-2021, section 5.1.2.5: + * + * The I3C Controller shall hold SCL low while the Bus is in ACK/NACK Phase of I3C/I2C + * transfer. But maximum stall time is 100us. The IRQs have to be disabled to prevent + * schedule during the whole I3C transaction, otherwise, the I3C bus timeout may happen if + * any irq or schedule happen during transaction. + */ + guard(spinlock_irqsave)(&master->xferqueue.lock); + /* * IBIWON may be set before SVC_I3C_MCTRL_REQUEST_AUTO_IBI, causing * readl_relaxed_poll_timeout() to return immediately. Consequently, @@ -456,7 +465,7 @@ static void svc_i3c_master_ibi_work(struct work_struct *work) master->regs + SVC_I3C_MCTRL); /* Wait for IBIWON, should take approximately 100us */ - ret = readl_relaxed_poll_timeout(master->regs + SVC_I3C_MSTATUS, val, + ret = readl_relaxed_poll_timeout_atomic(master->regs + SVC_I3C_MSTATUS, val, SVC_I3C_MSTATUS_IBIWON(val), 0, 1000); if (ret) { dev_err(master->dev, "Timeout when polling for IBIWON\n"); @@ -529,7 +538,6 @@ static void svc_i3c_master_ibi_work(struct work_struct *work) reenable_ibis: svc_i3c_master_enable_interrupts(master, SVC_I3C_MINT_SLVSTART); - mutex_unlock(&master->lock); } static irqreturn_t svc_i3c_master_irq_handler(int irq, void *dev_id)