From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020123.outbound.protection.outlook.com [52.101.229.123]) (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 2171A37D11F; Fri, 17 Jul 2026 18:06:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311609; cv=fail; b=uCjmaCg4eW1FgFJ2ciANYWAAj1s9JkfLw3BfqLZH2qBD9dqYvZU9myfMoyRTpP0xI1+V0aTmLwhZVvBZPTyIvRMtQDoJWdC+fZNq8HQQrts/960WFESu1fuPho/1BtiEWHeVPDAPzPuOFUe3hdrZjgAAYIUmczamFQYKZYQIzIo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311609; c=relaxed/simple; bh=t16GeGcx55ujFXJNFKj1ujJHV/FZ5Uli5PfwEnBxtk0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TaJuEFZHEhKgDHkULNaHb3sOp//v2SOeNyBWEZXla6rpC8QxhwWBqPGyunu8g6pv1yDmOSlzFQoAs8t98uPpPpwGKr4Siwk6I2yQYK//xjXqqcRNZizc6GKZ9Wwa21ozc3uiAw+UNwI1GXkkdv2HWo0dETeiU82FyCK6ejhCAX4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=wGe0BGbU; arc=fail smtp.client-ip=52.101.229.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="wGe0BGbU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SZRslEGFROF6ylGCgtuqzeFTD+Ck1qRUlo5GLoTIx87IaHbrFF7tHdMgnM0iPxOCBxS89LP042FpAwUbr0T3abrVEzXBQhY8fdwvUUvzw+Wkd6Y0hHXiJw2KbNu1rajvVdb3RKOQzzIs+ELz7uRnfXjz+dKXZ1kc4FX86rb5TbS+AszdvFlibMRc0cQdQV5GzdIgrBVsx71v8Pwd0qRzTtDNjzarBDyVzjm10ITxwjSQulsaxj+TH9Hg7V24/kW3KtkdlK7+YOz8Njun1RPkA/q83kvmaxhQtgC4BTl+rqSg80xFyXzs5JDCJXOMR4jUQcfzhkxi5zv474/0nJYNkg== 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=S6S0DqDdv31B63hzWQd1nPKPyTIO9vo66q5xhJGsVM8=; b=iMeR9MqtqIXZu6lH1QH9aR/7BJ0/zxcxeSsfZq9Dv8qlWmCSLVDKR/cZgflwzxAh1h1HCmsO0A5wokjgwEwEoB3egYatnaSmpDDzFv/o2waMg5WUX+xTUGfTmYArurFENnCxvvL16UC1bBh37dvfexn3fhEX6xVAkZ1DfY+ezGryYK97kQuNEgL78OSEZkmjaK2RINE2VIVL6Xxq+ykT7Yhk32d7PawEnTnS1+khrx3swK844s9pvwff0Pjd1YFxgcv9T+LN1vcInfatjvkRpqos8YrRuwJMW0qVjnlWh9WtlKmhaebtmMk6S9UZYB7ZuFHjWmomTFske9ybkQfgQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S6S0DqDdv31B63hzWQd1nPKPyTIO9vo66q5xhJGsVM8=; b=wGe0BGbUepszu/u3HB+KySKEVulykFnphowCSmTkYrSNe6seiu+XFP8FZkMgjeUWwW/vfjulMXl4sUJFaCoSgJcmXjuFZj2kZ/+LMeLFn124YQ3qK3b9Ff8uIB2NFncKCyed79iqSy1vSBIGwIxad+hb2zrApZ7wtUX7L1ng7mE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:43 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:43 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/9] dmaengine: dw-edma: Fix HDMA channel status register access Date: Sat, 18 Jul 2026 03:06:31 +0900 Message-ID: <20260717180639.2643243-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0133.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::20) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: 36b8b684-80ea-46f9-2f62-08dee42e28ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: DAK8YrWKYKOaZf4IFB0jV4H3YPAHAxgZIHGUhbgzFGYhKuqd/LjXbsWpmP45B4b9e1v+31aOhSM724q5vvVcI/ZyMPu/mX/dN9/7t5PyIL3mYxd+T+t+7HFHVyBXjo+EKjbsSmfgFtFxB1ayC5jTpiVuq3l1j8fktjeDpPblTNl44k2d7FaPBWH2NX8oblT75NofGDQ1E7q5RnP/dfMZe6V07CsCbiagEiq4qlJjlNt08flEe3STtDK4i5TWEP/Ga8JDexAxFIG9tHQuiIpcoI5Beall9zH5PNLI9zD4uFQblJGeOHzYN0TxbyXZx4Q3gpfptg+UR1K4Ay7nvoyWziDrq2PYNlhzNUWHiWA8OiysBWn8ETGseFQHulrFBQAfY/7O8AMtz7En/JPzA88fwuQJmTPUsUNudmnakxL7JW4s5LZ1YpJXnn1K7lb3l/byNnxsF4gJwCCjlBrl70o6+a5ZMevoIxcDVmztRSg46Ftcm2wwtpSYJ29eEUxvUzt2CNw3vGAHArCO5m2hWGc/p1+CGn56tRt2DSVXijtIQlbICSJDZbeQgX97FbK1+2jN+9mLiQE1uaCVRWQ+JjVy00ivKzYFmiREnvEgG4CUyN1lidSrsUEfOg0OvYZNV9vlIN2LZI7vVzeNSgxUK/h9Cnbui1nghmoe/RM37oYzy3Y= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uEyYFUd+ZsJvCsBBjFGObUPWlmBqIDRANQ0mZj6mVSYkCEtr7rYrDBfiKIhX?= =?us-ascii?Q?ntj08oDITGAgcuDsR/5dHR2UFFRCvtlXjrZBSgqwE0u6T/95K59Vr+BXlNpL?= =?us-ascii?Q?vFT/1Jh0wWJ+dhzf1XMl0oarNrFWRN23vDYmfrFbBCtgWSocBQB5+0kkTuDk?= =?us-ascii?Q?ykPKSncD2mKta25iZ4/O4s306n1figlO4kI6eL8T2O354aA0JnV3I/1/DDsk?= =?us-ascii?Q?Tj8UWutXwb6IdZ/1XkGKV6JtP/rZtv7RSopCeNmPIjrArpf4BdGFk09NCkyl?= =?us-ascii?Q?i1aC2yAkAfEYsWErAxJzEFEW5ZsjVJMmGf1ZvGPeGuFK82Dr9H1NYbs4VQS7?= =?us-ascii?Q?8xwKUEeqtSf9hdylp/CO0ZezLapwI+qt1KaVC1HgA2VcjZhrj0czGhSqxORz?= =?us-ascii?Q?t/pY/lMGysAmXSG4yvuJgi5ae8vONZd4x/uQp3TtIQiOFw7tgdPbW71dw0O1?= =?us-ascii?Q?v0ZBwsDYKxddB8y1Ou/qWrQxGcrAltXxkGSqnsFCGgsbJcvGI2ecvl/faqL5?= =?us-ascii?Q?g3NGrpC/jK+ff9R0x2cdFi7l3PSQoPFYJvunup4xCWkiupFWOyiLFD2qbaAs?= =?us-ascii?Q?OPaSoU28pC1UxzN3ZnStlOEf5zmdUcT/DClbbilz3wTHrOqEAAZeVHACPHPC?= =?us-ascii?Q?v+/+CSSOTz+1oUFsK0FQ6efj5mxIqHY+f9RokXDPEPraVUYJTx5YFxal3M2j?= =?us-ascii?Q?fsKC+Wgsp48NSvrV7Yo7rEb+xA4XN7nOLmDarGVasM9iao71xO5q37e5lCur?= =?us-ascii?Q?DZfhR7p9e3jjPy8idPQIBcMs7MSa87STSz9xvksY3HpKja/rRD6EHosTRefn?= =?us-ascii?Q?d91cD/fq2H1iVHMxZ60LyGk+9ky4cqzA/zgr4Yzfvb/E1JLkBs972UwSRITe?= =?us-ascii?Q?pb6Z3x6MNBeYlIGD+7lMrICO1bDwTjcTwpQBsUPCAnYvGn9Oq6NNptDaO16E?= =?us-ascii?Q?qpd8Rkp0V2M1i6KpCOfEvv3MiI8WI13bAavdqsPO32gMecPnR9QiVk5r2rCr?= =?us-ascii?Q?LiVYm9v/sFnnhhIkVgh2uaGDMO+FQopNH5Cjce8mHnINUSe9MwrXXJF/8yUQ?= =?us-ascii?Q?lJykgR7xt8PVG5HoY91DEt2ExvoSAJZYnGi+1PO54X9F4BZpSuGhL6/WXdUo?= =?us-ascii?Q?hCaG+jgyNjsPeWwJd2USIPgaMKzscssNU+/C4DRRkwu1PuuiDcJNfxXDe4BP?= =?us-ascii?Q?Ffhql6vtMA6rQ//WTSEDcme6vHCch/Rmg546sNs/wjV5XJKSrSPw87qdNoyy?= =?us-ascii?Q?6J+JSZSPUE4Nxgp/pyS9anbZb6dt/YTQGee8CpTn1xs3uAUEHYkSvhcyvz9E?= =?us-ascii?Q?elNETFy22EbArbBzm43rPT/BLZ51CwjD65oQNlhbZynQQhBoGv6YS3eRl+kT?= =?us-ascii?Q?S4KfxXLoxRMoqS1t6z43GqhA2+w7StmN/eLwMhBCRiZDzW7S+snGM4lX7yg9?= =?us-ascii?Q?t1EU+ikKttgdrF2PpzhFcxXy1BWyPqsQNVeIdCBap16P4kTRwqoR9ThHrabo?= =?us-ascii?Q?pr0JiBgtN1KJHkdBMAx0m9cePf5dtt61rWA+EhVoMQWMb6h0kp7HtqPMTpE3?= =?us-ascii?Q?+vqIJPP5yKbcYZAEnagebUi4VlpscdFB6r61S3+sM+jC7BvOwp0P4Ao0D5t8?= =?us-ascii?Q?HBF2dx6G1LIYdpTQyfRtVrFsGKIYXNn4HV6KmuMQOih58GpwL3RGCYdVRXtU?= =?us-ascii?Q?rVGDa3xx7jRPrQh9veDf+kN/AptEZf8dmd7ITci/BGQy1zb1tK1B1of18p+Q?= =?us-ascii?Q?MnVtIrde4s87SsSWi2lkYJ0UaY/E4Tw5qFt3z4md8tOwuLM5w2D7?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 36b8b684-80ea-46f9-2f62-08dee42e28ad X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:43.5760 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NXF7V1AFFT4IlrNUWEGVaq4gIdp4QJEiWF6uBguMtepBbzP6UlIconKF2+6XKGhRjrtWWWQ8PX7tGjnfjyvjMQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" GET_CH_32() takes the direction before the channel ID, but dw_hdma_v0_core_ch_status() passed them in the opposite order. This can make the status callback read another HDMA channel status register. Use the same argument order as the other HDMA register accesses. Fixes: e74c39573d35 ("dmaengine: dw-edma: Add support for native HDMA") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-hdma-v0-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index 87ba3e8c9fa1..fe64f9931bba 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -90,7 +90,7 @@ static enum dma_status dw_hdma_v0_core_ch_status(struct d= w_edma_chan *chan) u32 tmp; =20 tmp =3D FIELD_GET(HDMA_V0_CH_STATUS_MASK, - GET_CH_32(dw, chan->id, chan->dir, ch_stat)); + GET_CH_32(dw, chan->dir, chan->id, ch_stat)); =20 if (tmp =3D=3D 1) return DMA_IN_PROGRESS; --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021086.outbound.protection.outlook.com [40.107.74.86]) (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 C690537EFFD; Fri, 17 Jul 2026 18:06:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311612; cv=fail; b=CpzjvotaLB/ooQWpz7WKM28IkpMCSfKU59TM3Q7/cWwvLCjmQThCyO/KWWEznYu2CVD5lp7OfwyogHfnVCdeArgleAsMAWJe4Xo8p1d9lPn0iBSOHP2eUvEUw5OAIOLTbbI7Vu0bjGkDDqaRyVLyJiEAulKK/8QQvlTiN+2G3js= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311612; c=relaxed/simple; bh=pEAoeRJSAMC5mBijVLQW+wcoxnkVB1cEELrlhCOXxXA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=shAHJXQi6D6wpa9WRYUkUoXKQ+ZwXBEHbF6+gmBogLAsqTQxS7ys0oALh4qlh4+Vjtd+GWfVX5Qiayr8d1h87AyeE1zNyB12mNbIM/me4PuFOsPK+z4k/HcotLe0xIDL5gRl9PStsqxokV7OGEjgeiHJu7OAWimWSmeQaQilg4c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=eJ+NiSuJ; arc=fail smtp.client-ip=40.107.74.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="eJ+NiSuJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NMNPfUnMPjn5IQKAVC53xk4qq4X5OirkFjvGr2HtUMdFc+8eToA94NzA88BA6Eb+NlmMM5BUjFPaHjsgF89ijq28jYmgIiKhVg8zVpyy8SM23qiSCfNarS8Lft1mPFQOZrEkw1RHTrOKAJi2Z/1/MACiqQc4ICyAtrKqVS2yI+XzPDEFjpIZ867GAu+S5r65RaICbtUGbGm9TCnQld0Y9tCLl7z83r+1KhqHWnjntDSwDKS8jc0d3cgL35n70TpaXf6dpO6cMzNuVUBABtsA6hK64o2XPTGh5gcYlvpm+kzFzQvQUb1YEe//7zmyHEjpYwJ9fTme9Gjl0s4k9kc+Uw== 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=T+KJMUv7RAXO1HDk7pnbQzfGeGpkzGgFTSpiJ12xPtc=; b=wPJEU8/eu4LJOIR5M+9LvpWdQUV7irzRlArIkRR3OMuDriD3i9aT5v/QOCDY9Uq5UYHxt7Z+em81J3rTyWPE3aBkmqD1up2NsVJPWAb+fJiQaTdd7pqMPQkLUfFkqbdhJ8o+UwzyXepQ55wDDaNsKASiqT79Oltd4zhDRSOrtz1Zs1t3xvNRqj44OyO5X/mJ6D4j1Cn7840GQ1TY+Rc7hoaAvj2pwL8qrVODZMTViaCphSCvXBFPnWvijUYrPhaB+1fxwzggYPbBE06q4trhjq/FDCNnxnmkQKnDQLfMCtzEnFXgY3GtS4qIWhmCmNXlOyOVaDsNtj1DD45ZpnSPJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=T+KJMUv7RAXO1HDk7pnbQzfGeGpkzGgFTSpiJ12xPtc=; b=eJ+NiSuJgPAdl2eeV+VgsuUD7yjfSL6zUE9J74SSlwXEq3aiby7FIuuHHsA1QzbPFpesIBalVp+27mFbpnSzWi9VVwxJA9iMwIA9fXaqVbpvQhYwPJ4zXa10qwcQMbgbid6vztf9TIGHoIWwv61RViuyZcJpbrutPGUlgc4a1cU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:44 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:44 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 2/9] dmaengine: dw-edma: Terminate all descriptors without callbacks Date: Sat, 18 Jul 2026 03:06:32 +0900 Message-ID: <20260717180639.2643243-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0123.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::11) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b4f6a99-008b-451a-12c5-08dee42e2921 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006|5023799004|6133799003; X-Microsoft-Antispam-Message-Info: /TzRupiKDNTJpqZgKlMOulFLzbGl32PYHajjn2cMF5EhcI0vqdUznu3IG5nfnQ/2lVWhkrPvdoY0j0kq8nHNkZszHQx0/UrRCjCmPan5Kr/QWBJMjLit3QTQ+h3CKSaD2DvCZssHXzkZxjhKPWf32v3ShafmDWY3s+0OE0qz1Gl8c13w1hy2lxo8I5GLwJp+iuoS6L9neGzzXGvYr+W1I3osg2PMoW03w6LtNPPNSZwUiiFT6NqxEU+q79gOSNYZibhw1KVkFI1sA8rM73pojGtU604O7LEToqx0sIZnjo4We3VDVFT0BjkQHP5WGtjS3WVv8uCrkag6lqAjKl8JIYld/mFT1eEaFA697DrYFcVZwPZFtSJbYHZC6eCuVTllTgfhhT8xsBVPIj4vpQ7CqwY6IOHFGNNx+kGuIJ9ouR1zledUmd4DPT6sz6nrVfYcxMJxbHrBtq9FQVyCyFfwNBAfJ6XWNVOpwieLUnTNmj8Kx30WHB2IFXXA8si6KKv5eXm+TGFUNDLD/19axgknjjy5BbkIV7sLdQFrmMEzmmEjzQtfbgBnONlJvgr3bu3yPF0Y3+SkPRmukz5N58lks6eZ7MAGJVrM030eonqD4fgnLuB1KY3nxi8rbvpvbfzrf6ZiO4tVgqvsnn+B2UC6PIMgbM4a0YRF5DyrMpMPgl8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006)(5023799004)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PHOZLlFsma7hsFKvE/JE8bH5+evApWo5rARWtd8Mq22WCgRqNkWPYzvFAPb4?= =?us-ascii?Q?Xkbyx9F3TT3HRbqTLR5N2BRKH1AC5tCiPVzZMuHMoxlqLhqkY/lNai1dMR4K?= =?us-ascii?Q?6DVP1/b+kFR79oiB0lOO99mwxgDADZyDIqJzFdJvE2bWDz8QGS07jE41aMaX?= =?us-ascii?Q?HZYso+Q/oGyWjFBzflxrtrtK/JA+d5l8Nc7wZg4wVOPPToS49f54P+rii+87?= =?us-ascii?Q?b9MRA/r4w2ui62wufX1tXWJlPMPxBZdisvXNVgJFF2x5rA6OtBhtqPub99PM?= =?us-ascii?Q?BuhP/yrE9KTyvGZxODW5W3HzDpRoJrYMsZC0HK45h53w8qB6mN0/AfJEaNCq?= =?us-ascii?Q?9qHPNQOhMi2tjvISOhtDBRuMvxgiO28Frgvsm9/hCQou10giOEN1ile+V3oN?= =?us-ascii?Q?Sl+ekOQUTFhagXRRW6279smGK1tIWVNnF0MH+0YICWYg7ir2j5S7VGPtquWj?= =?us-ascii?Q?gYEroAwI8MIMvFzJzipHsoXKiF/9o1l9zYqRGOUVCE3rhvQ+eZfgqHJ8X3nC?= =?us-ascii?Q?N0ncTIc2IokHypFGIaOwNoL0ZRYyVAm4kl0IzdtFiYf3bYyuVeMpKkmqsZlA?= =?us-ascii?Q?dAjVvnzwLpe8Z3IH3Qd6xIRBz23HovcWVRlbLSMyDZnTykmTleCKVxT/byuH?= =?us-ascii?Q?GmvGgM8Xl69hq6/LDzqK4ZBCCFLPxlAoa4FFNZAAf/oGRFBgRf41hmiefRll?= =?us-ascii?Q?CmEmre+xhCOfsyRjsdOE+6MQBb9mFHgcxMY2G6a6untp6RPa6SBA3Akt+t/J?= =?us-ascii?Q?fxG0UcQ/wQbov7eqV8z9o3W5gPB+TLF9Mai6Q0vZShIPkSmcribQfeuSuefF?= =?us-ascii?Q?w8Cbaj5SUTOWDOCWjiMRHWlw507hW47BhFORLm2gcV3zQPRTTJsmfSVQi8pv?= =?us-ascii?Q?k8cqOd79nwQhBgx2VaRQM3Q5hNCBYArGOr7r+/JMuYCjU9Wvl/9IO/e/bwbp?= =?us-ascii?Q?QO/kWIPawWSTM/mZ2It2t1Rt12C+6Xamb73tWNIWg26Ahvt70CA1uLOeyhAh?= =?us-ascii?Q?VyNJhlfSGmne/wBqrTTddxSoxyOd73QZ4xUaE2wkkhgGLfpCH/5rlDDM9JF7?= =?us-ascii?Q?EHPO31843BKpvJQ9apnBgwBuwX5TrL3Du6Zf7gS80wMzhEncmpSqkP3erKxA?= =?us-ascii?Q?Obpv0GSY9MAYKSqG6S3+LkSI8UYMMty4uJTj3NzLvcvziw+p9sYUvyTFuJ4D?= =?us-ascii?Q?3bBYafmVCTk5pGJnY76FMAYabNfy/VJFFbwXtHcu9yZnEorcWO+UCdZzYwPs?= =?us-ascii?Q?7mAnpEwDpbDqgPiSE4UyMd+/WYG6WKnRAiA1a444gb/dSbEGArWlv0l2KQDa?= =?us-ascii?Q?hbmeqTLAYxntRG8SSrt9t3CZxfagM60riv86ZrOxOA0LoTo/o2xLqjpgJW+4?= =?us-ascii?Q?KgSeSkNi6b7je0gnJp9YMgwA18EKkiaRfq1evm8uSOctBwHdD8zqHD2OwB3r?= =?us-ascii?Q?vFdZwcWksU89dWTPE9fNxAcXxeHPO1y4IU4VY5R/KiPXzLMmPlh4T9pMIv+f?= =?us-ascii?Q?tz0oEC1qjVGK6fEW+grdEw8wSsmcVHmNlIqKbbo5QiBSrbcDloVLdQImAAir?= =?us-ascii?Q?rkURTurKbrUbk57KJMm/um946wOaP+MAYA3BIy+qVa6fCyVdyBmdAGuuO5bN?= =?us-ascii?Q?2LSCKerbO+zdpsHO6Wkm+oIhxs0CDDvTWkxxeL/5bTjmEjmp3sOheNzF0d+t?= =?us-ascii?Q?hgA88cleMcsrC313NK+ozBBgdWDZ2alk4mbjVwMNxErh3FmYO7eQTt3H0cGU?= =?us-ascii?Q?3PuuMOChwc5swdv9sZjS9/Nt0BNx/SspWw2PdP/6afcX5g+QCEsM?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 6b4f6a99-008b-451a-12c5-08dee42e2921 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:44.3366 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mFaBk9tdr3mnMO8yukxBEwDGctW0KgkHZ13jn5s2p4zrXV0Z2C/q65AP8D2Dvc6wdlktnwGGF6XwZbaTf7rdlw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" The DMA Engine client documentation says in the "Terminate APIs" section of Documentation/driver-api/dmaengine/client.rst: "No callback functions will be called for any incomplete transfers." dw-edma instead calls vchan_cookie_complete() when a deferred STOP reaches the interrupt handler. This schedules a callback for the active descriptor and leaves other issued or submitted descriptors queued. A late callback after dmaengine_terminate_sync() can dereference client state that has already been freed, while leftover descriptors may later restart into reused buffers or leak. Move all issued and submitted descriptors to the terminated list whenever termination completes. For a pending STOP, do this from both the DONE and ABORT paths. Complete their cookies in order without scheduling callbacks. A STOP can remain pending until the running transfer raises an interrupt. Make device_synchronize() wait for such a pending STOP to complete before releasing terminated descriptors. Reuse it from free_chan_resources(), then release the remaining virt-dma resources. Sleep instead of busy-polling while waiting, and warn if the existing timeout expires. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - Add Frank's Reviewed-by tag. drivers/dma/dw-edma/dw-edma-core.c | 90 +++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 14 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 384c482058d1..8b094857f821 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -7,6 +7,7 @@ */ =20 #include +#include #include #include #include @@ -115,6 +116,35 @@ static int dw_edma_start_transfer(struct dw_edma_chan = *chan) return 1; } =20 +static void dw_edma_terminate_vdesc(struct virt_dma_desc *vd) +{ + list_del(&vd->node); + dma_cookie_complete(&vd->tx); + vchan_terminate_vdesc(vd); +} + +static void dw_edma_terminate_vdesc_list(struct list_head *head) +{ + struct virt_dma_desc *vd, *_vd; + + list_for_each_entry_safe(vd, _vd, head, node) + dw_edma_terminate_vdesc(vd); +} + +/* Must be called with vc.lock held. */ +static void dw_edma_terminate_all_descs(struct dw_edma_chan *chan) +{ + /* + * This order must not be reversed. Cookies are assigned when + * descriptors are submitted, so desc_issued contains older cookies + * than desc_submitted. Completing desc_submitted first could move + * chan->vc.chan.completed_cookie backwards when desc_issued is + * terminated afterwards. + */ + dw_edma_terminate_vdesc_list(&chan->vc.desc_issued); + dw_edma_terminate_vdesc_list(&chan->vc.desc_submitted); +} + static void dw_edma_device_caps(struct dma_chan *dchan, struct dma_slave_caps *caps) { @@ -236,20 +266,22 @@ static int dw_edma_device_terminate_all(struct dma_ch= an *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); int err =3D 0; =20 + guard(spinlock_irqsave)(&chan->vc.lock); + if (!chan->configured) { - /* Do nothing */ + dw_edma_terminate_all_descs(chan); } else if (chan->status =3D=3D EDMA_ST_PAUSE) { + dw_edma_terminate_all_descs(chan); chan->status =3D EDMA_ST_IDLE; - chan->configured =3D false; } else if (chan->status =3D=3D EDMA_ST_IDLE) { - chan->configured =3D false; + dw_edma_terminate_all_descs(chan); } else if (dw_edma_core_ch_status(chan) =3D=3D DMA_COMPLETE) { /* * The channel is in a false BUSY state, probably didn't * receive or lost an interrupt */ + dw_edma_terminate_all_descs(chan); chan->status =3D EDMA_ST_IDLE; - chan->configured =3D false; } else if (chan->request > EDMA_REQ_PAUSE) { err =3D -EPERM; } else { @@ -587,8 +619,7 @@ static void dw_edma_done_interrupt(struct dw_edma_chan = *chan) break; =20 case EDMA_REQ_STOP: - list_del(&vd->node); - vchan_cookie_complete(vd); + dw_edma_terminate_all_descs(chan); chan->request =3D EDMA_REQ_NONE; chan->status =3D EDMA_ST_IDLE; break; @@ -612,7 +643,9 @@ static void dw_edma_abort_interrupt(struct dw_edma_chan= *chan) =20 spin_lock_irqsave(&chan->vc.lock, flags); vd =3D vchan_next_desc(&chan->vc); - if (vd) { + if (vd && chan->request =3D=3D EDMA_REQ_STOP) { + dw_edma_terminate_all_descs(chan); + } else if (vd) { dw_hdma_set_callback_result(vd, DMA_TRANS_ABORTED); list_del(&vd->node); vchan_cookie_complete(vd); @@ -770,21 +803,49 @@ static int dw_edma_alloc_chan_resources(struct dma_ch= an *dchan) return 0; } =20 -static void dw_edma_free_chan_resources(struct dma_chan *dchan) +static void dw_edma_wait_termination(struct dma_chan *dchan) { + struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); unsigned long timeout =3D jiffies + msecs_to_jiffies(5000); - int ret; + bool stopping; =20 + /* + * A STOP may be deferred to a later interrupt while the channel is still + * running. Wait until that handler completes the termination. + */ while (time_before(jiffies, timeout)) { - ret =3D dw_edma_device_terminate_all(dchan); - if (!ret) - break; + scoped_guard(spinlock_irqsave, &chan->vc.lock) + stopping =3D chan->request =3D=3D EDMA_REQ_STOP; =20 - if (time_after_eq(jiffies, timeout)) + if (!stopping) return; =20 - cpu_relax(); + fsleep(1000); } + + dev_warn(chan->dw->chip->dev, + "timeout waiting for channel termination\n"); +} + +static void dw_edma_device_synchronize(struct dma_chan *dchan) +{ + struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); + + dw_edma_wait_termination(dchan); + vchan_synchronize(&chan->vc); +} + +static void dw_edma_free_chan_resources(struct dma_chan *dchan) +{ + struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); + + dw_edma_device_terminate_all(dchan); + dw_edma_device_synchronize(dchan); + + scoped_guard(spinlock_irqsave, &chan->vc.lock) + chan->configured =3D false; + + vchan_free_chan_resources(&chan->vc); } =20 static int dw_edma_channel_setup(struct dw_edma *dw, u32 wr_alloc, u32 rd_= alloc) @@ -883,6 +944,7 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) dma->device_pause =3D dw_edma_device_pause; dma->device_resume =3D dw_edma_device_resume; dma->device_terminate_all =3D dw_edma_device_terminate_all; + dma->device_synchronize =3D dw_edma_device_synchronize; dma->device_issue_pending =3D dw_edma_device_issue_pending; dma->device_tx_status =3D dw_edma_device_tx_status; dma->device_prep_config_sg =3D dw_edma_device_prep_config_sg; --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020123.outbound.protection.outlook.com [52.101.229.123]) (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 F035237E314; Fri, 17 Jul 2026 18:06:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311611; cv=fail; b=mztIw0eyMY69iblopMeEkHjBLJRwwqQMFnsySP/yBsYr1dMBSNI/8XqkdsS3vysDP7gdW3uOjaZpKvADZMItuVjDIx+/8ovgHEIzmvHJNlJZgTHvnBW2pBbm+QHtY8knTCW8jNplcTyQoSlRYFioGhcVSbd2MzJ91w5jTLmzXoI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311611; c=relaxed/simple; bh=EoLPbp29VsqLDt+pHvup2vbO3DMGmDfAcQYwYQCmjl4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sqg9fFABeptVUXtIqJ+zK4TEO8SS8jsyoEPUkANbX4ZtQW3TH37NkL1I/RRIRVUAIk/IMFr1zUp7HHaCBnZxfx2pocsjFYjEP4VUCNp0perhamRNYjiANVS2QyMPCKmA/dAmcQ8mlQVu2JNKHxi1T8hIKC2zqP8bFsNS5sUuJu4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=PaG7MgYu; arc=fail smtp.client-ip=52.101.229.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="PaG7MgYu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e4StgWE1rG130jmliZNmIiQWY7wFqLbDwKRWUJY6rHYjoU+QywxhvtamEEwJu+/IFEl838I7WHbSnhc7HGeY3jmT9BzeprMEipd+A2+5aW0K8OBhlrpq0suMyq1kG1SZR1rKOq+ZY94ZYfBJWXBdZLOoofZQCU2JbKnmjkKYZNOB1owNsDjrGT2ae3kt7m61mX+uzW/ospyz9KU/nQ/zI9gA4oeOpjui8NBKQAXS4fzHxA/Q1ECgKb26+pd0MBKZSx4nNXN+GD1GPVvLx1OD1yTcntvYusGCxB5c//QOjS+FS9P4dnZDqbnD0dp8c7GFq4xfNeHQ3498rmuMKbuQ1w== 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=fHNILRq9uZT2uhejW/7UCvHVThN9jGm9DXi4kRKVtPY=; b=CWZT9zgyqr2O033zznxNitsvt27wFp9MMyINlIrpPitCsQqtvDB9bExfU9uiO5bScURsq6nD/VFRy2KU7YGDCFYCjxGuIHMXnAVWDnl9Jhsft293xOWQjvuLBtI9AfpHfut4o1iAnVsrb+6xtwSVfI11C68wsdqIc1aA5UhKuWyjoaSeLHslhEPpxwWvHq/Ou04kR2xiimk7iaq/HUef9s/RQcsXnql0UdgA5uaZJtLoLMdTjiAqc/0CkYFFNgs4B+ZuXAho3chTDiqU1K30qpmg1/5ZNgo6u7TqXShE5WS5w6cjVXSwq9MlmCemn7OHXIpS7YH6n9uE80Z6F2BkMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fHNILRq9uZT2uhejW/7UCvHVThN9jGm9DXi4kRKVtPY=; b=PaG7MgYu0SFeP3RxHJ96uv9fAn/aancgGeWywhACPa8c2HIff+CieBLns8pBZ9csEffrSps1V3E4Cx8e0fjFY3tu7js4snm7MHgOXMiO1SYAP50TKy43y91XOPf9PJHomrGRos/z9mSZIh9ZuUoPPBw5gLMdZB6/aJ5o+4iPC3o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:45 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:45 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/9] dmaengine: dw-edma: Serialize abort state updates Date: Sat, 18 Jul 2026 03:06:33 +0900 Message-ID: <20260717180639.2643243-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0009.jpnprd01.prod.outlook.com (2603:1096:400:a9::14) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: 3215163b-9646-491f-6f0d-08dee42e2994 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: RSMMHCZwz/FZM3HEoXFA4ED7P0MjY7rTu7nPwl+Cb4H8fri4c2l7zHtioIBkPOq8miPWLzv759uEUaw3ASdclcXNZ2TqLslJJ+kEGD1QB3TwkSFXrJtF5eFLppZtundFLNRwoxUI96wnUeqoTeeFcNd7KB+P/5eOpZGn3NMMIOM79Mz+g1fPBKlMmfA/9T3gZvw0NWkc61/NV0HI5kyTR7x3gLUP+LXcjEbNyO7/qe5dsqgnUjAgpyPfJC/wOBfcuVgJCock/ipwonaXtOMpNbaXOOhvDARhhCvrFP19ri/BAcbNCYqubj4JJhOKX6bH0AjJmJ/pt8d7wfOkzy+jqCgAV/efx6TdZ2AEDLcaNvcIqz6ky5/LdoLUV3+ktugoApGtDVNCKd19iR/Dvb68eQKO90YO7XmoOjdeuMTS25jzRGx/s4wVrWLXog37eazcjxWFFX8WAb8Mx0fclj5ojP2g4C2NWNhdUQrtoING7fDGzYHQSTUauqIgerWLytNBIrOt+SmuqA0ZgBWSLG4TbAb1sw3yW6HUirlq614NYBJa8dekf2JdCXnqrJcGa0mNEw2scjYgFimPAfuAx0YGPaR3p7g6q6VIxmxOSY/NECa4jrDahHiIgnMLhafl7IbdAlnvubbz0AiB6C/wUVLTGS9GF5RMyu8ek0zgdyLF61w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?f2ljaarUgvUQ9suWy1cLvck6Jj1fBYmWFSWDWjyBLdWR/OvkuuSF20eKtRL5?= =?us-ascii?Q?UJzgMXzn7N6QGmDV3mV/wTj9z/j8DHpPvnEzhAsI6nnpGWUAVCQt8OeTCwzZ?= =?us-ascii?Q?dhNpM/SawzKGUlEcP5rMeLP0xbfsSVzxnRxJxJU0pV0kimahPGg2oqy9bvPL?= =?us-ascii?Q?JN5AKZ/kLjTQY6xDtOOjcGySuMyXQ2WrJODFA2UJ/RTnpRFRR5ZGmMKgBE5K?= =?us-ascii?Q?Xk+eNFIYktwJXHA5sy4CQJfuk8Y/bPQlKm76ybE6IkWaPQgyMK1DeO7OF7jJ?= =?us-ascii?Q?Z2IUASFgXXBzSjt1NXC5+OzZbp3ZIxkz/H87boUH42OmWWE/WKYQNS0DPalk?= =?us-ascii?Q?Mpot/rQzzhNlJ4s4sVqnvQNT3MKIRmz3ULoK5yDdmrLgjOAxJlk7QwMcWOwB?= =?us-ascii?Q?e0ZUsTxguBzrWMPr/bnEbo3pg5S1zhytWblFUxEAYfZu69iB/QM6qj1wQk2c?= =?us-ascii?Q?jeuMKEyMRgYRktRFNGl5bgb+j7wnMG8W+ordwMAJxrmTHFD+TtI3ssCnnJua?= =?us-ascii?Q?s/zlw9AxLp/zLuyqIaMARNKWUTGYVEBu/mnQ+qTsf8dvCgCK0S3nTwl7+zBj?= =?us-ascii?Q?MdTPbw25+Acaz87cpFRt1KaFBpV14iPTCU+I66rm9TeWoarjSRkVHtsYFSuz?= =?us-ascii?Q?lz41OK0Sj+IsdwfXAtNLXfiT4UwZB9Up+62DZ2G4HORi6naelW1AhQmCycry?= =?us-ascii?Q?7+lxbXv4HKCUSlnTXSOvYEAVYPbqBPmohc2KzdhPFdcpigBK0K3grrJn8QsC?= =?us-ascii?Q?F1ZGhMwFBxJDtkLZXn3lb7zg+gQgpqEDhuuqjHfr+7j6ZcdSdP9O8gqiP/Tg?= =?us-ascii?Q?+chNbTa2ObVkU4erxCYRz0RH+BR6oCGXVNZrj62vtYauEm68GGmZjQrSEH7Q?= =?us-ascii?Q?ewGV0qKVomQn/sKoxN0wzPQnrgectkyDzI4tavcr+9CMFaAATRyPTtsFgo0U?= =?us-ascii?Q?FOGOy/G4CZLh7I1/kO3DvqU0SJpgirS9okBgXEuRPeE1yWByFeqPZTBD6fu6?= =?us-ascii?Q?kq479Xt1VRpzBHFLeJXxUY0Kju38LY4U6PwnTfaWQggOKVUl4l5pGsS0pLSq?= =?us-ascii?Q?gqgA20YHcBWtbDMwqwWF+c3ecdkke/mpygMIBoZxEJrmWNc2xO8712v7v/FL?= =?us-ascii?Q?Ir5z0Q21GcBlYWzoyWD7GzvT7t/aSLDcEez7li6fLaBdrOm/+l4oJCvX8nfq?= =?us-ascii?Q?3wOjGpLCN2ElssgYmCIA40neFoPO6fjA+kU/GFI3mADOEndy41rGPrH6Vyeu?= =?us-ascii?Q?TfPcjqnbgSVj59hR5y0QFtwFSpRB6Nergj6VSN0hYs356vUW/DFa2pG2fmJj?= =?us-ascii?Q?UIRP99AJQWlxtk/Cu8hiLpIvXQmWXzVwSCvGZQ5pLq7HyIpXaIy7SM0uD9ga?= =?us-ascii?Q?Q1y3/P+qvh1nS2Dstgsp695ZmEs8sKjJAjmC3FzPfKnGl7j80UMy0a8viIHK?= =?us-ascii?Q?nyS9JP43k997HIEu70NINIXn51EsMA2VvNB6EWPrBjvTwBlS4k9zbPsyERqY?= =?us-ascii?Q?J10s2U/zslWxhuT6LolzCdPUEqbJYSPk5HzaD7J9CW8MkmFEF1iAzanywf3s?= =?us-ascii?Q?hotLYcM1OuDqJyAgjGcsmMQmcYaiznKjzjmj2dTlMu8Z4V3mcjs6tXVps5fC?= =?us-ascii?Q?WXjrmbjoMbEcoAVzEBDtBSOsbcq4qLe+GKm7pW3rEHq+x5CMOiShrsRFbcrT?= =?us-ascii?Q?Af6EsgpiebMA3WA6Xh6wMEU5jEzwj6djnI3LaQQnHf+Nd5VMoZ9GhLbEHHcb?= =?us-ascii?Q?/ZMClD4qphjFHnQwlAeMl9LO6/zGaCenBgOjm2B8FqZrq2ZL5uhj?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3215163b-9646-491f-6f0d-08dee42e2994 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:45.0892 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TnAcBIAieiIKc2DRAFnqb0v3NA/uxOQVKWLY0+gWn6CumdI9X+fQQSR1lZZLRKm28URiiOY2vFlTELENkzdcHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" dw_edma_abort_interrupt() drops vc.lock before changing request and status. issue_pending() can acquire the lock in that small window, observe the old busy state, and skip starting queued descriptors. Then the abort handler overwrites the channel status as idle, leaving the new descriptors stranded for good. Keep descriptor completion and the state transition in the same critical section. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-edma-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 8b094857f821..c0d9f7e373f3 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -650,9 +650,9 @@ static void dw_edma_abort_interrupt(struct dw_edma_chan= *chan) list_del(&vd->node); vchan_cookie_complete(vd); } - spin_unlock_irqrestore(&chan->vc.lock, flags); chan->request =3D EDMA_REQ_NONE; chan->status =3D EDMA_ST_IDLE; + spin_unlock_irqrestore(&chan->vc.lock, flags); } =20 static void dw_edma_emul_irq_ack(struct irq_data *d) --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020123.outbound.protection.outlook.com [52.101.229.123]) (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 E4AA537F731; Fri, 17 Jul 2026 18:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311614; cv=fail; b=A0NQbFOMOLlZEx5qFtM0JCiwuxagBaYYusnQAH2uslkh/yU6UIVErAqbnGe5l2a+K5sVBqXaz3fHGRMPDWrJEiNLhHZ2Oku7/HEqCOfknAk1GoQGTjVxLku700ZcaSXmjBrSI3KUf5ZmAvIFg0sPVgiIgF28yV2YgfQo/byWOPs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311614; c=relaxed/simple; bh=baDa5HrNcSjo+UzAly/E6i1UzEVc8AJjchdrGnPv98Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=d7wAa6zUuB6U93mxBMyFQPYYOhv4vFz65703jrisgQIRSxcvh9QuUaLKE8FKpIusBwj4ZR6Zq898T09uQyPV0Ii1cnZYRostXvzxcTTOatF5Wo2SD1Y665VnXciJfFcAQrC2GRq7JUWc0dlrrrRBrdtW2vsGd2eLPS0N+gy9JTM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=akcUH6jZ; arc=fail smtp.client-ip=52.101.229.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="akcUH6jZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H8rFGRHOXFLJAlTpjPtVxJSBpN7sHpZHpoyjXohTkNrI95dCEoazGmipKfdkShCTieTzIA+Oop7zAE2eS6bvIhs2SgTU7Ig8Ma/OL7/3uJNPuTGHnT7Feb+QTrYsVI+kPK2lTIOXFU0Bl0dywCzHbdUMQhoHnZOggiyXVqe43fgn8LnTjxhEcW1kWVv08QiOk5vZEjKZUVlQKc57IC2xJyB2yTDiJNJU7ei0ljK3AeEYViqbgNgt5o66ludEnuImGuSH+0QSKC+WG+b4xw0+ADT3nuHs6UePcpbJGmbavYUiwKy+6/KXQjZkvNTTZBoH7azBb75+6Fx8FTcsemsDOw== 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=uSlFc0IZM28XC2QY0wN0xNqZ7t+pIYF9AvNlLY0tYkk=; b=gjv3I3in0RNb8fqRK9n3H94vtlNDI0eHY3bGsF8SH+VctbdBgo95jQFmD7/qJE18fGFdi4zcafDYwDkHsKU7qKnZY2Izo9GMAf5S5Lc4OHOixK1161mbRjsGCz4pKX0EAqak223zSbGFwv+VapmEX+q9Jux+zS+VSAOaFnvo9Kr/dz+44evbFQRuGIxkiM5qvnL6p2TVrE2MLDi3zQEr1SunjgzhxsMEA8YusfXrUwBXZOf//DcK+UzNgMmBe9WORMvJkx35xJvVqMrGVkoZZpj2WDOJWiviKRP3r+abpfuFlIbC4QBfyhbyUM9s/6AzryYqrA3hBovRwcUQRf7BOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uSlFc0IZM28XC2QY0wN0xNqZ7t+pIYF9AvNlLY0tYkk=; b=akcUH6jZfEObKz5ye7EmXJoT6D91Qggxz9UOqhyEYoFrMRHoU8Bm/AL50WltOB3HcYZhfwv+VcmiZB4SPRIgHnfVyvEBzcCNwXhbe0CzmX9zfDQtx0IcCIMPTqAdq5wt1gBjZZ0KCCMA9PghcgX0sI2QUVEKXizenRJiYU6DgSU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:45 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:45 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 4/9] dmaengine: dw-edma: Complete descriptors before pausing Date: Sat, 18 Jul 2026 03:06:34 +0900 Message-ID: <20260717180639.2643243-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0014.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:26f::18) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c8f51d0-f1f1-4232-627d-08dee42e2a02 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: xW7ebq1EUwBEhijGVmC8AIIlkCNJmEJiEuk3IxX5fvUqJxSaFdgLJggdS4UotAlXfPR2qwkt/IUd4/aCzVQLqMvyk81TnMKtQX7DwaGI5Xbf0H3PNSDnSOb/eBWl7vMEaqnOthojscfKjK8WPcDWz7kBp3uTLonmTvDrGa7kwh3x/QXEkjH059/X/7RR0G9OUoIk8ow0UQqaxSkIcwEQxAiKuvPQuFVOFb/mqQYZyyxq/YibuVD9Ryr6/AXjWgkC6uzxMjrdxFvQvRqyIQ+/yS64oVim02ynqUvtZH32DOi6hewf9iuUduTS1HPxOvwlehM/ahS7kEiNCekhtrea+/lGGTE4JGSMhdIkHE9R1W1TIiGwpqMkkiLuhQjgdqfPPyOE341+8DzWMgEAX2N2EzqvweScErRoICWZFyP6s/ZxNUpaKtBt+WMyXG5w5gkxAmdmNNUoQFzuEKZqMLnCMnBwqBdSbppMW6LkHIsjH92QcOkt/T7bIPeOn3Xev/7Z0/n6+VnLyZHKm5IwedCg1fxtXoPAVrCiIZUSFrnfbUvAZtUaF+zxmGaEZekI5KPm0oV3mDxUcTje0rhN7Y6TeFo6jT4c95aHDZDXuI/RRkgklfCrXGD+Von635T1SeS1LYh8AAvmxq5b36YupacgS7HEWLuWtqwiv/7OVOHlibo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rNIJMOhhxkjfzS4tJD8OGjJw/nik5Q/EmfUlTC9Ai5zqk1x0Fluo36FJMz4X?= =?us-ascii?Q?E13yX+/qjda+PXWmwZRALOa2R/uZVzNfgdvmL5pW+w2QuuCP1oTtsfZxtbfk?= =?us-ascii?Q?obx2rpuSES/NKttGmXRIjC2c51/8ojnMkXTGef6OQ6NCImWx7DbywY4VGW9H?= =?us-ascii?Q?fTC7y613k2OR6VoA7HBhYX3rOobYmy7FPU1DJhW+Mx+VmATv7r07TdOBht8K?= =?us-ascii?Q?WRE+npo3TzX1jvpDfcWwmZ7gN/RZ8r3SDIVQ51u2rAR+DXS+iTajuim1fKiB?= =?us-ascii?Q?P3IctZas+r78GZoJCYlDo4xDShr2FhuPwaTTusai2j9Oam6sAOU5aN7AZEoP?= =?us-ascii?Q?ZzPFxR4QHHkUXSV5SvoMeZoByr4eYitdEpFnRu0WeN7H54ccdiZvWO9m58iE?= =?us-ascii?Q?SRKNXU8oSClhdjJZTxXxHIXhQU0V7HFPlod7gIjy5XPyk11fDrfJJn0T9SwC?= =?us-ascii?Q?9SqgOAfnmjzYI1dW5Vn61Ur4WKGpuCk0GqWF6BYNni0uno4CILKr8dDkW9lA?= =?us-ascii?Q?RnbZXuKOd6Hk6/nSnHE14bloXRt6vpYs9zTTvbK7g3pH8V95vAyMAUnS+8Iv?= =?us-ascii?Q?87DA4TnO6w6CNdgGel16aqMmW5FJRZm8ljqCs46lTapjYv6l27gjusVZacbm?= =?us-ascii?Q?ex5CHcgwqSoBqyw/U3AcvcclJD4bGzMkqnQW9ftgSXzxUsoFLnx5o9tpZ6eD?= =?us-ascii?Q?twdJDZa/xjdyY2pCP98KBqBujLJIbtMBRhwvFTP54A5/33JDLiimwWQ1jaww?= =?us-ascii?Q?L8tKquwdW688EYvjuJJE2AlAYFEJHU51nt0JxoId19ScElHOjgKURlu093VH?= =?us-ascii?Q?SVY063rm/eMmXE7b3s9WvYsIbtCXi6j10La830c5GSZwVcaT50RsZArjmSbO?= =?us-ascii?Q?3FmXlXPSmS2B7YXzpapPi8SrlhYhg2JuRcXKksJwjFrU5b4HpW0bGqnpSY3n?= =?us-ascii?Q?HzdUQvD84gfS5EHEY8UFhnJMasdY14hgpLHiJE7ByK6h0BlazHZIRDoeAnJ4?= =?us-ascii?Q?eozVc1sOx1oybDXDHavS91NkxWvKFeJJYHiV0rGtGSJ3TNKPTcgnimsjoNJS?= =?us-ascii?Q?rxM064faS9KtKIGZBA24fpxAm7R59Bl2PKbDqKKMcLiNfARuDnJghq421X76?= =?us-ascii?Q?PGSdUGbRBaMfN2wQqWsvoGMcm8ZV/r94wzPS/IMegobfw874YMHZ0ahUB8dR?= =?us-ascii?Q?rXBds+y1vpv2211GCUbTg5slHzj5X+LgY31HhwSXnm69hKDzJY7i4/HpIY2v?= =?us-ascii?Q?N+JTmjTd4/R0mtJLUtSsJ2voEjcPDRPhibvAwq+wHS/1WGP/AM0FbGkOfZUv?= =?us-ascii?Q?jjHRkbLe3EyYjNdH7mZaECtwP/Qhcxkd7jriddWFiMq/PWMAoHv1icYNEYlv?= =?us-ascii?Q?vLHnyksgRiCh6wMWjXvJaSwS9uSQfVCM+VIMWAlvTt6mSaXRl+SC811iUbaf?= =?us-ascii?Q?w8Ew9p9P0MXrUbA0AxyHgAbFNL08A8rZBe9ZqL2UmnDa3LjFpPCUvhxSx4Gv?= =?us-ascii?Q?Py07x+VKp/OKAkkIE/ckPY7k1600IEH1hgw/mSvCa9OW8bj2TK26a4mSrAl2?= =?us-ascii?Q?8Vor7XdWjm6ta2S+9F+9XQ4UXU9SiPYRcSL/k3iiIsE6dgaihlOHaa2RtzG2?= =?us-ascii?Q?6HGRMycbJjpkNnLo5b59M36kR7bHTVIPLR9fJIymTAPYOjjTGN/sTZtx0U+D?= =?us-ascii?Q?6zy8so0lZxDD9L2ctOPZSjAapeNWxgKQKeDci/eyVm3iPV7cDAQTmUpuYZF0?= =?us-ascii?Q?Aeq/hfEnoyuQA37o4B4q9vKgyZMZcVUCa1KNyUtEPAau9vOu3lE+?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 7c8f51d0-f1f1-4232-627d-08dee42e2a02 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:45.8102 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IvEtTG5BW+X3Y/JP6WabY7SwwFoYkITnOcfWYD26cjKn+ah+1NKAS256h5zsc3DT2P8wafXif7ZHbGuxq+e+kA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" If PAUSE is requested while the final burst of a descriptor is in flight, the DONE interrupt takes the PAUSE path without checking whether the descriptor has been depleted. The depleted descriptor remains on the issued list and the channel enters EDMA_ST_PAUSE. On resume, dw_edma_start_transfer() can select that depleted descriptor again even though no burst remains, leaving the channel in an invalid busy state. Check for descriptor completion before acknowledging PAUSE. If there is no work to start on resume, leave the channel idle. Also ignore DONE interrupts while the channel is paused so a stale or repeated interrupt cannot change its state or start queued work. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Cc: stable@vger.kernel.org Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - Updated the commit message for the flattened descriptor representation in dmaengine/next. drivers/dma/dw-edma/dw-edma-core.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index c0d9f7e373f3..7a567f924538 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -255,7 +255,8 @@ static int dw_edma_device_resume(struct dma_chan *dchan) err =3D -EPERM; } else { chan->status =3D EDMA_ST_BUSY; - dw_edma_start_transfer(chan); + if (!dw_edma_start_transfer(chan)) + chan->status =3D EDMA_ST_IDLE; } =20 return err; @@ -601,10 +602,16 @@ static void dw_edma_done_interrupt(struct dw_edma_cha= n *chan) unsigned long flags; =20 spin_lock_irqsave(&chan->vc.lock, flags); + if (chan->status =3D=3D EDMA_ST_PAUSE) { + spin_unlock_irqrestore(&chan->vc.lock, flags); + return; + } + vd =3D vchan_next_desc(&chan->vc); if (vd) { switch (chan->request) { case EDMA_REQ_NONE: + case EDMA_REQ_PAUSE: desc =3D vd2dw_edma_desc(vd); if (desc->start_burst >=3D desc->nburst) { dw_hdma_set_callback_result(vd, @@ -613,6 +620,12 @@ static void dw_edma_done_interrupt(struct dw_edma_chan= *chan) vchan_cookie_complete(vd); } =20 + if (chan->request =3D=3D EDMA_REQ_PAUSE) { + chan->request =3D EDMA_REQ_NONE; + chan->status =3D EDMA_ST_PAUSE; + break; + } + /* Continue transferring if there are remaining chunks or issued reques= ts. */ chan->status =3D dw_edma_start_transfer(chan) ? EDMA_ST_BUSY : EDMA_ST_= IDLE; @@ -624,11 +637,6 @@ static void dw_edma_done_interrupt(struct dw_edma_chan= *chan) chan->status =3D EDMA_ST_IDLE; break; =20 - case EDMA_REQ_PAUSE: - chan->request =3D EDMA_REQ_NONE; - chan->status =3D EDMA_ST_PAUSE; - break; - default: break; } --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021086.outbound.protection.outlook.com [40.107.74.86]) (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 DA92537CD53; Fri, 17 Jul 2026 18:06:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311614; cv=fail; b=MPu3T8Xkou3qN2Ml+WjCiz1jY+BdvbemRrhyFm7hlCeLmPb4vRpvm95Pemi5O36JAZqi4a/APw5+Vr49Fb/sNPaRwOyRnQIpTFK7e3JtaEMYx+VprFNDstfk9A8WlDGhLPhrzba+fuAYpHmMYSAil8CVeOB1cPz05DQVBsoVetk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311614; c=relaxed/simple; bh=ISaZ1YlyDGMmBE5aL5MlrCcrm8kisLHa0z9LCvxP3AM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YKWzT/hqwKhaS0/R+Z4I75f3qkIYgy4bGyK2QGwZbyO3VYKgz9azveI+hyPgi8KeShpvRr7ihLK88GI5CXuYb45emKeyVihofbHAZ05SagenN3OgUv1OUqTd8GBZINxjhxJeaVCe3gT8dcUyX5nFpOjdjdQpjq5VD5Iw3xVX++s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=p0fWv4SE; arc=fail smtp.client-ip=40.107.74.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="p0fWv4SE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cnE+PCXtUNyaGfFsMQ9L0o91Td5tDx2Nnf2g2XNOJPbkz3Uv6znypTr02NonGr4A0c4wMlDzWn9DNRx2wHkGFxAqoIgpZnHdtID6L9iRmsuDYlkImq2nigeJ5CZUuxWIq1OrnLuwsDx4ABsFyJh35aOoFlM8XDS2t5ill5NYvS6A3tNPi6UJXkDOz8TPWNX2QfiEpeZAM4Zl43xhRmjJmIzLkZsHjJ1fDP3T7geJsmFCFUecqo+B7jaD+iTQ4N4zCy1E5jgWHIKDBA/jDyjHWzjSyR1Z26fPHu6OxsViFuNIhmzVTtph8kz0R/c2BPRGqgO3YDhYNMgfvU3pY/yuPQ== 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=149KQP+MeV5QUVJpE2TbjMJCz36gYJXylNhmrv9gf9U=; b=IEgk+ogw7DnwARRZfqdMOU/lw50hztZWLKO4pQO9yQpcPmU4uYSufxgzBAHIxOsRNZzf1oVifV0yXjwT5yUXnUXF9KWD7cSl1ngRaJL44VRKDe1FuJajSFopEfY4MTYhFy3KLdf2uEA1HmDzflIrf/vBA//LBusLFRgpLdLzpYQM02keHc30+2xQ5OWjVMk/3sew00v+9knREP5Z+pUj37gNJXyGKZCVIJo3/26j8pH5iZyobJ4G15J0YUt7Mb80t26STu1TM+lFFK8E21DFNpb3lgXxe+3GU17bMI+9ssj6HRdbfAVNA/TTvQUGEm4dVm4iPdaF9EOwrUEYcLFsgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=149KQP+MeV5QUVJpE2TbjMJCz36gYJXylNhmrv9gf9U=; b=p0fWv4SEQ4v4Kv3iGZ8Pyy1mRRS5k7/32SpSnqMftYhcUVlzBAOYg1r0xD2txIsBbqYDjdPNY9QcVMZPPo6fVhOx9+ZFHYKbhBiZQk/JucEhQHUiV+TPjYzBt9tkcy5p31V7EeEIN2ppnE/m/Iy2xLK7mYUOyjeHftSSmubTGqc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:46 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:46 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 5/9] dmaengine: dw-edma: Serialize channel state checks Date: Sat, 18 Jul 2026 03:06:35 +0900 Message-ID: <20260717180639.2643243-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0050.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:36e::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: f7f8a10b-3fc4-412a-3a3b-08dee42e2a71 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: tLupVnZcHYjuab0mTcnP2xYumgsuUfgJS3iBQEE7fuldOVCY2bVQBFUTfEY8wMn36tdBKCKA/wEIICxnuWIESaYsSLbithCRDmqQ8PpOxk6rNN1UyFaUmHzxhaksLdf3T4zawQaTA9dIlQ+rseDNMllQQvFlvi/BFRdN2/9Em221cdseTfvypKKve2c+BMq7rVGRxqfiJttpN89yX5awi7TUkLuuhTj6n+0g8VvJ86GFzo/+o6PgLy828cFc91wxCoQO76CT26hOFxaLLCe0f5gwoEjrNGzKGCdtwxEtPXOQhIQXrALsbysw7R6UDFO2OSPXOKj3D9cJF5+bfuvJu33Zds1ExxQXZSQRpthT04EsLe+QMaiSLQcGaGp0r8UivCS3rrY47b6Y0bLx38hn/86yEvvMt/aes6wJihe9pyzc3CjqRPdX7Z8qocb48UYWdnkz5AwygZ1afWcnGj4vlcQQG73QZY5v05eX/Nwu3qIqWtvladxP1yfOZxLu/Sr2kP0tFMK1McqMmTrkck5umGTJqVoWmRBuUAtiKNXODx/Pd4yVfOYdr5havI3Z+kiTFkCAHjg6pPF7mtRtB1y8B3LxvMgGGp+NB94L9NLixlC1dmKeic24/3LmYHeisdbURsESqgfocDDdMcGUCR7+X0AjIUPI9+guJmJ9uWRnoj4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zb6UY366f/TOw+THOOmKsYOk5wMPOyK4upobbQVkoW51SrHV0lzylH4MmsyS?= =?us-ascii?Q?2lsXbJNZyAqZ+3BMPaTPG99dhHaZel6asXA8hPu/I0lZvC7ug9ExX8jxrebw?= =?us-ascii?Q?cKlUYaet8INtF+ZKwbq459xkvo+2G1Aj6/ICLJ1pa+ZficsppN6I0syoAEJa?= =?us-ascii?Q?7EMydriIuMhAcfOxdZqwp3tkO8GOGR1yibHTlPHodfcnToIKeUJn2HZ7XCB+?= =?us-ascii?Q?jRiQyguI4LbVgmBZ4iH5tTwsoFoqc/swlvohgJXpahBPJX4wr3P+tglPRXMA?= =?us-ascii?Q?uv1dj4Ry5VTJZ96TyQ+8Vz9BbrhR7cBVO9OzRgoYNIT/IfZLjhIKd3Lqrrlt?= =?us-ascii?Q?8NpS5iRcIahiem7uHJy8CuynRfKSBzb5uiGEY2SPWdDteH5kTyfhxeMNEUh/?= =?us-ascii?Q?noiyxU9XvXsQ9mV+Uk6ydeh/voVb/A/yb8ibh2miJAkr1HoNnUsW8wK/oWDE?= =?us-ascii?Q?K7xMPQ6+tjBA2ASKnxWjOv0G1hm/A3/0gRgDLp2lVOCQAmwRGHnP93V3GKrT?= =?us-ascii?Q?dRfF0mqJXxxzSsZByiU17bRvtWGjVcesEqlb84mIx7stV+SG7RTyd2RiFW9v?= =?us-ascii?Q?mCg3zGDiHVU5Ia5cH/56klP6HA386sO0285PP1OnMk7/nlUdr9j4nblaYTul?= =?us-ascii?Q?zj39QbTA4m4adEWQ8bZuTo2o/tVpcEtfx1NhF9PSI2Q/XtH4PXk441DK2Wrp?= =?us-ascii?Q?q7pveSLID6haez7CIiPtWxYvof+DGYzSpSMZwZ7YeE6qB2FMcKzn3dO5o7Hu?= =?us-ascii?Q?AlaPudV21fe3Job7rGOVDS32EgDth+Nwc92mn1BaeznIWSdeHdalYRZ1ZEy+?= =?us-ascii?Q?55Zdfr74YAlNGogerxZJtdI+A5guYGM3NG5p61y5ECERSoc2+9L5Z85Pvtwn?= =?us-ascii?Q?1uMDKQ+TXqrzZcAfHFpmjPlrJX0ZswHO6135lfFbFyKyJHJeXcZASD4zHMHQ?= =?us-ascii?Q?c/q3tH6dPflELXXkljP7i2/8jvTTqVubBzql7D9z6ciZ05eZbXargSOy0f/Y?= =?us-ascii?Q?PNA73EcBjT2RYZJKg/tOtLg44cfTX+3z5NC+YTNiCqRpFiWNwRmX/ht8LObo?= =?us-ascii?Q?1mqt4z6m2RXyDUZsbH+X3k85lDLsGY08MI8JgdFDWha5mKJI4ToNZphZIrad?= =?us-ascii?Q?HmO5RW71nBBzLndKwbUQ7GHzv/jDrBx3TDJgoUH4oqiEwtAZYbHGZR+rpr4e?= =?us-ascii?Q?BzI0ORg6kDj1O/8SpHhCleTHi8S4fSYPbQ3kF308FPzh/xn5NDsgPK1D95cE?= =?us-ascii?Q?8u96s+R4gGQREbnNhdgFSKTzjRj5eon0vYRU68uQE+Z/zDcWzlShVwB66ydq?= =?us-ascii?Q?9bmw+//wqqR9wXxFQfurY7WVbmDvPqHP1et5P2hirGOkFwVcD8kMzSiectoc?= =?us-ascii?Q?djc7tTLsTkWgT67axrW3XaNSC9LdZwCBDyl2zUu4m/rI/GMt84LwmCjJCNsl?= =?us-ascii?Q?jn0RoB9Pxoen6BmJ0KmdGfkExHEb89oLjBtHmwpKMNv0w94JzQMAGqubqZZl?= =?us-ascii?Q?kcaWXyeeytrlNG/w38rLCX+adsVBUuZsfIvR2mEoCOXLMwa21EUQigopUdP2?= =?us-ascii?Q?sO4/yHrE08z91FxSAkhJpIL+0amazRvdVWa+jbSTAG40uXAmxqzXKX9ehYT2?= =?us-ascii?Q?9XxeMOOmVs5GBKNoviQ+BOw6zzTC3ljMKLWAZyVNvzJbHMtqnwZlvjAm9cTK?= =?us-ascii?Q?3m+enslUWjbx+DRJnvcftP7RploNL3fyyDwa62Vq8UIQf/EjaLaBNZHGroIc?= =?us-ascii?Q?nlNmoAG3JPPsTnZDLMdcZ4ri9VAf2bHWxesVDgOpoyYI/M4+h5Bx?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: f7f8a10b-3fc4-412a-3a3b-08dee42e2a71 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:46.5325 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VNYeb0CDfGCSutJtcvz6y1DIe7SDd9dNu5xBdDz1FMIn7Cxd5gq1jfaxwPFfRZJ1Kb6Xcykb6TTejkXgzDszAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" pause() and resume() read and update channel state without holding vc.lock, while the interrupt handlers update the same state under it. Take the same lock around those state checks so that request, status, and configured stay consistent. For example, pause() can observe EDMA_ST_BUSY right before the interrupt handler completes the final descriptor and moves the channel to EDMA_ST_IDLE, and then record EDMA_REQ_PAUSE on an already idle channel. No further interrupt will acknowledge the request, and since issue_pending() requires EDMA_REQ_NONE, the channel is wedged for good: terminate_all() leaves the stale request behind, so even reconfiguring the channel does not recover it. issue_pending() already runs under vc.lock, but it tests configured before taking it. Move that test under the lock as well, so configured, request, and status are evaluated as one channel-state snapshot. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-edma-core.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 7a567f924538..cd10f9c6d217 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -230,6 +230,8 @@ static int dw_edma_device_pause(struct dma_chan *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); int err =3D 0; =20 + guard(spinlock_irqsave)(&chan->vc.lock); + if (!chan->configured) err =3D -EPERM; else if (chan->status !=3D EDMA_ST_BUSY) @@ -247,6 +249,8 @@ static int dw_edma_device_resume(struct dma_chan *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); int err =3D 0; =20 + guard(spinlock_irqsave)(&chan->vc.lock); + if (!chan->configured) { err =3D -EPERM; } else if (chan->status !=3D EDMA_ST_PAUSE) { @@ -297,11 +301,9 @@ static void dw_edma_device_issue_pending(struct dma_ch= an *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); unsigned long flags; =20 - if (!chan->configured) - return; - spin_lock_irqsave(&chan->vc.lock, flags); - if (vchan_issue_pending(&chan->vc) && chan->request =3D=3D EDMA_REQ_NONE = && + if (chan->configured && vchan_issue_pending(&chan->vc) && + chan->request =3D=3D EDMA_REQ_NONE && chan->status =3D=3D EDMA_ST_IDLE) { chan->status =3D EDMA_ST_BUSY; dw_edma_start_transfer(chan); --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020123.outbound.protection.outlook.com [52.101.229.123]) (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 5874037416B; Fri, 17 Jul 2026 18:06:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311618; cv=fail; b=J1XMhA/yVaqepdpKm3q0ssU4OKD8yQBtPxq6lQXQy5/I2AM75XuUokXQhDYVBLvgzokovA90JkbP/TQAyTHdGMrjk+YazPFgc9qF73+6L7ER+Y1E0WMch67CW6RJrZGOPg7PqpViM1nS7fXTL1ArW4spe2sY9UwbMcEVWPayakk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311618; c=relaxed/simple; bh=pnDZygAeWvl4/AzzaU605kKofEidVYlDqj8MU0N8HTI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TQe/nDTxE8UYtdEhzRRu2tmHa26M9BrYScP+2UiPOitm1FFRByZZlbBs7N1adsIveC71GahmizAiMPJ+ML5+WwFfdRh1EsbXgE5HIfChYkUhGYwgxhlOqfGXgeT2D4L4ebM0m2fCS0szG1tLgzRgBUbPJn8Z0MJakmMIqprI9bM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=NF4nkjhq; arc=fail smtp.client-ip=52.101.229.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="NF4nkjhq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=stFLzNuClb1M2WyaVt75uT1qQ2W+mulCCej14cOBpCZ21Lz6UFI8US7f3TWkJrh0+maFubmzBBQNH9eyTyBnSSFKKn77uoVdZasbNnlkSNtEi1KZ5DxdRmRqJWWnoPhBmXTGs8tdkoIQTrZxDwdoAK2hfVW7JdmGk+EZA5zn8NRlpwqGUC7BeKL4WJ+hQg+jydJqiD8pxYHx+sEH+pc8BAEI4X3qbVoy9CDgFfmH+Jhw7bMIl43YS2Hb0yomP8F2aOd04wT3vRLugiwAgXFldTcefk6QlOyxqDpTLKRMaS5GuQT3/VTu3AGKc/cHiyeHxHLGAZ6Z9Fgi3eOiBa3oRw== 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=mol+LAijGDfQDrVtAAtzAXmK9BaN3QdgiWSywAYLGqA=; b=WFFg+rZN/+Sbycg/pvTaEI7YdxBM6CyQYYTZ35BjvQ4xdRsLR5IK9DqkywsV8/YsytDm9FSiEgxeyhQqd65+dQRl5fFjSsRuubaDhhN6zTn8H2hfAFvlYuJ5B2ea1TgZd7Ni6ow35SRq9/pHl8jZA5VOGyN9TL0AvxsuCsGzN00boaE8mowbuUF3kXPpM0ZNf1gU3l43gWAZb7wCoXXf63hGTV8n6fBRSfRAB+jqIlIrlS7KzpEx7nvIMgLsysYAl0g1cUNiedxSd/I8qaTRG+MHWi6MA81UqzSgA3AHouUj7/V6HbPTrV+2civLGVmCN3IiR/9i0hLRJ3PI34BQqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mol+LAijGDfQDrVtAAtzAXmK9BaN3QdgiWSywAYLGqA=; b=NF4nkjhqa4+wjOiUjqW1epfBKxYnDGkNH9+rPh44KlMfnttaymzOuEIa0bdQcMC0C8xRxkB/Yq+0TdzeGRUIGBxLy0S+1IyNSNZI3J1Z4L004lbt8C2zYNEXG9u933BM6DxjBx10J83ySIYC3EY5JNzWe1i/L6BTgpI5GXOu60w= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:47 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:47 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 6/9] dmaengine: dw-edma: Clear stale requests on termination Date: Sat, 18 Jul 2026 03:06:36 +0900 Message-ID: <20260717180639.2643243-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0130.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::12) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: cce6b669-2e13-4e73-6d2a-08dee42e2ae2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: 0aNsP3foUS/DSKoXDcC11Ka9eVQ4KVpboHSMmgeM18mYIAa4pddjpRIGF0nXgjItyHIxRe+yU6TTtu5lyIvXC9l2iUdWlxAAfLhSw0nqjxqIDXoeNsDy9YjFx+vnn5v5LbfPtrqp1yIDvdY/tC3BfnTFG5P759eC4JqNkfpgwvBqCSaVUekz3ma3ERhFf998AnK3T1bd6VQMF1JsU5B40QmDte45WEHuj+xTlAXWc/iJiLRRKKF573Q3VVsOh9VqvkY970rfdoxNBffNvKRbAxMz0iGyrks67OcoepPk05OaKpgkCNr5NeHz7XuF53vqbGqNriZRH+/3h5LbFVOi922MCOkdQ7C9MuTQ5Uat17Gqm+PFPrC9tvGzljpnaYxl89IGiwdmPcxNvZobIgshAAPXuejJ9a5ctBzqEjS9zRtFDBgx+hr2zc0phY+dDhVq7dz+aUASAB7SFZ0Ssljw43frXJtC0znU8EglOzTKLib9LsYhyQCXVl4pKG6cMxuLuJXNcCSHrbu8KNzoBi2vJZ8Bd+Zy5YJARO6Gn/01Sk0qsCJb+7AgPpERF1ig02FO8qRR4Y+xb8gmSNXAGGi+Yr1Uy/wEI4ZpF1pyWVHCAkvP+zKDhCHfhHYYQJQuVfsC/OyySz0Zn6xxW4lrYxCtWwajcUq3fFoe25Ry6trPc1k= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?c8g5ev0FHwn4BaRoMZvIDtJ4Jusy/zd6oxap8sVwK4knITE/7J4Gi3kEEMXF?= =?us-ascii?Q?Oh/nlaVKAqrW/p/mXgFBhz8BM2cZHdqg6Vl4XYsOuwffhr9T661QgTyScGtq?= =?us-ascii?Q?yleUfeqfcIhbyBtPW/+n2HFIXrM3ToqeOwj3aIkcco4X7sB601KwLlMMZU/3?= =?us-ascii?Q?f9J6wR5X1nk9RPvt0fJhnpmJxdPkryBsVE+zIVZ87PHL/pBA8mIMyt/p7b8s?= =?us-ascii?Q?iwBE6cU9Op1up1VZX2FYMvNFShvyMrHBULuMK8bdsBGH5CruVm3I9eDch0qZ?= =?us-ascii?Q?B2OxMc2KaqQSbOpHJkfSJ3cHl+B6MmeWe0fQZYL61oNy5e6mSb3eXtBwBORl?= =?us-ascii?Q?iXXzhkXsXcj0Fkdzr1QJ/rpLYYwjovbFqIxwBelZ7XH9ByigeE5ziDPVnJl+?= =?us-ascii?Q?kLhHF1gwNIqVLE5lN14h95rZaU9ZhHSP0GwQcm6hjVPe3VSgocGjhtqVf+Em?= =?us-ascii?Q?Tzjs0keK+g88UwNMnMC6NkOl5Gtcapxpt4ADjgWrq/gasP3y0S9+/2M8EOPB?= =?us-ascii?Q?L7oCtzfXFoTa/vsaYbzcwaxz9AzH/McotgFJV1YNerrgntT1e8siO3FWCv+T?= =?us-ascii?Q?oEeJWvczG319OD4hGuKX6RP+322PnVQ1gWEGLf4LG6q8CE9XEyMR2pakITQb?= =?us-ascii?Q?1iN0fQOZ3woOpq8AoHCWNggdteBM66e/DD7+xC9C6wL9dJpsA/MTuNqgsFhT?= =?us-ascii?Q?DMns32mxkT5DH3GDogZFVVDw75XDbQZ6wjzI8cGEylb+fOD6Fem/qRIoW6c7?= =?us-ascii?Q?Hg0tUVtd0LXzCBQ1fZQsA7NQ/OapxRsjeFVcbdqZX87/y12CAYS8iaZeEzGJ?= =?us-ascii?Q?j15oYt4sQQk5Qm7GyB56u6vYu3I3pFE8Cn9dVpdLOgA0tyaDYJEjuYBs27r3?= =?us-ascii?Q?6AjauyFDResuXtP3HuRD/tCe/MhR4QW+jsyYMTsSNsDu+xb+0/zBnwwlVBf6?= =?us-ascii?Q?uyL/vq1SzAVnLWPX88g3Kxbeie0LwNS44OcCBOVmD6XPvMqh0kbXFJUiOeUY?= =?us-ascii?Q?Tcp+EeAtdJCi7e4FfBPVSaKYT2ia/gSbs/ya6EsjD8GyfedL+qfha0FzqN5G?= =?us-ascii?Q?Av8+AFZAqys62dPYACQc0yP7yfUeXQ5X7pBKYVXnHcoLS8hhYjQ79qAoHNUR?= =?us-ascii?Q?Je8w5O3sXGLzxQmdbvfbU95ebkiWACWfdB6eMNgs1Q6eCMbywErHcVbnUowI?= =?us-ascii?Q?vn1ruQFPq98xDYmlCT3rXUm9A1/1mc1PnlHEVFBdbOZkv80cFjDC8C7GCG6E?= =?us-ascii?Q?mhFsun0gpwIAi/VD2ksUeW2kbqHygiqgK1mPuBy4DbbifqEgBPbbEyH/ZCUn?= =?us-ascii?Q?m9FBGg66QF+fFXtlOpANwpxy8hnnK/ByWiKbEDwDV8sdOeUZruuPLxWfTMtn?= =?us-ascii?Q?Ev+2Sa23Gp9iYMCP1gIRzjdvEgGxdsAkJD6EulINyrlQ2CQtM3c64Upq1MmM?= =?us-ascii?Q?wYiHILhKc1+FhGWCNnm2UMj9TYHXnGzSAkR/AnQZTFAQFt5JEDS01AqwqXvp?= =?us-ascii?Q?la03TjAHrznAwAn1K328A8neWlYytSvsKBepMPepgi9Dl+DmpPEcGzK7y7jH?= =?us-ascii?Q?z5KeyENFLAcEPzz9qRrYGI++3flqR2fAP6A66B1cApTVjX/8kckP2LkFR9U+?= =?us-ascii?Q?oIWHXBGjMzhAOf6XTuLKYmruUTzcPYc6k3z6NElE1kHjPmLSvR+WbbMyU3iL?= =?us-ascii?Q?prddgv6Ex1JRSSAc7zP+6Z/pRdVeLhrzwpi9iahAN6EZvzQnVLx4cAAs98Jj?= =?us-ascii?Q?yJHJGavkDVIF+qTc7xIV3WROb6SripwEunuq0kXHfWUdjSDh+yST?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: cce6b669-2e13-4e73-6d2a-08dee42e2ae2 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:47.2866 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8GIn4c7LOAfqR2ROax7WJLECH4Ne5PinCiafTaFdGRayzb/h56l0R3CYk3qYIt6FIJx1KCy+n7yPYhYKG+VyLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" terminate_all() can finish immediately when the channel is unconfigured, paused, idle, or already stopped in hardware. A pending PAUSE request can survive these paths and block issue_pending() even after termination. Clear the request whenever termination leaves the channel idle. A running channel keeps its STOP request until the interrupt handler consumes it. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-edma-core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index cd10f9c6d217..ab63d7bddaab 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -292,6 +292,8 @@ static int dw_edma_device_terminate_all(struct dma_chan= *dchan) } else { chan->request =3D EDMA_REQ_STOP; } + if (chan->status =3D=3D EDMA_ST_IDLE) + chan->request =3D EDMA_REQ_NONE; =20 return err; } --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021086.outbound.protection.outlook.com [40.107.74.86]) (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 102923803E7; Fri, 17 Jul 2026 18:06:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311617; cv=fail; b=mqEiKeJPD82CFBMu8vp6CAsauxaGqQTmmwL+YBJWBL3vhZZPPVCd16bXLsKuT8J9QEZ8IDjJJYunF6W5MtOa/1XBmbpz4s1sgeIdkhSQ/kQSKAHEtCnsHdDAg4ppN3ENvvLeWL7wuhSRZk1VdyWEYsbKZSstKhahzKnVdE7rdfw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311617; c=relaxed/simple; bh=o/Ju7gQaewXvJTbgr9O9B+0r5Tb4NYBiOMa7gCG1F1M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oD7dXpFHTV5fA+KbRHsbcJc/U700O/gUa5YFh6jQSqaDarFucVwsGkQDQhDWzWZcRoUErnq/D+CBi30PZuz+giKaTPDXpNQSR4h2VDfyOprW940/AoHItuPS5JXRgmfS6DAMEXuwW975s0fcxjBvy9Xc2l7lortRXiX0if8XDJs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=WrCVFUsm; arc=fail smtp.client-ip=40.107.74.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="WrCVFUsm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xf3wWZ3xDjDAmfLuB/lcQHsX1J9Ml8Q53MRa1nXPt+2+T0oWxzbY5Qu5S+Y2yHgiYEfbscGgzxI9Me9rqMi3vzi5iSlo3uq+u7jto5MQqpxfZ9vbgitZQI3ZFbZIYX6i7wAjOcPmGulypZ+FHgMWN6KwvpNqOtDrD6P3LyZ8Bj5Y6jUtRNzuY7rNqZHSse8Qx/qZViHLtacrt6qzd6V4d1hJyP0qoWpQ7Q3TRNXJH1c1xYMbVhX4TatzVIuI1CKik0WVRxSOmW4cfjJEkkivUInmV9P9VUcMrJFHox2/FLF02Zohe9/54mBYibhZdepStWJNnmmsKfe6/OyaF5PHqQ== 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=kK8ON7MvlhyLFRQ86G9zTZQnCfGdjaUCcnQcNnAV8RY=; b=ldUso0jxPqHFOC6SAPrvcgmSa9/9mTkhyMM6QWbWHGm34hZYPNLzuibG7+TG/CKjpOcb9KvUjW5eoIyM9DKIb0Ann1whK9ZDkkZLTuvvpUYMv51p8QN1j4MLIQjHWfEWCELY5e46U5texusJbidpQfG5wCxTOQnw9M6f3op06Ddeo6YRUDuws4Ar145sO4ZqP7LnjfoSsWom1SmhavYIvf2fR1n6fGwCh6FhYcgBOJgchyl3RD5TtoSzAKxviJloz1T+R8mmqoDxZeZAtHwOqG6hK9GAdnc9iyGoHswDu4vR5CxDGQjaY4wSJMLwh3OtY2rLFYem0N35Px6wo7IrrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kK8ON7MvlhyLFRQ86G9zTZQnCfGdjaUCcnQcNnAV8RY=; b=WrCVFUsmtgXs+RVwSqsulZwSECc4jERnL4G5tX3U0RhiiwcUITa+jpTjzVH6jd82gmsyiVvCCMRjOIcdB2T/A0Bcm4+cMnPAaQB5uXdJd0c8gMAoeBYyE0L/SaxsoOKCjrumKj/jIYDmO3QtomZDWDw/WuxpaRN3X7yPeW9o3oI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TY7P286MB6260.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:327::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.11; Fri, 17 Jul 2026 18:06:48 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%3]) with mapi id 15.21.0223.008; Fri, 17 Jul 2026 18:06:48 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 7/9] dmaengine: dw-edma-pcie: Drop redundant pci_free_irq_vectors() Date: Sat, 18 Jul 2026 03:06:37 +0900 Message-ID: <20260717180639.2643243-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0124.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::6) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TY7P286MB6260:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cf4f07a-b58c-4e15-81da-08dee42e2b55 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|10067099003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: 4vraE5zUDNTFeNhLqSs8KnhRxF+F97/BD3ZR7FEk9GY4Pwm9wKGR8h1ZA5qxipdpcBaxoted/8bg0mS3qz42ys4zLfpguOBVPRNH9KIqaWXb9z1biJTa5a8jLM3kBkCYRFikDW8+lOgnPk7OCjNrvn4d7y5BzsVi+KC6YFdtLZzD1HyxaX98g563Qy3A5j7IZ5GfGxldlwHM8N225hEBkZNmfAgLNOnlipkSBEvSfSB663LgR+1ERzlEBBRQeHVSv9ScwWW/SwWNxlGnLnYWsTE2B0v3BtE+yKsEwOi52Y5KcYzVzfdIldYP1hLGh7AdhYEFndq5E1yTTB4dKWwgiD8GZZtSD1GzyOYcq3NP+iDbgnAz5a3ktY439pMWPiG0Q+taObZ8XFOfENtlS3+Dh9Gi8gU0GcKNBXzV1+PolzAcfDaDbijZPUpNDR2RZmfLOdosvm+03vMbyoIU2S48DiOl1PeUt8YKab9wa6C8MybRrYh43kWeOY/ADm5qeopDd18IZ0nob5k6Bcfr6AbGfa8pmVG6c3ulCkh/6dRmX4ntcRirPovdMKprucAQMDKtwny9APA0oGZMCDx4NjHn2jiMvCWSGTjhIJ/fONniJ4HUqDyZ8NiwKcPFWrhP3CqxRJlnmw8NrdYk8c3lJV+uFtJkErhZ2q6XXnScPx93GO8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(10067099003)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mVkkm4er+q/vyhiEGlF6iDgO11rRJjDo7Vd6vm5QP23qTsA4wIdrdl2XerRb?= =?us-ascii?Q?NYHphuW02CtCjrXV7gr6BfID+mwypGTJQTufl3B9jPwDuLIcODGDA3qSf73c?= =?us-ascii?Q?iARZule+sUr9T79ySdkFq9jdnUEGot0FvimYM4LkkVRuwG1of54iGsdF6/DO?= =?us-ascii?Q?Ij2s1vZtLk+Js9ij/1PkW9ZQh4gykYBE5eZg9JGS7xRb5X5N1oq8ncCAzcCo?= =?us-ascii?Q?2N+Bdav+2IpWyD/vCuRlgyuUrqKILanuHnpAESkjrMNN/I+01ziHw+ka3t39?= =?us-ascii?Q?yq46ZJv72A1HUtVK6Xk4R0NVf3sRa46voVuY3bEdzeUaMkCvHHwOMJ6FoaZu?= =?us-ascii?Q?7mRoQ/kzPR5WDypQAhLUhmsHq1P5wcmoAI5Z3j/7spEQsVdr6RuxAn2fOl79?= =?us-ascii?Q?zTlo7rMIWwaaAG8Fucpj18/mST0u85gfNtmRixqNZjLwoFj7IBTvQ2H6pf4d?= =?us-ascii?Q?ig2cY+5waB9nrmDcWDRhcO77kLP4StLnGQDMkRCtAhHh5lz6PVEui3Nq1C0v?= =?us-ascii?Q?LvZHTWLWUSJer+y2sTKSxl9JeNG5sMG4TZm4nmWtDfmDmUsK9sABefdKMEru?= =?us-ascii?Q?P+QhNPHRMTyGdXSDs7BZE093RQ+yD+giuk5NxOndIIKrVWpStMw5GLtT/xyQ?= =?us-ascii?Q?0GzmeH49durmKzHiPlEugfQDCgPzX0jThypAGIPtMcRPDZyBK+0VN/Xzc/mC?= =?us-ascii?Q?fCpFxTJldT0BbJ8qvD3LGqlBOXv0pXJ8d3mQ+KO2GLzxBznUh4kvO0QhSJ1D?= =?us-ascii?Q?hr6DgxxTEXqy7RRphPGfJ+VqPvlSUB3Mjj8KMZp1y2SbCE81X7vhz9izh8Co?= =?us-ascii?Q?r68a7lvmjmZer4rjfV5YXS7tYx2llGCXjqJ8EPs51Xdxifvjsy2ohYiGLZ6W?= =?us-ascii?Q?b6lTgQTUuc+h4yhL1GtBCy2lrwQoBeP2mFtyOIFeKfVX89k5W68VxVOpgV70?= =?us-ascii?Q?BhQMmSZD1zhD96VqJuMb4S53g+A7/pFa5QteofPUb97BDgkBgy8wDjbCU1Gw?= =?us-ascii?Q?x9EVO5Lqck+tpDAXIKN7Tjo/6eEKfUCE1VyVV0hpXCHczZNQWBHJEjH0OYSh?= =?us-ascii?Q?o5m3DMUVUgki8oCH/GnBsIch2EJTUxj1OVAfmU6woJXGRNbx+jyxlojykNcU?= =?us-ascii?Q?o2np0w/GExwUfHyfXHSGI9qYcodq0fc3oZ4k4KWIYDQkiejCNuptpOxjHFBI?= =?us-ascii?Q?SdYMaErP/n/GdZIk1yDWbH1/HArCqffdQoAMSY84Qfx1K+l1um7j59Ftz7Zg?= =?us-ascii?Q?lRloSWn5gwOQeEBecsHrdvbyczQl2d/Dd48yAz6bIvIVAGY91z0sVKsxdHiq?= =?us-ascii?Q?qAO/Dyq/SoMb6iobSbWVI25dZucLLAGREdmcb/Ng4o3YS8oVgtnUOHutX193?= =?us-ascii?Q?yru3xmNyVyb2r6Nm1F3y5SO+qQMyL6FoNGkmbG/ePl0tIHY0n7dHiGQ3mmNO?= =?us-ascii?Q?lj+tJM1uOOI1f0lWt3N80LdYwi/T3/f3GQniKSRxi7HkvHwPZ9mnBh1mR6V3?= =?us-ascii?Q?xhXrQnfsUf+hDE8UnSu6QMlmngwLA9fmGf8Wki9WjTmPcvaHQ4JDDQ4AivNx?= =?us-ascii?Q?YoaWNhaIJW8isZYJHj9i29VPXxzTFBdafVXpefINxiPOYqCgS8hwx898mDPX?= =?us-ascii?Q?9glAE5pbzYGTs7bqWADxq0vAYSQ8VY+cCEIWC19qM/br3/jPk3apPoZCQsmu?= =?us-ascii?Q?Zljayu/cDskfFZ8e95E69dGuwEA/1EEDCUhusThhNADTj/qVGa+2A6pcCZ9c?= =?us-ascii?Q?1LX6xEql0h0rGOylxj6u3j0d+3s1g8ZmfNKMi6saP7W+WLT5eTUi?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3cf4f07a-b58c-4e15-81da-08dee42e2b55 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:48.0361 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EnmGpIuYaEO0qW9FQA5KKaQC8wP5qEYLFv9BKAJgyDJV/jAhC8Bucj/zFF6ovqhb8pEplc7h/rrfA3GNSgE+nQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6260 Content-Type: text/plain; charset="utf-8" dw_edma_pcie enables the PCI device with pcim_enable_device(), so IRQ vectors allocated by pci_alloc_irq_vectors() are released by pcim_msi_release() on device release. The driver should not call pci_free_irq_vectors() manually. Drop the redundant remove-time cleanup and rely on the managed PCI device lifetime instead, as documented by commit 03e4905402ae ("PCI/MSI: Clarify pci_free_irq_vectors() usage for managed devices"). Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-edma-pcie.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-pcie.c b/drivers/dma/dw-edma/dw-ed= ma-pcie.c index b34e1e45aeb3..db7f1ea35bf3 100644 --- a/drivers/dma/dw-edma/dw-edma-pcie.c +++ b/drivers/dma/dw-edma/dw-edma-pcie.c @@ -555,9 +555,6 @@ static void dw_edma_pcie_remove(struct pci_dev *pdev) err =3D dw_edma_remove(chip); if (err) pci_warn(pdev, "can't remove device properly: %d\n", err); - - /* Freeing IRQs */ - pci_free_irq_vectors(pdev); } =20 static const struct pci_device_id dw_edma_pcie_id_table[] =3D { --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020138.outbound.protection.outlook.com [52.101.229.138]) (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 E00BF37CD20; Fri, 17 Jul 2026 18:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311619; cv=fail; b=DDTiv1LnZAW5/9lR0EbGrEWtB/qwZ8e47VFMVYfx03qMzgXsP1WMFsnVCJdxkxO15UPgacNgEIRAZq6QvqJAAh7L/SlUSUEVzPaQDv1oFqXyEEHPccvzHbpP8NmEY6zlP3vxpqtH+fZWq7ABUvR/bcDcExJ8tOwV7HnJk+sBfF8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311619; c=relaxed/simple; bh=zHkoPlkj8j0TTaubi9xU6w89s4BlJJ+Gl0BpV28m/dQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tsL1V1dO/qmHzCWFBkGub+ewEirQd6cwmVT1ldKJgtM0XHAD/LuJRsFn9UY7bzL1hRNdy5SsiRIwIGv7GL+XiWQ3obmdvTf86x72nfY2R3IlinVHukMp2KkzJ519NBEo3li2mRewYir8MbcJ1IuIgQqb+deAGVATz3pUE2bSHKo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=pnSsZ3n0; arc=fail smtp.client-ip=52.101.229.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="pnSsZ3n0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GTMsHE7UkGq32YBwNiwkM/FZhXehgknHOjbVAg/P7ClU0ksaC2wHZUFnfKsz9//5wW4o1QOqqrhCCtMwaW2ixQ8pQW/iIXhTg//GIOqK8bf2CAWsssbnwi/92XSAKAaltZkQQZ4oIfhLjRcsU7K6R53X9R5uvIEmUkXV8/zYxvelFmvspFFesEAlPh/VVop88tZc/wjD7A11cEBGmi0TcyBM/59bZ1ghKse/5ctnsijjOMhjZfe3g7UeFCmWJZ0DvdzT6oCiiX3vT0QeCWqa6Sdxj9nq+iOE2QFy6kU09+dAGS3IE5zbKjtkzP3hZLTpzbRS84QvUsch8o+gi8Wv7g== 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=HiJiuhmJwXClONd0irEL/4C58R/OInXzmAZpxm3Gug0=; b=UDWlaU/sHecu8VB8ecWvTPPnCy57fy1RSV9dcorRv6ux4sHZkOzWWeFj3KcaUS+/ccXnDGiNoS41BVced0xGFfoNvIazw0T59n0KJJ0L/SB+raJ4v9UMYl+bieDUv1tKy2xQojkii8CErqioLPVNDzpnouRXqt+vEMplo+T8pf1qllO5Tgm8Zf3uFOR0jsXNyEaEyZ8j5zl7Y9rrlSikVw169g0xrLNC+R+y0gJsy1t5Vl6zy+Na2qpIsEkMJfxplxJ1eSV93KcvR/ov9OXR3j7YL8wRltLqLMsi2/ESeXe9KEv0zXNZElSk5jZAVrmJpKUmV7moyR+Lf7UtrW4CSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HiJiuhmJwXClONd0irEL/4C58R/OInXzmAZpxm3Gug0=; b=pnSsZ3n0fTcGgF9JqkXg1CspNNKhSP5d4d7V5lsKvys/lkMtsqwifL9z0WnTeK3sYU6BJJTrX460WhDdJAa8lZrcS6Y278EXVMXu/fDmzwJKyYKAw1ZGL4lqHAEP6tlFON3GpP65N65Ue1zhC2X4VopuxAWeTw/pAo/mel5bIno= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:468::22) by TY7P286MB6785.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:31f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.12; Fri, 17 Jul 2026 18:06:55 +0000 Received: from OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM ([fe80::b7ab:6af2:d18e:4a71]) by OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM ([fe80::b7ab:6af2:d18e:4a71%6]) with mapi id 15.21.0223.011; Fri, 17 Jul 2026 18:06:55 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 8/9] dmaengine: dw-edma: Snapshot the v0 interrupt status once per handler pass Date: Sat, 18 Jul 2026 03:06:38 +0900 Message-ID: <20260717180639.2643243-9-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0370.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::18) To OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:468::22) 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: OSOP286MB7730:EE_|TY7P286MB6785:EE_ X-MS-Office365-Filtering-Correlation-Id: e1bf7f5b-f87b-4a96-a95d-08dee42e2ee3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|10070799003|56012099006|10067099003|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: LEHBxJ14CCXuPVr+ZD18lfRDumrVRYeBB6tCV6IH3c5iVypb9XuGENPkf6moObv6JSKaUKgjKEvRQ0FW7qQnjztDNAusp4Rw9ZT+33/fenS+6GGG6QxZC7hasSeCXw6DhgZvV2jek0JP4jEvrH4KKV2ZvYz1dB2dEkJ30GP+2l40Run4YuMMzuMt6Uqz8IoKS6lPOuv188OBSKTyB9wej6F65EEYzMlHlnAkMw6zDWY1ON0okgGh9DoxtrQHCOqC1SOxsX0e3jdYPdXP7Lu/pf32GllNZjkBgo9rEOnvUS3XfZZItxerD/lyY9xuGFhD25ZHH+pHx76CV4xmQONi2x35Kz3OqdJmfVsL0lJsg1LoCaFBfJ6GC/zXWy910QXBPR+yJ75xoki43xK0WcjYicndCxPmw400pr1IHtUvwmxtPi6r70PDBK3qEIvTO7nuRGnAoUEW53qNaq55Q3NlUluAFRhhOqW81KQ/Ct2mw47sQsVpiRV43EjwIzPhXXp/mwBVrez97wssGWXQ2/9l2EWolaxjwuWOw+DZ9/Av0rDeEAuJRVBXv9zPBYzncT6zHamqBEIodkuin70E7MI3wnFqaqfIwyRYx9qacrzkr2sTqd/Gz+6uAi52WWbHE/f/46FQxeUrnR/LKBBhd1WUSyU73NEnIY30mBoeAUZZUi4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(10070799003)(56012099006)(10067099003)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gQ25OlHugGXgsZ7Y3knUT2NSQX5MGRLDVq7+7nk0401Acxnz1KgtFXiwZSk3?= =?us-ascii?Q?atWZl3nvWY55pBUGXBWIggFPx0pRqeKvLzxZ0ayjgxA5N2XH4GgsuXFc9Ype?= =?us-ascii?Q?fHkQcEr0+qXaV/ZF1BWbutnXdXkcM3fopoHnCY8Qj09y2LUVDFWHMKOHqmys?= =?us-ascii?Q?o8OcNN63DwrTcW/usoqiF2/l5GoivOmWS8rpR+CFWHS/Z6773dTHZbRoltHt?= =?us-ascii?Q?1o45HMeIORLX5l3ejs1yNO9UaP0oPL3L53Ts3rS5ik4/sb1xB+Sb+5yaQ0Xf?= =?us-ascii?Q?G6Hcov7TVztKNf1PSuclXaXu2eD1XUiC1VyXFI+IVi2VqlLEtoHuiAzudy6v?= =?us-ascii?Q?6h+x9oEBJTJPw7/wd9nkN5Lwbw7i/h/lHt67WvGCNWET4PzijgvBLedf/1sC?= =?us-ascii?Q?cTBuSubKZrVno8QjQQJ6ldblufcfZFOLOtM/yAyV0P+yDEuDZvwy4YCYSq0q?= =?us-ascii?Q?Ae4Yh1W3xPovpqdErtReZ14utcKlf7wvncZErcBqI0+4eYWmAxpLiF5ZlLjO?= =?us-ascii?Q?qKt3ZtnZuVNCiMbOU2hRBVytBJxso1ult2Oxznl06TfnbH5M5ohQUtqECODe?= =?us-ascii?Q?/595qGy4CYcyGUdnc4K9O/86wg2SKoARFyupkmz1xY6d4FDxKnOoaF2LRvF0?= =?us-ascii?Q?WHopF1DuZOYx6Af+4gpbHraX2GZ3CSrez25+22o+gtUIOPi/l2i57HloarzF?= =?us-ascii?Q?HCI+Vv71vikZzY1TibrGupbp7Hx5107e+r+qXEFf2wrEdZiTX4wanBJpFHSk?= =?us-ascii?Q?+/NDYz+yS9qMjakmVN+o60N+jBkS066YG96OnDP+B3YPSs3s9jzFikAnzs+P?= =?us-ascii?Q?qzEGxVvH2372NQh+JgMAnl22ZySYMHuHLfXUmhaws6XBp5xA/h0iazMX1E59?= =?us-ascii?Q?OQEM7+3nNkc9kjV2kYp/5MN2g/IQDXj5hHy9sfy8exIpkuqv5hlBP0lGASxx?= =?us-ascii?Q?I3FZJXitZTNLYIw6zRffBu8lZutgoVlUrpLoYe1ZVQMZhdOotvSxm06IrdHE?= =?us-ascii?Q?rEF2QAV12HqLR+qAD0spCvFSwTfuthRcJfLtKn+4ikY21sR33XdzS5B8pAPE?= =?us-ascii?Q?zI1wxVst2M2r2HkU7UZemLJPbffbqwle+4t3iGgnX1DV7FiWBeWQVK1IApZ2?= =?us-ascii?Q?AtQiSFmwa2HGJ/QEvIlGjfVJ4JAG2cM5pn9A3T8U4hOUPHmPBva34Rud/Yx3?= =?us-ascii?Q?eb9tszgTS7CHPmMhUfv3KClV+uEmhKiNSwJW3etXlLyQ15vUVuticajF/qKq?= =?us-ascii?Q?XDi5d8DB1Zbw64ERrMSpbltTajqNtmN3EXDnuxI9GO7JuwD8gfDV2P6F1o4z?= =?us-ascii?Q?qn+8108k6iAx9G8BqPWgRwirDTgSn1FfNU/NBc0rSSeEg1eFT31MA772ZYGV?= =?us-ascii?Q?4va3lGXrj5Ui/IGAEMuhuMvoRtTEuoYh2L4TTUQaRwHkPAjLZwa/Y4UVXIIX?= =?us-ascii?Q?vSykB2SVmUdtdbEKlNJbL1ukqW6eNAubX619VJ8ULwNKGuNVqeJQ1M5mSBHQ?= =?us-ascii?Q?6n8xeTUHd9z+JC0+vLV1awg6WHr5BWERz8yJKZhB3jy7auES6SUjiKbwyp6x?= =?us-ascii?Q?YOkiHVktkVMhu2/henMFnKEeveee6y2njB5EYDmSxT8GqJnGRL8ljcibP1aa?= =?us-ascii?Q?wX4NFrBOi54nfOt79gwbq7hUbz3V029yqjZsO3kjSWfm5r4XM35FwJbSeA6Q?= =?us-ascii?Q?/yg9aIfJreBYxjRPMl2ECwyVa6Su7Ro/bAHlwaZq0ZSRrFKeaxQEPbdDOWOm?= =?us-ascii?Q?Hxn2T4MJfc0TCP8HtBYtTSuPddkS3yyAOpq4TfWe7hXLbkQcEVwd?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e1bf7f5b-f87b-4a96-a95d-08dee42e2ee3 X-MS-Exchange-CrossTenant-AuthSource: OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:55.1013 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SJQ9Wh1D6Oetx7hdeh5t/wlTuh6C2R9qBsWbcxUef62Cf4LJStR+SqTaixn8S+ZPZsB2cb02T38Kqdbl2OSOgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6785 Content-Type: text/plain; charset="utf-8" The v0 interrupt handler reads the interrupt status register twice per invocation, once through the DONE accessor and once through the ABORT accessor, although both fields live in the same 32-bit register. On remote setups (dw-edma-pcie) each read is a non-posted round trip across the PCIe link costing on the order of a microsecond, and with one completion interrupt per element the duplicate adds up. As an example, profiling the R-Car S4 remote path put the handler at ~7us per invocation, dominated by such reads. Read the register once and derive the DONE and ABORT views from the snapshot. No abort is lost to this because the pass only clears status bits it observed, so an abort raised after the snapshot keeps its status and its own interrupt delivery brings it to the next pass. An abort on an observed channel cannot race the clear either. Software can restart the halted channel only after abort() runs, and abort() is called after dw_edma_v0_core_clear_abort_int(). Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - Adapted to the bitmap interrupt masks introduced by commit 64173b6b7609 ("dmaengine: dw-edma: Enable HDMA 64R/W Channels"). drivers/dma/dw-edma/dw-edma-v0-core.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 7bb3ec461cce..f1abbbacca5e 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -218,18 +218,6 @@ static void dw_edma_v0_core_clear_abort_int(struct dw_= edma_chan *chan) FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id))); } =20 -static u32 dw_edma_v0_core_status_done_int(struct dw_edma *dw, enum dw_edm= a_dir dir) -{ - return FIELD_GET(EDMA_V0_DONE_INT_MASK, - GET_RW_32(dw, dir, int_status)); -} - -static u32 dw_edma_v0_core_status_abort_int(struct dw_edma *dw, enum dw_ed= ma_dir dir) -{ - return FIELD_GET(EDMA_V0_ABORT_INT_MASK, - GET_RW_32(dw, dir, int_status)); -} - static irqreturn_t dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq, enum dw_edma_dir di= r, dw_edma_handler_t done, dw_edma_handler_t abort) @@ -240,6 +228,7 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq, = enum dw_edma_dir dir, struct dw_edma_chan *chan; unsigned long off; unsigned long *mask; + u32 sts; =20 if (dir =3D=3D EDMA_DIR_WRITE) { total =3D dw->wr_ch_cnt; @@ -251,7 +240,17 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq,= enum dw_edma_dir dir, mask =3D dw_irq->rd_mask; } =20 - val =3D dw_edma_v0_core_status_done_int(dw, dir); + /* + * DONE and ABORT status share one register, and on remote setups + * every read is a non-posted round trip across the PCIe link. Take + * one snapshot and derive both views from it. An abort raised + * after the snapshot is deferred, not lost: only bits observed in + * the snapshot are ever cleared below, so its status remains set and + * triggers another handler pass. + */ + sts =3D GET_RW_32(dw, dir, int_status); + + val =3D FIELD_GET(EDMA_V0_DONE_INT_MASK, sts); val &=3D *mask; for_each_set_bit(pos, &val, total) { chan =3D &dw->chan[pos + off]; @@ -262,7 +261,7 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq, = enum dw_edma_dir dir, ret =3D IRQ_HANDLED; } =20 - val =3D dw_edma_v0_core_status_abort_int(dw, dir); + val =3D FIELD_GET(EDMA_V0_ABORT_INT_MASK, sts); val &=3D *mask; for_each_set_bit(pos, &val, total) { chan =3D &dw->chan[pos + off]; --=20 2.51.0 From nobody Sat Jul 25 04:59:09 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020138.outbound.protection.outlook.com [52.101.229.138]) (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 E82A837CD53; Fri, 17 Jul 2026 18:06:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311621; cv=fail; b=qpKp7at9KeKrwAXuP4Y/A4TIEJfQAL5MS+w9pOs1a8X0HFZ2fz92zWRWfyokrsjMPkGsHMCusa2Z63oMmixKXsZxb25uAh7RXsiqNNmUfrEKO6qBtls+1BzQs0s6PjBc+f63d/HS29tCxroCNpjdw4ZgHWTcmJNp8vUD2s9ii84= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784311621; c=relaxed/simple; bh=YFHj6O7lVREAH+kqwWFiKo+IxPBl7QnMk2eNVHGDV/g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=t4DkxljgNpNonj68peAukdJX/7wZfcgpIO9Gcjv2uWyS+yslCrHpm2CRA3P2RlirlTovsgjBcE84XSksZ/HehLowvRfjeJ8OwfGc8pg3vnojF7UwapWwlmYtwXUNoQZm3bAr0bDzOZhyaM5CxK3Z6Y0t5PSS7tCnb0PImanhllY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=jzjtaeb2; arc=fail smtp.client-ip=52.101.229.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="jzjtaeb2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GeUPCCmEI0SLgZutp9CwJlGdEGIiaUKIMh1PvKHTHGDYqWk5AFG1YJmlGXt5P2aBk9HUNUyL5FnvO6Yrqiv389KxKK9HUtzyPF50zB3E8DjFW3pOzpGQvMXalAcjxCtSuXeA6CGA0QLAvelYxgpOAFT/HNRIcaYqVu7lfWw1o3ojMReFSWAml9j3I9jwU47rF0Xk40xuZlLWJzhyobjVCa9fhGyKqurZ2/0pBVkuuJOnCiw9H6V+tHKM7Hkl17U/Vj1UrnxEQ0WcrWm8+RUV+Dl3H532teJQyo3CKF/YhBEmlINE+USu6zrNKBP9nl6RbLD1NmS/3JlnU99PsinqZQ== 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=Cv+/a5FWdAiM8hmOa0z61jIoGwvniZakGP/KJmFxijc=; b=ligxtAP71Z5AnUmwjbO7mcccneBpLYNgWuI/1GTMZ9d9R5eCdD/p6yflEeskCVrBbOjSNJru79m+CyVV/vvlBvE+CNdmSKkdlTn6wlMGg4ln0beC5IwSCdzX6W/IzCuHAxZDQMT5vYv9t8RZQfOBoivGAWiW1A34KCWeh71UnJf9X0BLs1USyJMgxRwTbvtdCMJ2H6+pHUNJ6N9eKXcNpJ749iYKEm3RJvClXOTAKJjkUfq09T4ik88onBXICeICbqBgBgRXG39RXgrNkZoIzM80wdAyLFEOezX7fmytPyKFKNwaRNLaTn+Eu2kopQpxuQ8DnLRk5wO63mA0mkJvzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cv+/a5FWdAiM8hmOa0z61jIoGwvniZakGP/KJmFxijc=; b=jzjtaeb2djqcZRHywoIFALl68jBI4UgJSbAaNNCANzs51+ko2KYPzU1jlNk0Q2x4eR8i7dwQJkwyb4f/M0rNT/qjRK//KGK+89B9z3aZHuCnddS+3GsCe6GkdukfWqzcT/+H+Dyl41S1hvkRy91BKUdhpvTDBYsngb5OWcjjQ2c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:468::22) by TY7P286MB6785.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:31f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.12; Fri, 17 Jul 2026 18:06:56 +0000 Received: from OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM ([fe80::b7ab:6af2:d18e:4a71]) by OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM ([fe80::b7ab:6af2:d18e:4a71%6]) with mapi id 15.21.0223.011; Fri, 17 Jul 2026 18:06:56 +0000 From: Koichiro Den To: Manivannan Sadhasivam , Vinod Koul , Frank Li , Cai Huoqing , Serge Semin , Gustavo Pimentel Cc: Devendra K Verma , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 9/9] dmaengine: dw-edma: Defer channel IRQ handling to workqueue Date: Sat, 18 Jul 2026 03:06:39 +0900 Message-ID: <20260717180639.2643243-10-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260717180639.2643243-1-den@valinux.co.jp> References: <20260717180639.2643243-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0059.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:371::6) To OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:468::22) 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: OSOP286MB7730:EE_|TY7P286MB6785:EE_ X-MS-Office365-Filtering-Correlation-Id: 4278d1d0-5815-4757-13cb-08dee42e3070 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|10070799003|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: DOfFABkFcXm6RE91RKxLL000apxl9siHQuU6l286GtJ8NJ5rI/PU66DJCTSHx8zKI42lMekRyGLsQM1pZ1k+3DB0cHQcDJPOkKg8vlJ/bvtWW5dMPv5dFYjdemSb2bCwNJtwaT7gEf85SNooPixX+T7taIxY9bGd78jfZCuot81HqL9NG4AYPS21B/3YuQVfjXrKUY87x6novfHtrSGIRrim0M8tVRIIlkcDgYaUWp2I27UUg02NPwA5nTPANNEBbOLDDQEOhKXbVdWZLRYzSjiz6AdwL//YwJjN/LqwAdDtPlc7dcBFIeX1XECBEQ5Ne3cM+u1lYh4j9lW8bjczcVe0ScuMvBrKZBIgFZ43Gyla9o66B8bQAQdTfI/Sk8MpRI4fpQGP302JnRvQ9nCcNLOVPcXLaQkG5B4yKDKa2bWE7IHMJnv5AbSuQjgw30j2/Tp+8ysK5rnwTp8IryzHVR4aB1tFvtVy0yT6miQ4UhZBZQxuRV1/0DN9RX+qIbNwDF09in/Ff2mHU4een1LHRQn0sETGPnXwzW01CkoCBW+6hN1gUEfFieZDlxCVALuPyN+IdJa6M5g84y+LJVt4+WUwlPwqF0FsChAwdgKDY9uY0ON82ojt/jt52IvovGOHOy2PQ2mzV2Q6bL4TccTNjIs3UuVmrq9/e0VSEpY7Q6o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(10070799003)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JJeIBaKSfQe4iKvYywXhaKtbMzPNP46s8grl1pntb0EPwFzuKn7HeFIb5N9L?= =?us-ascii?Q?+rjrG931MyK3YuobkbqvQducP6ldGZ0yvIcOzYqkSeB9wN/RPMUkzsvX154Z?= =?us-ascii?Q?xesX8jQqwEfEzqGgjNLnitzL1M3ljFGrEeATn23JTNHw/srfFaxcS6uCy/PK?= =?us-ascii?Q?+P9JfsMGFlnImlJ4vNokCY4PcvtTKd5/GesowyOA5FvA61TUfsDxrTLZPAra?= =?us-ascii?Q?Y5KFxbnmTBZkST5JzAyev4E4I5r42fJOPx9uvmP3bkiMLRBMgswO3qjDUm9Q?= =?us-ascii?Q?/U5yFzE/sU1QEUZXMhVEEZd6CIxAanRasn9WMqjlEQblA3H6+cBdpbqJR7X9?= =?us-ascii?Q?G8WZz+qmJr3a9K7fnyDj6gKUHDBfo8yt0R9m6P4dZjMddwGyljQU3alOicFg?= =?us-ascii?Q?Q9+FgNtDZA/r63GUq8aPCfGMITMzGtcU9re33wBTfEonU3yl0XfeJcF7cXWB?= =?us-ascii?Q?CW/650PGLJYLT4Swr4Dthrw7EFHbu8wKUqp/QawI/HD7+kqLyKXmnCiOU7re?= =?us-ascii?Q?aqs9buLOuWK8uMOc0M+HmY6EyAV5gMZm8DEn5GcO62+wcQrjXlosFipR1vkT?= =?us-ascii?Q?OUziPb01g1WQkrI0EGqhA8ud3Yha+M/j6iCGhrGVhS0+DSzLTt5tGlyuRHsg?= =?us-ascii?Q?zp0ceEkUnaSef7Ct9EmnhEPY//VxBTL0pPT6cz299iEO6rHLhzfCy+fdM+2j?= =?us-ascii?Q?36QmSDJ/fp55K7cJJUU3ecUREfP/7itWDIWuiPQ5SO03LcSkdHuf1b3RP78l?= =?us-ascii?Q?nQlyDCwjpCmzD7svD8QBnRrRNargrdlB9vsE3xcsxX1UCGfSsSayRuAlUeu1?= =?us-ascii?Q?3BK7jlyDHzwYXgPc5lMgSsONM+TXn7Ty9f/Z/W7r7Q4Du1LrVKwuHRN2zwVz?= =?us-ascii?Q?iw63C0ky3WVrpk9Y+wOaSqfS1x1r3e5qfi4izJBSCwIJwC56dWszLaibD4z/?= =?us-ascii?Q?f/SZiCHx4FKU7EyKX2Uv/7vPAB4Y3nUf687apwKMXQClPOksbv6+ag72XsXP?= =?us-ascii?Q?/8qFsXPhguPh+sNee4pBz+0DkK4FItAKn2wfUfuxs1Z+tvU1Bpj2D55Ulvsn?= =?us-ascii?Q?8mtlt1DbNmrmmQehhBMDpRAg9N+Ml8QU/LmfyP60kEjZX4X4ac07FHTXuLnz?= =?us-ascii?Q?bX0b73cK9M8w1xtMOEpjt+VAuchzkIB/EmE10MytEVQSM+JLIhowSaixIY2v?= =?us-ascii?Q?drjguFf3TpIOCZNllaQILE73tRDNG8W2HMMyh90i8f+/im36d4Ufl6Oa7s4N?= =?us-ascii?Q?tYLBl+Ljutg35rM87U2/ZwR57/KdSq9Cw2dZ4oGKXN3eEZS+tjXxF+GC11fy?= =?us-ascii?Q?emF1JqQ72j2zb4GM9Wii0dlWjyYuNnz9Lxt4XtMfHLBGlHzbMdQ1lQenF+Uu?= =?us-ascii?Q?ZIPYowhDqMgXZMAj1h6IXcq4KsWfNgqjEI5fd4P8Oo4o40napBA7jpfNVtsh?= =?us-ascii?Q?dENDNtCYqYTtJ2OmrJYLrOb2H5Sm8PMau+D2FDRZbPvPpjiNUagf8/YqCB8F?= =?us-ascii?Q?xmpc0/SIizXYc4QwJbR4Pkh3XVfFllc4L+n0k6zAxNIisn8d/zzg5l8MBE1W?= =?us-ascii?Q?w82zgrFdM86j3vIosg+el0bWec1s54eu6ogFXIFswkI3LN1hR525aw/SHXD3?= =?us-ascii?Q?edt1T7bhHym1qWtT0korynNIbosTyGmoZ4f6SSDin01o/mwvwoZ9dMWXejwh?= =?us-ascii?Q?5zX7uJZfyaDHtjZeF422jqITQN85g3G8mUC01GJolRZo+451Bkacyti0JJWw?= =?us-ascii?Q?vUZpIh9y34W+pX1RPUTswoMvj3FAr3vsqUfoGoWDrOfT3sJ+6NS/?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4278d1d0-5815-4757-13cb-08dee42e3070 X-MS-Exchange-CrossTenant-AuthSource: OSOP286MB7730.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 18:06:56.6271 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: b41fA8mQglo0IvZuF8vsNCb2/k+Q4P1aJbbjfMaR6qCBSt2LST0XjXau9uNBNC37Flx7mGakFrFUgHyZXNPgKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY7P286MB6785 Content-Type: text/plain; charset="utf-8" On some SoCs (e.g. R-Car S4) the endpoint-side eDMA raises a single fixed SPI that is hardwired to CPU0 and covers every read and write channel. Handling channel events directly in that hard IRQ context serializes the completion processing of all channels on one CPU: descriptor recycling and refill, client callbacks (the vchan tasklet runs on the scheduling CPU) and the doorbell writes all funnel through CPU0, while the handler additionally spins on each channel's vc.lock. Especially under heavy multichannel load, this contention becomes a performance bottleneck. Keep the hard IRQ handler minimal: clear the status, dispatch channel events, and defer per-channel processing to work items. A work item per channel preserves ordering while allowing different channels to run in parallel on any CPU. Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- Changes in v5: - No changes. drivers/dma/dw-edma/dw-edma-core.c | 69 +++++++++++++++++++++++++++--- drivers/dma/dw-edma/dw-edma-core.h | 11 +++++ 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index ab63d7bddaab..e4dde3518b83 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -30,6 +30,11 @@ struct dw_edma_desc *vd2dw_edma_desc(struct virt_dma_des= c *vd) return container_of(vd, struct dw_edma_desc, vd); } =20 +enum dw_edma_irq_event { + DW_EDMA_IRQ_DONE =3D BIT(0), + DW_EDMA_IRQ_ABORT =3D BIT(1), +}; + static inline u64 dw_edma_get_pci_address(struct dw_edma_chan *chan, phys_addr_t cpu_add= r) { @@ -667,6 +672,39 @@ static void dw_edma_abort_interrupt(struct dw_edma_cha= n *chan) spin_unlock_irqrestore(&chan->vc.lock, flags); } =20 +static void dw_edma_irq_work(struct work_struct *work) +{ + struct dw_edma_chan *chan =3D container_of(work, struct dw_edma_chan, + irq_work); + unsigned int events; + + do { + events =3D atomic_xchg(&chan->irq_pending, 0); + + if (events & DW_EDMA_IRQ_DONE) + dw_edma_done_interrupt(chan); + if (events & DW_EDMA_IRQ_ABORT) + dw_edma_abort_interrupt(chan); + } while (atomic_read(&chan->irq_pending)); +} + +static void dw_edma_queue_irq_work(struct dw_edma_chan *chan, + enum dw_edma_irq_event event) +{ + atomic_or(event, &chan->irq_pending); + queue_work(chan->dw->wq, &chan->irq_work); +} + +static void dw_edma_done_interrupt_deferred(struct dw_edma_chan *chan) +{ + dw_edma_queue_irq_work(chan, DW_EDMA_IRQ_DONE); +} + +static void dw_edma_abort_interrupt_deferred(struct dw_edma_chan *chan) +{ + dw_edma_queue_irq_work(chan, DW_EDMA_IRQ_ABORT); +} + static void dw_edma_emul_irq_ack(struct irq_data *d) { struct dw_edma *dw =3D irq_data_get_irq_chip_data(d); @@ -761,8 +799,8 @@ static inline irqreturn_t dw_edma_interrupt_write_inner= (int irq, void *data) struct dw_edma_irq *dw_irq =3D data; =20 return dw_edma_core_handle_int(dw_irq, EDMA_DIR_WRITE, - dw_edma_done_interrupt, - dw_edma_abort_interrupt); + dw_edma_done_interrupt_deferred, + dw_edma_abort_interrupt_deferred); } =20 static inline irqreturn_t dw_edma_interrupt_read_inner(int irq, void *data) @@ -770,8 +808,8 @@ static inline irqreturn_t dw_edma_interrupt_read_inner(= int irq, void *data) struct dw_edma_irq *dw_irq =3D data; =20 return dw_edma_core_handle_int(dw_irq, EDMA_DIR_READ, - dw_edma_done_interrupt, - dw_edma_abort_interrupt); + dw_edma_done_interrupt_deferred, + dw_edma_abort_interrupt_deferred); } =20 static inline irqreturn_t dw_edma_interrupt_write(int irq, void *data) @@ -844,6 +882,8 @@ static void dw_edma_device_synchronize(struct dma_chan = *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); =20 dw_edma_wait_termination(dchan); + cancel_work_sync(&chan->irq_work); + atomic_set(&chan->irq_pending, 0); vchan_synchronize(&chan->vc); } =20 @@ -891,6 +931,8 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) chan->configured =3D false; chan->request =3D EDMA_REQ_NONE; chan->status =3D EDMA_ST_IDLE; + INIT_WORK(&chan->irq_work, dw_edma_irq_work); + atomic_set(&chan->irq_pending, 0); =20 if (chan->dir =3D=3D EDMA_DIR_WRITE) chan->ll_region =3D chip->ll_region_wr[chan->id]; @@ -1112,10 +1154,21 @@ int dw_edma_probe(struct dw_edma_chip *chip) /* Disable eDMA, only to establish the ideal initial conditions */ dw_edma_core_off(dw); =20 + /* + * Deferred IRQ works are queued from the hard IRQ handlers, so the + * workqueue must exist before any IRQ is requested. + */ + dw->wq =3D alloc_workqueue("dw-edma:%s", WQ_UNBOUND | WQ_HIGHPRI, 0, + dev_name(chip->dev)); + if (!dw->wq) + return -ENOMEM; + /* Request IRQs */ err =3D dw_edma_irq_request(dw, &wr_alloc, &rd_alloc); - if (err) + if (err) { + destroy_workqueue(dw->wq); return err; + } =20 /* Allocate a dedicated virtual IRQ for interrupt-emulation doorbells */ err =3D dw_edma_emul_irq_alloc(dw); @@ -1138,6 +1191,7 @@ int dw_edma_probe(struct dw_edma_chip *chip) for (i =3D (dw->nr_irqs - 1); i >=3D 0; i--) free_irq(chip->ops->irq_vector(dev, i), &dw->irq[i]); dw_edma_emul_irq_free(dw); + destroy_workqueue(dw->wq); =20 return err; } @@ -1162,6 +1216,11 @@ int dw_edma_remove(struct dw_edma_chip *chip) free_irq(chip->ops->irq_vector(dev, i), &dw->irq[i]); dw_edma_emul_irq_free(dw); =20 + for (i =3D 0; i < dw->wr_ch_cnt + dw->rd_ch_cnt; i++) + cancel_work_sync(&dw->chan[i].irq_work); + + destroy_workqueue(dw->wq); + /* Deregister eDMA device */ dma_async_device_unregister(&dw->dma); list_for_each_entry_safe(chan, _chan, &dw->dma.channels, diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index e39c11bc91fb..90ba37737c3a 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -9,8 +9,10 @@ #ifndef _DW_EDMA_CORE_H #define _DW_EDMA_CORE_H =20 +#include #include #include +#include =20 #include "../virt-dma.h" =20 @@ -80,6 +82,9 @@ struct dw_edma_chan { =20 struct dma_slave_config config; bool non_ll; + + struct work_struct irq_work; + atomic_t irq_pending; }; =20 struct dw_edma_irq { @@ -103,6 +108,12 @@ struct dw_edma { =20 struct dw_edma_chan *chan; =20 + /* + * WQ_HIGHPRI keeps completion processing responsive under heavy load; + * WQ_UNBOUND lets different channels run on different CPUs. + */ + struct workqueue_struct *wq; + raw_spinlock_t lock; /* Protect v0 shared registers */ =20 struct dw_edma_chip *chip; --=20 2.51.0