From nobody Sun Feb 8 18:09:17 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010017.outbound.protection.outlook.com [52.101.69.17]) (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 8C75D35E551; Fri, 9 Jan 2026 15:28:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972537; cv=fail; b=GLjIBwXgrPzWnHTFLML6Z77kQvaEi4NpcBz3EJeRT9j9ES4wyO2g/+sk8z5Ghp/4ZWQHDDT41U+hZKIPKJ3eeyxGQuomUuDNj/t8p+9BMZKbIkJVHCLxBtlYxA4bhtkXqSX9Zeo/s78Oxv++bBdynWOwcPy22Loe3EATL5ihgUU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972537; c=relaxed/simple; bh=yKF99Tx9lpadPhYSreIAeNag0NgA6KiKL/9dG8d/zNE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Cpmuf+IRdCfod8SFUj7b+PLNp7ii12NMpd0T8Se/m+/NE0dIF+LkKlwO8EQ2LmHyr8IBQ4GHco4Nerssg0dJ0o4MZtv/8GNCH2tiW0+NPknLfqeWnc4tIiiokRLzdfNYpPk4uiK0kqWazlYT+bq6HDg+Ov3n+VIZyLuKEQWO9ag= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=GJ48CMd4; arc=fail smtp.client-ip=52.101.69.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="GJ48CMd4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OqazjzU/F//y8y0D/szXDpxLhjvEt09xHrqVAqy4K/dCfOZdmotkAMdCZZkDMOYsXB47l4/5XG1+zxpSCAgyGidUjsGnZGSNPLUjy//3v3M+q7iQENCRUWBjBndVWM6YP92wwM9WzAIH+hGIzY71UGuX8PQKdEnrN4W5Q1zNUplE8WgaYWdT1BZAyqhhwWJZI2IEViMaPTmq/MD/qzWYEaTepNOXuTi85rZUddWFr1BMfIwIHgFAoL0hFJi1qdeJ6uMAvzWg2OrHFW8zf8aNRLNFwoDUA/jQHKpNomqf6aG3OYCclTWs/Ou+aU0aZaw3dn1OtrxVInStijkSYSISeA== 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=XfLjh+ApBY/nPWTjERKkBzW3FBqydBMQZmSG6vezxZs=; b=cVPe5qaFp+zC2x3qb9NHbnEklNwpm1Vk0Iw9f6eq2wxhOdgIjbErIG2FGpT7scZ0L0xGWJI3dN8I6L6jTJ/BtGaOjRWhq+YvZt5XuRPfAswVnzTVfhlpG3UPYkwzlvW7kVV41K6E7OPEMHWRMTulDu1e8P4vUDFfCsB8AD9IIO7tv/BkD5KYwYDzFPqDJUfm/YbP/J2Yf+rw6HEOUjchO/st1jCZxvrRg2siaupld5ug9kgQbxVvNbNOkJECgQyRqNM38uvSAemuI40neXmylZrIV9mUVg/lmWhZ1P5PjfTu6JK1F3Me7cefqfygvFS10/T/351FCMKGack1Xv+0bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XfLjh+ApBY/nPWTjERKkBzW3FBqydBMQZmSG6vezxZs=; b=GJ48CMd4kLb3wS/JdSvOuQj1Xx0wGwWix/f4TXUEpuE8M9m/b0nLgqq27i6spucpKCiQDVRYFSA+APzaFXUmjQhKKLmUaqzvwCV7UKA1muy89dNoAezqcUHc78cyRUYjGV3RDn2lfs6YQN8VSd7cxA4xzwng03VLqbSwXKr32UtVViWSSfUqIR6Ykbv99yJ0rrJLNmhSNcqnRAK+LeUMcJMQesKny468bi7fiu2cHeoMxvR2HNIbkLKOp2D1SY6qL9aNn/7risDC93cfQ6JYXB+VwYLjw6VrUJ+Iv4UnsAx78jIkVfjitLnHVY8CzzrYPkJa6C8ziFdXJlQJwf/aXw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by AS8PR04MB8261.eurprd04.prod.outlook.com (2603:10a6:20b:3b1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:28:53 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:28:53 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:21 -0500 Subject: [PATCH v2 01/11] dmaengine: dw-edma: Add spinlock to protect DONE_INT_MASK and ABORT_INT_MASK Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-1-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=2083; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=yKF99Tx9lpadPhYSreIAeNag0NgA6KiKL/9dG8d/zNE=; b=VltaR4AfwYp/En0IdxTWPYJw+NFYZ0tZwTlQXdoAtkIecKm7psYFmtOMkn1VnoDCks+moxvQp /dBOAV9qxNMDuhCZ0UbLh+1W1b2QhGOtsxkTZF6reNzA45XbH/xYlTY X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|AS8PR04MB8261:EE_ X-MS-Office365-Filtering-Correlation-Id: febc1897-2aeb-4354-90bd-08de4f93cbfd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|7416014|52116014|366016|1800799024|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SDh3KzdTYzVlQUNiQUViSW5yb3dsS29LSkhQaThJQ1l1L0FVdExna25zRkl0?= =?utf-8?B?ekV0M1h6MkN3WWxSRVNNNzNqTVIrOEpkYkk0ZStkNjc3Z1QyK2hrL1RRQ2R3?= =?utf-8?B?MlNHTmZ1WGtWZ0VOTVRFM0dLTldTVEVMYm40YkVjQ0hiRTFXN2tuMTBsdlAw?= =?utf-8?B?SXJJbXlHSWk2ZXh1L3RtQ0l0b0l4Tlpnc3JCUnYrOCtvSEFBUGFjMDdjbjJm?= =?utf-8?B?RU1QRnQvS1JVQmRyT281WkFpK3RQaHVBNHY1RElkUVRrWUdoMnorLzFpNnFB?= =?utf-8?B?NW8vRTZEbE5aTzlmTjdCdVhXaWkrem90YlpkN2pIRDZDZXNoaVhYUTBzUzdr?= =?utf-8?B?RXUrTkliMURKL0pkbVVPeUk3dWFpZ3pSb1dLcTYvOTFwY1JjdW9uNFY3eUty?= =?utf-8?B?T0tiZzVYMnNpTmtQYUUyaEhEM2JoZ3JvMDZnQkNRaXlpbmtmd2tGdkovOUFi?= =?utf-8?B?Ny9reVRlOTdnS0RUUjNmZDJkU2szaUVFYU1YdEM5K2o1OXZTenoxVkZyWmsy?= =?utf-8?B?MERnTElwcXpDWmZoRXRGQWQvMWpzWnBIZGNuK3RhZEozTHRzL2krOUkxMGVZ?= =?utf-8?B?SFZyQnJPd1NOdW1kTFphMVcwS3NBMksrZ1ZtQmhzQWJJUHJJZDZ1VGVsb25U?= =?utf-8?B?cHFybGhuZmYrUDJrZzBVVlFpYjNVc0h4R0hXaGN2eG9ReHpVNHFCRyt1VlRI?= =?utf-8?B?V0NPN1RheHR0cTV4ck9iVmpGdlg4eGFYNEdhcnN2WGlCbEZpQjVBcy9hR1Az?= =?utf-8?B?WHY5OTE3aGlrZHpVRlF1M0NHYURqOUdybTRJRmxCRDJIRWV3MFp5VzF3ZmRJ?= =?utf-8?B?cHpGSWhzSVZ4OUxnWlJzZ3lkSmdCN3ptMFROSXhORDJINVd4RFV6Skwxb0E2?= =?utf-8?B?YWk2ak5OK3ZhSmNOSi91S1N6eExGeGNmL1BaT1R2L3NlS0UzV3VtNTRjZGJk?= =?utf-8?B?NUp2Zy9pak5oM2xoUGlOSGYxbWw3dXFwVWcxYXljYnVzTTQxaS9adFYwR3F5?= =?utf-8?B?NktWT3VnMnJIS044bEVzY1JMeXFNTmtGMUh6VGtSVHpVQ3ZtZ3NwQTFwL3I3?= =?utf-8?B?R3hkT0t3WHUybWt6SlZVZWxBWVJjK1NPajlheVdzUHMySDBkdmtMRlI2S0Jj?= =?utf-8?B?b0FWWEFsQVVJREc4c1E5Y0RXQ2E1Um82bTlJUkltaVhjUWJ2Sk5XOWZkcmdp?= =?utf-8?B?bVkyK2c5ZmcxaWFjekIyN1lkS0QzQS9FcVFsdjJ1KzArSGZXWmc4RSsybWhz?= =?utf-8?B?NmVPazJaQUpNd1lOT0JOTVRCa2N3RWx2TnVBbG10SXpKakwvb2dNL2RKL0Nj?= =?utf-8?B?Z2pRUWtWV0tsbWVCRGVxWTZWcU1lTnpVZlE5VkpTRkdCeXFZL3k3U1ptRSt4?= =?utf-8?B?NWVXamFrQk02T0J3YnY1MWhJaWdDRS9uRHI4Z0ppR2hnNndUVzR6d2YrVjNV?= =?utf-8?B?SVlURGFVaGhlRTdDQXVveW5STXRGOHhqZGQyMVU1cExFckVHcEFKdklEQ3p3?= =?utf-8?B?aDRVY1hGRkZVa1ZHWHNDSEVtUU5FNlEvUDY0TlBMZnIzWTZBUzMvTkFYOURz?= =?utf-8?B?L0RnTUw4VnVUd0F4Q3BxWksxQ2RwNlZkcG1rajVaR2FObGgwNlJTYWdOZEdV?= =?utf-8?B?TGNsY2ZyYUU3RjkyaWxZRG5mTmIzSHNRL0NnSXZtNTBRWnk5ZjBkdU03ZmI2?= =?utf-8?B?UzBsUjRpdHZuZFRZbWRqeU1vMkpGWTljVTAxKzZJQ1kxMGtuai9YYURWZlN2?= =?utf-8?B?MUFsaXVaU1lpc2F0RjAzcWd5VEI3ZGduVWZkRzl0NlFRZnM4dlVIMHhkY0lB?= =?utf-8?B?Q1dtckVmMFZVKzhBc3BpR1dIWHlRY0EwY2pIbVhJZHMrMzZUbm00NkgyUDZu?= =?utf-8?B?YXJtclViYm1tdmhUSkdrOGdEUDNZa1JCcXpGdEFoUjNINE16cGUwUnR0OG1u?= =?utf-8?B?anUyMFdrMzgzZ05BVmpZM2l2TDczellhajdPSGJia216S3lCdEUvYjlMTVhV?= =?utf-8?B?Um9vYi9OWkYrcmQ1bDBCbUdVOVNsalNMZnhpQTkycHJCZFlWamJodEcvWFF4?= =?utf-8?B?dUJvNHpoQ1V0T0FSeVVLaHlHTUxDb3dLalJXQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(7416014)(52116014)(366016)(1800799024)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZXNEdG9OV3RjSkF6bDJReWp0c0tyY0dhdzhuTVhDeDgyRkVuUENybUEyVnZC?= =?utf-8?B?NG4zQTVidnRHWGIvYU5oVmlzbnU5bEZIY2p2Mlpud28wd09GZUdWL0dseHAy?= =?utf-8?B?eTJUTktvblh0cW52ZXpjUVA2ZFc3TXBEQmpjM280ZW5SWHkwdm95QVc3MnU4?= =?utf-8?B?bUYvVWVibmxnTHFNWFk3bk5TUitzbEk4d1BsZE5GMG5hQTczOWNwTENiVndL?= =?utf-8?B?c3VRcUltb2lLekNzeVlNQTFmWUxUdkZ3S1d2NU9aMFVZRGNOaUpKNHNFMDhH?= =?utf-8?B?aUNUOHB0OFltZ3dKWUdRaUtVcUt2S05LQUViWnphVDk4NmhDa0pMNFU2UXRp?= =?utf-8?B?Q05QZXBrbTBReE1FRDNLb1NaUUkwVEZWRVVBc3MrcnhmWmYwSXBnekVUYU1o?= =?utf-8?B?a2tlR0I3Y05UUDBpaXIvdnAwblk5M3RiaXhZazBETXM3cVpMK29FeTk1OUpO?= =?utf-8?B?RDQzdkJSTXZKcDVJbklYalk0QzRHblVaa1NtWEl2SjU1cjl4bllPdGRiMGlV?= =?utf-8?B?YjdibWRoVzB4bDJtbGl2V0xyb1g5MDFCOVB5Yk02QmlvWjVtMlZFWHZSMDdY?= =?utf-8?B?eTNTbURlKzk4c01pR3dxeVJGTFVORC9GTCtmeEliVUdMbVEwaDBHSWtrNEJQ?= =?utf-8?B?R1hXODFndFZCWURtRzhjMHBwdXNWK1EwWjhUVk1uejRMU2RJWE9FcFRYb3pw?= =?utf-8?B?cUJHYlNpcXhyTnl2a09qa2dxS3JjQ1ZCaldnQUxXWW1LUnZmTVlDT1ZCam52?= =?utf-8?B?VjVrVnNZUi9WUGthZXRHbWtCZkgrSlRmV1N5akJaQnY4VFExYkFUVmxoTlR1?= =?utf-8?B?OWUxdWpQNm1QM3h5WFlBT0dpeEdoUW5INVZwb1pIcGhrN3llalVrNC8vRFZS?= =?utf-8?B?c29SWFdXOWVSVlZ0a3VWVkRRM1dXZUFvb2Q3NVNtcEdnZWRyekdKbnd3MVo1?= =?utf-8?B?bm5COWxxZDl5Vk9WNFZJblJZbmRXcGZUV3ZlYVo4MGRZL3FqWU9SQzRheHNM?= =?utf-8?B?dVpScmdpQis5Q1lKdkM5WTNXUTU5TTB4M2w4MWpjUG9NY1c5ekhuRWVNL05w?= =?utf-8?B?eS9lZk1mNzZSSXNnenZKTWZORUZ2VU5mVDk4S1l1ZDN1dXRYQUM3TnZZaUtm?= =?utf-8?B?Qi9OU2VqUGlVQUpJQnZMUm85RHZtb1l2NGVSeGJGZSt0RDU2ZCtWOHR3bnRa?= =?utf-8?B?UXRDTXpGZE5mVXFpNmtRT0RmOWhwS3o3UElXTjZUaUc2SlAxWWJXWjM5UlJP?= =?utf-8?B?cUdEdWRJSmF4aVJnMWlIM2dqS0tRTGdqR0k1ZDBYczJYNkxvaThrd21Za3Vu?= =?utf-8?B?UHpqMGxtMnNQZW0rTzBNQWVqZnhSNUhpdCtWYWtUYUhibU5xQzA3a2hjaWpj?= =?utf-8?B?MFluYkROSFc2NFhJLzVleWdESGRsYzU3WmYyKzJrT3JnVHoyU3V0Y3NhOWVI?= =?utf-8?B?a21KYXdSWENqY2JrYk8vVmtmVndFY2JaNGZrQTIyWm1wa08xT2FSMG1pb21m?= =?utf-8?B?S2Q1a1pmNXhMZjNLOUxNVElULyt6cVFJWVM4RGpCY1JEVExnOUcwTjViYUx6?= =?utf-8?B?OWxQOCsvWEd6UnBVY0xiaWNqVTFMdGVTc1RNR1RScm9Xc1VVSTd4MHFLTU8w?= =?utf-8?B?Y2RlWkJKQlZJcFpMbkNDS3N2Q0JFQjZ5Z0Z2OVFFY2tzV2ZtV2lHSXh3N283?= =?utf-8?B?VDNBZG5UQy8zN3NicDVFd1JuMmJmN0NMd0tWQmorRTB5YzVrem85SzVyUmkz?= =?utf-8?B?TVRtUytDTDhEaGYvRjlpVitLMnZZSVdkTTN3Q2Fqck1UWE15SEluMUw3YXlY?= =?utf-8?B?UTZyalpxVzBDRDRlK3R1UTBNSWhZdHE3d2p2bFA1SlpFbmV4TlhIZnU1SzBH?= =?utf-8?B?cUdUelFYSUl2LzAwNE1zYTJqanVoSnlORHJWL2NPcEZNSmI3NUZLSmI1Wjhs?= =?utf-8?B?VXpGYUxKN003WTJTNzBXNnRYR2JFTGtjeHF6aG1qV3I2SkJEM3YrM0lBN205?= =?utf-8?B?UnllUTM3ZzhxTHZ1QW1rMnEzUVZRWGtXanRlUE9WYlV5RTJteDFEb1UxckpX?= =?utf-8?B?Tk4wRGlNeklLS21vS2RqLzJOWnNPV2pnYUlyVUxBY2pXamFtQ0dmcXFqSVBu?= =?utf-8?B?S3p0a3NJcGRGS2JQcktacFdQdHVPNUR2a0EybFZSYWlOaStZS0NSVmp4dTI0?= =?utf-8?B?ajZkMnFRWjJkNDBmSDhTKzdOQUxSOXRFUHh4cndKMFFrRmxDYUU2bG5QM1JH?= =?utf-8?B?S0dZWkNMRjZlcGx4NEZMWTFSMHcwdFMzRnd5UlZXQ0Z2RHg1V1BIdC9ndUJl?= =?utf-8?B?d20xZ2h6ZndaZHVGR0tsYTBBZTkzU0dyQitsS1FZalIxNXVLTEtvdz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: febc1897-2aeb-4354-90bd-08de4f93cbfd X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:28:53.7440 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +cC109r5M6u3bHfofaTUiJJ8kMQng2HVGoZM4yRAC15TE+h1BSSM163qHJHdRUlzGngm+eEWVOv4z8SJr4RSkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8261 The DONE_INT_MASK and ABORT_INT_MASK registers are shared by all DMA channels, and modifying them requires a read-modify-write sequence. Because this operation is not atomic, concurrent calls to dw_edma_v0_core_start() can introduce race conditions if two channels update these registers simultaneously. Add a spinlock to serialize access to these registers and prevent race conditions. Signed-off-by: Frank Li --- vc.lock protect should be another problem. This one just fix register access for difference DMA channel. Other improve defer to dynamtic append descriptor works later. --- drivers/dma/dw-edma/dw-edma-v0-core.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index b75fdaffad9a4ea6cd8d15e8f43bea550848b46c..2850a9df80f54d00789144415ed= 2dfe31dea3965 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -364,6 +364,7 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) { struct dw_edma_chan *chan =3D chunk->chan; struct dw_edma *dw =3D chan->dw; + unsigned long flags; u32 tmp; =20 dw_edma_v0_core_write_chunk(chunk); @@ -408,6 +409,8 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) } } /* Interrupt unmask - done, abort */ + raw_spin_lock_irqsave(&dw->lock, flags); + tmp =3D GET_RW_32(dw, chan->dir, int_mask); tmp &=3D ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); tmp &=3D ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); @@ -416,6 +419,9 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) tmp =3D GET_RW_32(dw, chan->dir, linked_list_err_en); tmp |=3D FIELD_PREP(EDMA_V0_LINKED_LIST_ERR_MASK, BIT(chan->id)); SET_RW_32(dw, chan->dir, linked_list_err_en, tmp); + + raw_spin_unlock_irqrestore(&dw->lock, flags); + /* Channel control */ SET_CH_32(dw, chan->dir, chan->id, ch_control1, (DW_EDMA_V0_CCS | DW_EDMA_V0_LLE)); --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013063.outbound.protection.outlook.com [52.101.83.63]) (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 858F8363C45; Fri, 9 Jan 2026 15:29:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972544; cv=fail; b=quicJYQ5sQYenK2oiszcgNem4FpRXK+/F3M3e0NhEXi8/xMPj1okFQ/8/5IZEjnnjW2u4lkKGJUVh8qGxPs3kTsaPi+a6viqKz5ZlOoidwdBjSy486oYx7j/iPIIgJ86gt3mtztf5U2+/T08qJqWW8GgaMBmTAY4c6S9ojv2C8w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972544; c=relaxed/simple; bh=Ee8HiqhZVyhqwGOSxl3X+NNbfup5c8f2QFFTSVFP+54=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=RJDFvvVmf+jOO6k7cPTzrF1Wj8/ZTHY72z/BA4rh0qupMRX1LQTexXY5Jc8LIMHmHxE9Mc8wPYRx9rxPjofPm+nDybQ+CRb0OVuqqWHeotlowZl638j56wUHFeJHXbb7h+6pJQGrb4lqw9jZh/GVU/zhUrO1/HrvsEs/COfFouQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=c01nG1m2; arc=fail smtp.client-ip=52.101.83.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="c01nG1m2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gLssE+uYq5kqHkwFPgsUCGF8O5aqCrxUxOZSazzlLyF7eEWbje+n/FbhjgJfGhU+q/TNYEJnvxKrbT4NiALmDjr9bhhH2T6tzqzOVr+xvO7Cv/+Bop639nKk4it0trBVKhygxWI6CIMwyGnsALQ2bH3nMARqv6XFPRbKUaEaOjVCNX3gcF7QR2cp1qax3ac6YAAGmUW/yY2j5SCjBKjMBlzNRVnewTt1nnCVgpiPAhypwdssvnlQC+5XUfWTKPuSnbIyBlIU3GRyZjWSxWVJyc4fygC3sf+dVqyI4nRTXaWEnxASK9iNNX+RUk/gEBT0k/1DqjyGGcIOCaZ0KfjaDA== 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=dQA20LNG7+et9xWe1UisxhvgvcTKC8YogQGNwTftR70=; b=Tb3QhlfiOBipUE94cPFwe3XdT11DXE9Mrz8TlUBq7NtFvfc9NzQzGzVngFCgwjlJzPAxi/+L+RVuGQ5qic/EmXsi1//A4HVVzJXmNY/XP3v1jFl9MfF7aP7Yj2qQvQQ7V7OB8jR2nPoWLJdNeZx7H5K8eSf/IpUbtGeE4yfg0+5eXmkmwp9g6F9TO3JR0Xf8ga/XsjEItgFeBlW4C5hkTCfSccdthI8rhkwEvMA/lcN7YJLgQ72Md5rNJn+A9vvd0ThMIVHM8tvejiAYt3nYzVdowoEpGqBwqkEZ0woZMtFsPJUCiaFDMODthoUgle9tUv83A4Uml49owCn6i+1GVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dQA20LNG7+et9xWe1UisxhvgvcTKC8YogQGNwTftR70=; b=c01nG1m2aZWeNoI+vUGE53JbyNACf4014KM1/ybFWjmEW0tynrYJrwVHaQQ8Eqi6XnGzUNyg0LOQ7VKNuDF1uZUymZWHl9qCWNDbM4fy1U4REfGktJsm1r4XF/MW4lHAKszDhvhsxr3X411bkvTyPxe4UMizGTBD/x7MgNsJRWhSL7tlSAIxFZeG7tHU0GHKmlmNBBtrraamIoasPx4Kthmye62jOE1DFQzv4aH5UDDYKUmpx5Iq5n+ccV1VY/9dfgfsEz2YUH8wcpAKsj9Gi+AUYw7kf0HrSWsEzdFvnZlMRiN24gh2opw+7MRYmWSElgn7ig1hkXfIHBQ6N2JJrQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:28:59 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:28:58 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:22 -0500 Subject: [PATCH v2 02/11] dmaengine: dw-edma: Move control field update of DMA link to the last step Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-2-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=3587; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Ee8HiqhZVyhqwGOSxl3X+NNbfup5c8f2QFFTSVFP+54=; b=+/VfuBRPihJbNiL5i71lNUfTIdc3UcXtKb5WCUAviwxtolbwKxe8jn2tCTjA0SH2pM2SL3JXf p2Uo7EY1d5XCfhV4OoO9nuiBgbZU6V0wjl4zu3ETljnlUIS90tJ4qrU X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: ee7dcc18-663a-4322-bb44-08de4f93cf0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S1VlQ0hxZkpOdDJWY1gwdFdkN2h6SGgvbTlzMXRNVTViTWlGTkJ0Z0gwM2FV?= =?utf-8?B?S3VINFlLc0JndkF3RFhsRjQ1MlJSWWk5dUVteWV2QTBYaXc1TjRpa2ZTTzZQ?= =?utf-8?B?SWtrcXlUVC9TZCtQSEkvblUxOHVDeEJrajM5V1VjMVY0MFNkR2lwQUppV3Ux?= =?utf-8?B?dkdTWkFGazRSL1U2YmdMcml0UVViUDdPVmZMQmc3Z1dtQkp4ckRtbStsV0w0?= =?utf-8?B?a3NyZFhEZVNKam0vU0puUHdaV05CNFpGWjFqU2M4aDZmckdmcVZQR2lVT05k?= =?utf-8?B?N08zV25neDBQVWJ6a0FVWXlOUmY1VjdKRXVqeFZlVE0yZXFtTkNkN2NJYVRE?= =?utf-8?B?eGhwOE9hTVdSdDR3TW9OYW1WUjE4VW1tbWN5d1ppeUR2MTA0LzBGTFZ2anBR?= =?utf-8?B?RlN6cDFldXAxYk93UTI1VE1LdlZJdTBtY2tGT3cyczBmWCs2T1ZvZWdNd1M1?= =?utf-8?B?NWpBaVcyUmxuTWlwUUVncUYvYS9LbjZ6S2FYRThHdGVNb2crYzU1U05UTXFO?= =?utf-8?B?OER3cldzM055aEZVQjh2RDNRV1dBQ2J1L3JpY2FtcFE5Y3Z2eUZucmowd1FX?= =?utf-8?B?UjNmeXVmZmRka20vYW12S2c3TmRXakQzUFpIWXlBeXRNSVpmK3ZxQytNeWhN?= =?utf-8?B?aitCcVhicnBQNU5WMC82M1c0T2ZwSnZzQTFROXF0NkNQNEdhM1ZOdis2MnhJ?= =?utf-8?B?QTcyVEd6SzBOVEdsSXVOTnpPaUl4QWpDZkJTaUt0ZUJ0bkhyVk9lMndxZXJw?= =?utf-8?B?R05EWkFMS3Z5ejZlTlNCMEQwSkM3N09ZZm9pTHlTU3l2Y05OUS9uanQ5dzZh?= =?utf-8?B?TGdyU2FDUDZiOGJ1NnlwVkw5clV5TGF6bGFjNTV4M2JlY0RIU0RpRlFweFh2?= =?utf-8?B?Nm9BVGkxaVNGUGQxNmltN0w1Wi9Lazk1RlNmRzJjL1ZsaGgzTjgrN21ETCs2?= =?utf-8?B?SmhsV3lMK1drRVdvSlNWS2lXSFVob2xaZW1INk9zNkZRQXZ3b2kwU0RSVnVU?= =?utf-8?B?cjRhVHlWcTRjR2lHR2Q1dTJSTkw3ZGlyNUJvaG01RjRaTXdqV2VucldLdDN4?= =?utf-8?B?ajdSOVVDT0dPNlR3d2w1YTVpY3NDcmdWVnhKRHBKQTBZUmZzK0p0RjB4R0FV?= =?utf-8?B?ZjhaRXh3MzlFMU1xdlltOVhXOFpMYmJ1VCtFVUQrNDlnOFFnT1MvY043U055?= =?utf-8?B?WWZPWHM0YWdULy93dHpsbEg1RE9FZW5hVVVwQ1VaK2F4bDc1RitQSEkwNmlC?= =?utf-8?B?SXVoQjE3QklGQXNFRjFiS2g1UHovN1J4VG9yK00rcjNtdHhNWVJaZFZSRVYz?= =?utf-8?B?Mldick55MDZucUpRSThIeUpTblZiSmF5b1hyMjYxd1pRZmZnS0xIUEY4OWY3?= =?utf-8?B?OVZzNXloRzZQUTk3NC9GQUF3TVJ6eXlWaVFhSzlSL3hvalUvcXZjaW5UTmFh?= =?utf-8?B?T2VxNXJaTjZGZ3piVTRoT0V1cGtPalBFZkYva09TM2Exb0x2M2lGUGlxS1RM?= =?utf-8?B?TnhqSFhwc2RPTjQxSFpJeEhBWDlEVy9naDJ5eWxjalNOVjB6MDdVU1hvRVJi?= =?utf-8?B?a1pmNlFaNHQ1YnJZcldmT1IwYU16VDJLYmF5clpocU81NWgrN0dQNzJlSUZP?= =?utf-8?B?eE54OUxHWTlLZ09NdkRZc0hNV1FYaWVXOXFRdWZEQmV4UGZxOWRNM3BOT2kw?= =?utf-8?B?dXdFNjdwd1pwN0hPenIycVpURnZTS2tSbzlZWnJpaFhIakh5L0I4RFowbE1i?= =?utf-8?B?Mjc0QXU4ck9pNlRPcGxGQXQwLzhuYUxmak1IVVFzWm5yTkVYWGc1WDc2dS9D?= =?utf-8?B?blR1OXlwbmdZWFVyWTc1d1NrVzNHLzJGR0M3b0p6b1ZVYmh3TzlVL09iZGpX?= =?utf-8?B?VllKd1R2ZGVQZnVSV080Z0hQTzlleU9TNzZyanBmUDBuVmg5N2tyNEZqb2NG?= =?utf-8?B?U2tRQXhZL0hGNVBiRnltVHZSZE5DSzE1ZzZSYnhkNjBjdFhPK3lBNnBDN3hG?= =?utf-8?B?czlYWXNhL1RFRUg2N0Z3cGsvR1VEblIwOUw3MUgxNW51d2dWdElzajFEUnc2?= =?utf-8?B?RTc5T293WmovNkhwV1NzcXlQSXhrcEwvZFhqQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aUdqakV4bzAxRks4djFkVytGdFRGQ1Bac3RoTmMxUERrNm5MT0w3VTV6VFNP?= =?utf-8?B?QnpOTGVybU1HUWJIWldLQkR3MnZHOHhDVTkwcGlWbm0yWUVNUkN0N2Q0NUhJ?= =?utf-8?B?aVJHM3V5VGg3blI0K253cmxuWmcxL2VmSGgyTlhrUjMvcm9YNFp1dTNvUVJ4?= =?utf-8?B?SHUwbE1uUFBqbEFQQ3BqZDExQm1SenJ2S1VBNVRQMGpKK2wvRmpIRWZlTVE4?= =?utf-8?B?dlpWdC9BUWVIUThrN3IvQ1A5Q216MHM4Y2RnVGFMTDFlZTR5alZzRklrK3FM?= =?utf-8?B?NElLWVJ1QWlSSGdmcWl2anRlOVgvMWFrVVQ0QUFlVkZDTFNHNEtNd1d3aklU?= =?utf-8?B?RGdsWXlmR2pVTUpKeWd4V1E5eTBBb1plS0hlT1h3STVNYUtkUGc1RWxWa3Zr?= =?utf-8?B?QmlQcVdDTWh5Vk1HNVFTSXBHTG9zWUZoUGh3RDFWeE9mZVNZZjZxelB3c21V?= =?utf-8?B?Wm1sMkZ0SUM5aFdibDc4cnk2bWFCMVZXbnpMZnIwL29QUzYwdXFOTGlac253?= =?utf-8?B?UDJETjcvL0pHV3cyM3M1YTB2SE1mTDhkcFA4c0JRMGphYm40Nk1IUzNwLzhz?= =?utf-8?B?Wk4rdEs1Tmk5Rnc1Y1kzdVV5emJoL0JQMTA4K3hWenFGSnBHcnBua2lYOGQz?= =?utf-8?B?NytWTjBwVEdNN0RVcE1nSWorWkQvNFVudEhVTjIyM0kxZ25iczh5a1JDb1Z1?= =?utf-8?B?cU8xK2hJb25XTGl4YS80ZjhhYmNTRW1ZLzFtTVVEeGRmVEpkdGdNeGg1bjZ6?= =?utf-8?B?Z2tGTGNtUGRoWUxndFNMMEhtMlBadXNDSVBocWpERHVUTGNia2dwSHVYRFow?= =?utf-8?B?MnFNVG1WV1RCakFFc05TcUwrWFMyZzJHdDFSQlllSThDUmh5QjF0VVQ2TUlP?= =?utf-8?B?RzRYWi9SSDJMODV3MFErL1dLUFQrMTZ5TVNGcVNoTTl1dGdzakNaemZxTlAv?= =?utf-8?B?NVduaVFNNDFzUDM0Qll0S1RTamUybjhNWjFhUjUxWWZ6R2lBbWxaRnBsYWV3?= =?utf-8?B?ODU4akZIQ0NFNHhURlQycnpVZWtSL1NBMEM2VEE5WDIvNUY4eXpDTWJZUHhj?= =?utf-8?B?TjlnV0hWa0p3MWxBdnF3U3VTNXY5a1FYUDd5WmJBOEwvMTRTNytqNzJ0bFVj?= =?utf-8?B?bktFMDlkNW4yNUN4T1Z3NTFaUk5MV3BjdmIyeXBpaUc5VXhmaS9hUkZhRWw0?= =?utf-8?B?NGFENU9neHZkYXNNdWk3U2tZNjBZdUdnaEhFdC9UOGlSelR0bGlnSlc5ZENl?= =?utf-8?B?dTVmVHoydXRlTWFFK1YxOXBUOWx3ZUpBU0ZuTWl6ZnFjZVR3dHZ0amtYVTRJ?= =?utf-8?B?OWtkTWtmVE9VcHhMTnZzaW9QSzlBSG5OQzRnNmh1djlFL3FGNFFESGxQTjBN?= =?utf-8?B?UGttU2FhbjhBSGtVWlFJYUVzeVhRYWxNN3hOYlYyQ1ZGaEt0UDRCbWFBWHpM?= =?utf-8?B?akUrR1lxM2hLSFIwOXBqTzNUSDlQcUoxYU9XUFhsMzlRM204OHBBMlltaHM2?= =?utf-8?B?bDdkVHQ1MFdnYkY3RVBCRjh6QklhbFBhcitPSjlTdmpZTGJ1NjZGby9xU24w?= =?utf-8?B?MVNXRU84N0I1STNYT0VNaEQrV3VRRUI4emE1LzFOb1hhVmVNalRiZXRaMU1H?= =?utf-8?B?QWRDOThxRVJtTys3dFVGcERPWG92RlVlTElWdFJGYU5ub1JGVGxBdjF0ME9T?= =?utf-8?B?ZGZ6eHoxZ3V3cTBncWNhdUVOeFVZTmdGamh2Zk0wcnl5MHFxblpOZzg2ZkJq?= =?utf-8?B?L1M4dG5HaGx1RTNnbUxKUWpKWlZmd2d5UmVDQWlwcloxbjRaRk8vNEY0dlY0?= =?utf-8?B?bDVUREV6QXJnWEg5cU0zM01oa0duR0RqTk41cmpQRFZXZU9MSWtTSk0wckl5?= =?utf-8?B?TTNlbzRML0g1QWh3ck1ic3BTYTd0Ump3YU9mbjJpc3Q1cGRJQS9hbmVZQzBv?= =?utf-8?B?TzRBUWdmOVBMUjV3M3VmVFpJR3BRMWJzckZjbmtLSEZsb2pTYkl3azl6OGNs?= =?utf-8?B?b25sSURQR1pCMk1pVEZKTUxnVExYZ2JzMVpDQUhub0E0Skc0eXdRQ2lCMVJs?= =?utf-8?B?cHhCMHpwUmZSQVQ4YkdydkNmdk5QQVlObzJ1dVFaNWdCTE0xV2J4cFh2SWtE?= =?utf-8?B?WlJrdmRsYW1vSnpoNHB5UTArV3ROTGxoTWREVXlNV2dqSmg3V1JEM0NhWFRv?= =?utf-8?B?Y0t4Q3pTN3RQOW85SVdKOUZOcmc5R2w1S3I4TzlobWJzbUYvTG1rcWlkZ1Fp?= =?utf-8?B?ZjNOdHpQelUvZXJZamtVUDBaODdEcVFBcTZxNFRPaVR6a1RIZllyM042VGRH?= =?utf-8?B?MnIveVNvMTdQNVZGNzFxK0FoYndrUUJMTStxVzFSOWNIRWhSR2ludz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee7dcc18-663a-4322-bb44-08de4f93cf0b X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:28:58.8212 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Vcx7Hv0NCemT1CpBu1W35yTedm/2wqeR5NGktv77PZQb32P0tfmd/4HxGDrHUeRFPjG5f/+h2JgCxbzCg90pxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 The control field in a DMA link list entry must be updated as the final step because it includes the CB bit, which indicates whether the entry is ready. Add dma_wmb() to ensure the correct memory write ordering. Currently the driver does not update DMA link entries while the DMA is running, so no visible failure occurs. However, fixing the ordering now prepares the driver for supporting link entry updates during DMA operation. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-v0-core.c | 10 ++++++---- drivers/dma/dw-edma/dw-hdma-v0-core.c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 2850a9df80f54d00789144415ed2dfe31dea3965..1b0add95ed655d8d16d381c8294= acb252b7bcd2d 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -284,17 +284,18 @@ static void dw_edma_v0_write_ll_data(struct dw_edma_c= hunk *chunk, int i, if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_edma_v0_lli *lli =3D chunk->ll_region.vaddr.mem + ofs; =20 - lli->control =3D control; lli->transfer_size =3D size; lli->sar.reg =3D sar; lli->dar.reg =3D dar; + dma_wmb(); + lli->control =3D control; } else { struct dw_edma_v0_lli __iomem *lli =3D chunk->ll_region.vaddr.io + ofs; =20 - writel(control, &lli->control); writel(size, &lli->transfer_size); writeq(sar, &lli->sar.reg); writeq(dar, &lli->dar.reg); + writel(control, &lli->control); } } =20 @@ -306,13 +307,14 @@ static void dw_edma_v0_write_ll_link(struct dw_edma_c= hunk *chunk, if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_edma_v0_llp *llp =3D chunk->ll_region.vaddr.mem + ofs; =20 - llp->control =3D control; llp->llp.reg =3D pointer; + dma_wmb(); + llp->control =3D control; } else { struct dw_edma_v0_llp __iomem *llp =3D chunk->ll_region.vaddr.io + ofs; =20 - writel(control, &llp->control); writeq(pointer, &llp->llp.reg); + writel(control, &llp->control); } } =20 diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index e3f8db4fe909a1776bb5899e0b4c9c7a9d178c05..f1fc1060d3f77e3b12dea48efa7= 2c5b3a0a58c8b 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -160,17 +160,18 @@ static void dw_hdma_v0_write_ll_data(struct dw_edma_c= hunk *chunk, int i, if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_hdma_v0_lli *lli =3D chunk->ll_region.vaddr.mem + ofs; =20 - lli->control =3D control; lli->transfer_size =3D size; lli->sar.reg =3D sar; lli->dar.reg =3D dar; + dma_wmb(); + lli->control =3D control; } else { struct dw_hdma_v0_lli __iomem *lli =3D chunk->ll_region.vaddr.io + ofs; =20 - writel(control, &lli->control); writel(size, &lli->transfer_size); writeq(sar, &lli->sar.reg); writeq(dar, &lli->dar.reg); + writel(control, &lli->control); } } =20 @@ -182,13 +183,14 @@ static void dw_hdma_v0_write_ll_link(struct dw_edma_c= hunk *chunk, if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_hdma_v0_llp *llp =3D chunk->ll_region.vaddr.mem + ofs; =20 - llp->control =3D control; llp->llp.reg =3D pointer; + dma_wmb(); + llp->control =3D control; } else { struct dw_hdma_v0_llp __iomem *llp =3D chunk->ll_region.vaddr.io + ofs; =20 - writel(control, &llp->control); writeq(pointer, &llp->llp.reg); + writel(control, &llp->control); } } =20 --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012049.outbound.protection.outlook.com [52.101.66.49]) (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 33783363C5A; Fri, 9 Jan 2026 15:29:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972549; cv=fail; b=c6mbEtBC7S6DUVBBxa43naLvRqgqsImoNlRUJdiVcoKixA2TtZ1CnH85rN/dabVdD6hm7Ex+MP1Akrc2o60vCsARDxgLMBSUQ1/a3YiKWubiV3gZdlQ0f/WEELcjq0/ARG4/QN8ek6Y+KoPHeifEYEaGbqgQfgXGD43xJSsGZ+s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972549; c=relaxed/simple; bh=4IOZc5bn/cXuVYiNt9uCCiSLEc7b5zqzANKyR82eX7A=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=pQDqbgAGpD5Jao93ye3SYZoCoLF7SQ6D5gDDt2w/oS9yx8MQ6EmmeNEcC9tJo0s9VQXIjMem1rPaEn1BnhoyVmhdwtnsQUNrtEbThzwqD16DNAatF7VWLWN5ocHl9I+Qlx1DEyh44dpyHGN3HHe1Eh6kOYuLGv8YpbKG++5nB+4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=fqcL19AZ; arc=fail smtp.client-ip=52.101.66.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="fqcL19AZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MnuNUWW/hS96JcdwmmB/ZiVZkBUF7a2b3X83q3vOT+GKyAw3smmG7/yc0LJc9/R3rAoN1mS0SP6qHmqxCn1tyOGG4S5SscKlsjW536nI1YDS0v+MHShcJ++Ef0xtpmw7Sqkzdk8hFCEnfBcCANQl8+g8PZ4R8ZrhN7xqn+pjdUV8jKHli6PQTqOcc0nJpMHvRHQZAW6bvx+RSzv6WsCGQdls/cz808hTVfy9lytgdZOW3Pvk08WASuVFFrzRsa28DqpQLHkTfu4GGk4a0FymbftBo7iRGGlklE18BcV2azY+m+9OJb5CJ9RNRVNxpWq8qYhrgI6OOf7iGcwyenZIjw== 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=cMM6RnKeP9dwko9pP4440Xhy39FCuGEWL4X4if0SsO4=; b=xTL5g4bYV8t7P7we6EGKIQxNm2QbGmhuXUSEod9pcoAVvnevG/XxxObHfYhwRRIjb9lKBsZn7fJo0U65+sJgZlZcq0/2GQinypui8LDYNZySxLJqGB9e2Fk9TMvO6P701B/D9cioc1/qonxqTRdlq0uCIoB6p3Go1RmLZdQtesSuAzBv8H971NK8a6D1pg9Oht9FZucGgLapA2J4SUB3ScbFGnt4X1R/DAcX0hx8ZGECMZC1f0hal835be/bul/kK/MybdEumsNSUY9NVoPssM7wtfLSDZpUrovvuaK1WXA4woVDDpr3BfXEbWk9G1la+bh6n1RsJ15zDP314HVihg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cMM6RnKeP9dwko9pP4440Xhy39FCuGEWL4X4if0SsO4=; b=fqcL19AZ4c05lwyMEy3cHvs1I0QTqEQdp2FvLDc2KFBRjaw+0sgeC0w3cQwDFq5ZYqcEQT9PMCwdg8XGD319JmlEXfVwdL7AWntldILa4kCuKLGELA7Ti5tsE+YBx8o1eBRSJBtBMUxEf9KobrbgbOPuskmXHy+5jEUY5B89QGpNJAf0K9bXAkkILui06jCB/JyxCy9TTLv5qEcuILfPJKvvrxI5MKDSGyDE62qOdAZdTfFPxFSMnMwYS5459Yf/zzr+JXWACTG2RYavtZ+cQp7LH8U3LNXbVXCJWJLgvMxBUgfTFWrY+id3fTYj6gCMKlLn6Zd1ONkhM7nQPFQi8A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:04 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:04 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:23 -0500 Subject: [PATCH v2 03/11] dmaengine: dw-edma: Add xfer_sz field to struct dw_edma_chunk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-3-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=1785; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=4IOZc5bn/cXuVYiNt9uCCiSLEc7b5zqzANKyR82eX7A=; b=lpnFXM/MxaBT7VXaMdQ885KN+0qKZeVl2KdbJE1bfglHCM+tzWbxbN31IBuXhcI6U8DXzrAov Blw4aDCXMA8DZDw3FT0CQ+X2p5HsO1drd0cCn6/3y26gEWvrAbVK0l8 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f781a95-44bb-4064-7cba-08de4f93d218 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dWNBZ3lYL0tLRExRNkV6QUgwdUF3RCtiNmNmdG1MU1VpVjNUeU83QXBKNDlL?= =?utf-8?B?eXVMNFBTdVVnWlRVTTRoczJQZ3I3K3FyQnA5QzNTNU5EN1l2Ui9IbkppdkR5?= =?utf-8?B?bFRaV0lhRmZsNDJtTFRIWk5mNDVHd1ZKMXREK1hjdit3bFBTTityY0dlVkhr?= =?utf-8?B?VCtGRk1ua0xIWjhYOUNGME5FV1FZLzBqRHZBbVYzWkZGTmtMY3pMVEFLNWdR?= =?utf-8?B?R2RSaEROR3M1RTN2QkxRa0lGZUY3MjJINW1jSGVoVWFYUE1lUCtOZC9sVk1w?= =?utf-8?B?UjB5MUg4QnhIM0M1a09CVVp2WkRPdTVlRjUvbzMrbC9SQ1RiZWhHRkZRVnJY?= =?utf-8?B?RGR3YlVHa3lwRlVWckg1RTBReTVIMVJjRnNaR1JFK1hUVlJCcW90TW5QUGg3?= =?utf-8?B?eU1RbVV2bjV2cUJoT08xMDlTelRVNEZHTEhHZ3RBSnV2WnJoQUlRY1ZBMzJn?= =?utf-8?B?Y2U3WGRNT1dmanprS1JoZ3F0ZG1yTkdsQ1VCVmVkVUFjeFg1T2FsaENlTFVa?= =?utf-8?B?NEpQOWdCNm5tcW8vVVNzZFgxV3VDSDFjdWM5aS83VUVNSjF0NHhUTVpQZ0lm?= =?utf-8?B?VjZZMXJMMTMxZjI0eGJxQ2JvOVBtUG9wYjRINHZWWFU3aWRaRkdGdWJPS0Rj?= =?utf-8?B?QjdtQ2RoNVJKQXNkczhSUU1vZmZkVlR4K0lBMGMxUUtYZ2kvTExVenJJbTNQ?= =?utf-8?B?WHdKQnVUL2szbmZobitBZFFpZklZd2gzT1lVdHhPcXhoL1RkeHMyS3V1SEQ0?= =?utf-8?B?WEtMc3RQdHUzazMvUExBTE5sZWtFNE1waUZrcVM1aW5USnpOR2lkS2lCVTY4?= =?utf-8?B?SHlIK29KYnNWV1cveTBLKzNiem5IVldEYTJlY1I3anptRXB6ejNUcjhjQlUx?= =?utf-8?B?azlUNEFINHQzSzRpVlBxZ2lYN3prS2QrNURld1RoK0txdTluaEVVeVc1ak9a?= =?utf-8?B?azZEQmdTZEdHZkRub1Q2blVVcTVQQ3RHRHZpRlVaU0I0KzUrVFhWbUhsWUov?= =?utf-8?B?eUVnZUtyMDZxRUxxWFBvQzZSQ0dyUEJOVytOUW96eThNajR5b08wcjVta3pv?= =?utf-8?B?UlhUcjV5V3NqRERJV0xDamJJbTI5eGFFZzR6eFpaQVBYS0hGZ3lqUGI1Y3d0?= =?utf-8?B?WU1RNFM5em14SW1JalR0a2ZIZDhCYlRIcnVqUlBqTEozL1Y3WVBvaEpGc2VY?= =?utf-8?B?dGFCVXBGQkx4MlhWYnVyQ0lEbTdWeXlSa1lnSHVMUHJnbVBpWGJla0Q0NDFB?= =?utf-8?B?L1BkVjd2blhMYzZDOEZUVFpaaUMwZU00VHNkYmR3U3YxT1lzOHcwZmlWMnMv?= =?utf-8?B?TWhNRjhORlkxaUh1RUdxNEJxb0daWkxEeFA0bzdVV0NoeUFjbFVQbzhLeUlo?= =?utf-8?B?ZEFjR2x5UkxPYVZYd3VVMk13UW04K0U5dnZiTUxkS2x0VmpvRTR0ZlBuSHdp?= =?utf-8?B?SDdCbmJLdHM1OE5XQXF2OTg1QWNZSzBZUmFldU9PclNCb3hLbzNrdFMrL2Jl?= =?utf-8?B?cjFLNE1TRE9vZWJVQVBMSlJhMEtBdytJaTdiRmw3UXNkUjZFb24wTHc1V1hT?= =?utf-8?B?Yk5scGo3Z0lRQ25YTVU0RnNuTGpBZ0FtNjJyVVFjVStJR21GOGdGaXVjZ0NV?= =?utf-8?B?YlY3ak1aK245eXFId2tpaWtaWURzTWc0aVVaaFU0VlNKdExRd1k2Rnl1QXla?= =?utf-8?B?ZXJNeGxvWmdlQU8zcDlBbWFBTlZDRGJlc1hNQ1RMTnFZdmRkQ2VQRHdzU3pT?= =?utf-8?B?Z1Y0UktQVjdRUldIbmhVWkgxS3FrUlVFNDRwQzdieStSbVRRR2lVcGo2UEUz?= =?utf-8?B?WXlPR016dng0c0JMeUFzQ3k3TmMra0cwVThmd1NybE9LMC9hRG1VNEt5b3Fa?= =?utf-8?B?eDhJbkllNWNTR2RFazVyc2liU3RvYnQ3M0tSbUtvRGU2T3l2WHhRbDZCdWd6?= =?utf-8?B?M0N2MUxuTmpKaHJnUU0xVVhoU2UvMWY0elg3UGdQbEU3K1VXRDhnb1h2OHdG?= =?utf-8?B?UHl6VU5JTzREQjg2T011bkkyT3ZDbmRyUVNZakJGbTNNYnNOR1lRQWFFRTB1?= =?utf-8?B?ck1mbTR6dzA5N1FZcjBpLzZmNVNpRmpIMkZvdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aVpraHBZNEJKRmJWU2tob216aWkvbnZnVDdRV0NWR2NSdXd1MlhwU0ZsMGJT?= =?utf-8?B?MGw4UksvYUQwendpMlJQVXBoS1BvdTlVOHorY3ZVOFBETlVXWllLRDdRWlov?= =?utf-8?B?OTZUK1VWQldiS3NHTVdHLytTQkZaVlA1Vk1pdU90ZHlHZHJWaHRkcGdYV09t?= =?utf-8?B?dE95OGZFa2NDaVhsV1ZkMDZxTkY5MncxZ1VpUFJvWWdMNGF2MWlOWTVPSXJy?= =?utf-8?B?RHBHekZYblZ2M3RnbDJSQ0l5ZGVCMHMxVmR1SUZKOUNhQy9NdFJESENBSTRB?= =?utf-8?B?bk15K1doZUQvak15TjJDbURJMFJkMnh5RUNvTkdSR2FXNS9qeWJtQndvblZx?= =?utf-8?B?TXIxWWYxZVd4UUE0aTdlSkVsR1o0dExMbkJFYzB2bGpWb3BGN2NjU25NTmhG?= =?utf-8?B?bitmTE93TFNuNlE4NTI4ZE9TUjEyaHdQZ01oZXJOZGxzSGViWUpMZzQreWQy?= =?utf-8?B?S2N3cG1nM3RuZTBlbjlWSEVhZkxVd2JGUmNDdldlcWJoSUpET0VoZ2YrekZk?= =?utf-8?B?VHp0cFI5UjJpL3F0eU5QSEYzREV2ZzR2dGFuYnZyUGNPcU9ZZzBxMHMrZnFt?= =?utf-8?B?UHE5SW13S1pzNUVhU2sxSnV1eGhFRWpVRDNsNGhmZDhUVm9yOERDUW4yRldF?= =?utf-8?B?ZDh5WVNjdm5FVW1aTnVtNmhmSHpiZHI1d3F2NWhOcVc2Y3JxNHA3Nis3TmVp?= =?utf-8?B?NXpBTHVMUTRKS3FVNDJEcUNzN25wRVhvMTgzeDJOTXhWWGdsSkQ3OXpKRWNj?= =?utf-8?B?cWNLSnVrTkN0SlkxNjF2V05WdXA5Wk1qV3lTclowRStkVHlOdFlicFI1S1NP?= =?utf-8?B?cklkc0RJdUZIRGRRVlBmNTg1ZG4weHJkMTBqYWpxdU5CYVFLcE1weWo1R2I5?= =?utf-8?B?emxrQitmS29NWE5OQjMvWHA2L0xDZjYvbTl3VEN6WVg1aVdlaVRWVHdFZU9E?= =?utf-8?B?eHU1V3lGRC9waFN1SG9DR0EzN0U1UXMwLzVuVUJCczQreEdLYjhla3Y5WHhw?= =?utf-8?B?YTF1ODIxYm1oTTFidWx2c3BCeGpPNDF1d0plM0pOLytaVDhMY0VKdFFXS3hh?= =?utf-8?B?bkxkcGhxMjE2YzZWcFU0MnppS2owenJaSWwwZ1NFcmFZcW9HV095czVpU1hq?= =?utf-8?B?Qkh1NUJ1TTdwbkI1enp5bitJOXg0d2E5dWhMVjRCME5NN2hIS0xITUYwcTZ1?= =?utf-8?B?bGNodWpFTnN3My9lancyRHp6MEdMWk84bFFwRm9MaUdoUDBldHAzQUtnSW9I?= =?utf-8?B?ay9JQnZPYXNaajdVcFBOM09rMjF3d3QvQnAwSGY2V3BEQTJoQlZ0MXg4eHRJ?= =?utf-8?B?NVFiYWFvZDBpd0xac3BHNVE1Q1RVMzZ1bTBDaDVVaWtqcjBLeTc2NUtJbmV3?= =?utf-8?B?bkE3eE1EeEsvandMM0tVMHRmZkE0TnFtMDYvWnBRUk1QN0ZTS2V1QXNuWjIx?= =?utf-8?B?RDE5VnkycEJPYVlWL0tlUllGd3NxUCtnWFhzVXRzb0t2eGxwQlhzQTNaamJN?= =?utf-8?B?bThINS92TTNpNTYwMjRVTWxRaFNMTTVCRWhmTi80SFhLdkdlbGFKU2dOQS93?= =?utf-8?B?dVpwa0c3MHZvSTdHbk82UmU2eDVubXFya0RhMDB5VGpQTnh6WE9WVmwxakFy?= =?utf-8?B?R3BJR1N5V1htckp6LzEyQlhwSStwTUVhUjdFalBpRkNUbnFMaEwrNFQ2cm5N?= =?utf-8?B?cTNZM1gwRTRuM1RGWnpIaXM1SmVTdFdxWUQ3WnU5b1AvckJETkEzVDc2QmJW?= =?utf-8?B?Qi9hQyt3QVh0L1hJY3NWaHFuU2l4aEZsa2lHRiswemtKZ0hkOG1HU2lOc1Js?= =?utf-8?B?SWM1QWV1ZThicDlCTUovcFF4TktRcTBrQk1sUGxWWWhTUFkwSG04WjRzWTJq?= =?utf-8?B?d3dHa21FbWRISGNidm80VFpjRU5mbUw5TG5GOXdUditrcHJOdFE2K3dsOWZo?= =?utf-8?B?akJpMml1M0ZwcmhTaTJobVo3Y3I4Z0RTcGtKUUhCWUtPNjVHZmZrVGZOSTlu?= =?utf-8?B?UXdVY2lEN2pnNG9mQlh2emNFL05WL3JFK0VKTExFTUJDU25nNk04djFycno1?= =?utf-8?B?eUcxdit2NTR3UGkrTE9aQzVYZEcrSVlkL3FleHV3d0FpMFRIRStKcTArUyt6?= =?utf-8?B?YXZvZ0xkMW5iaDFpb3o1NUJ1ZFRDVGtQT0NSQXFRVFZ5aGJrYTJ1bzgvelFV?= =?utf-8?B?MkNOa1IyUVB0b2lUdHJpMll1cTNTOHlmbmx0M242RUtNMFN4NnIwUTYyTWxH?= =?utf-8?B?eVdUeW9aM0ptUEdUSVJMNXNPNHp0Qk1md0tjSUtQRlo0djZyRlFaRFRmQnlU?= =?utf-8?B?UXFTZ1UwRlcvMllmRXZDbnFlY1c1bXRxa2dISEdlSXhoV2N0SlpXUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f781a95-44bb-4064-7cba-08de4f93d218 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:03.9800 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jTnOBY5W6G2CguwVZk7X2ss52b8RkBHA3em6JPxdKUydylCus03ddQlqwzWkQEHTCxHYRV5576KjAa3qEDNZrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 Reusing ll_region.sz as the transfer size is misleading because ll_region.sz represents the memory size of the EDMA link list, not the amount of data to be transferred. Add a new xfer_sz field to explicitly indicate the total transfer size of a chunk. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 4 ++-- drivers/dma/dw-edma/dw-edma-core.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 744c60ec964102287bd32b9e55d0f3024d1d39d9..c6b014949afe82f10362711fc8a= 956fe60a72835 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -192,7 +192,7 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) return 0; =20 dw_edma_core_start(dw, child, !desc->xfer_sz); - desc->xfer_sz +=3D child->ll_region.sz; + desc->xfer_sz +=3D child->xfer_sz; dw_edma_free_burst(child); list_del(&child->list); kfree(child); @@ -477,7 +477,7 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, else if (xfer->type =3D=3D EDMA_XFER_INTERLEAVED) burst->sz =3D xfer->xfer.il->sgl[i % fsz].size; =20 - chunk->ll_region.sz +=3D burst->sz; + chunk->xfer_sz +=3D burst->sz; desc->alloc_sz +=3D burst->sz; =20 if (dir =3D=3D DMA_DEV_TO_MEM) { diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 71894b9e0b1539c636171738963e80a0a5ef43a4..722f3e0011208f503f426b65645= ef26fbae3804b 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -57,6 +57,7 @@ struct dw_edma_chunk { u32 bursts_alloc; =20 u8 cb; + u32 xfer_sz; struct dw_edma_region ll_region; /* Linked list */ }; =20 --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011016.outbound.protection.outlook.com [40.107.130.16]) (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 1100E363C73; Fri, 9 Jan 2026 15:29:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972554; cv=fail; b=QUc5ybfe0YnM/Q2hQ72LycWffMhZTnzGgZcWVBqVy1Coz5tS+wIULqryeIOJq+YULY1TH1ft7iK/eKn1QL2Cs3i+o0RbGazoNgwfoLnDrOMRe3uOc4Jtuqf7JtavkS2fPeYOe9wkNyuIsnm7ZMU3pJu5mIClYu9VuY0pKCuw6A0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972554; c=relaxed/simple; bh=u7fTulRfZLwNK7ZgvfmFeAzMaJKinGgg4N76uOfzuY8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=baQn8CVU422j0uLfndOuEogE+CcaXy7dENGHRf1Jx2mixOk6N37bS4qliViSFO3DtEfzNJVC2fW5erl1eu6rTOabc0C5MCuMwDq+X+Se8AgYQyAOCJGAFBFw15t5CGzQ1y8SvbQE8ZXI5oqFm+5r75NIt6H2RUqjdzxQgZzjp4k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=nJdVA8Bb; arc=fail smtp.client-ip=40.107.130.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="nJdVA8Bb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qLrsz6jV2hK/AAVtYVApZjYgkFkKIQJRn1co+9ymkRFopp5etkxRKMGaClD82A2MTN/aqRydR7Xmk94Kozc5t9hTSFyFYrUcrETaZWQzwaIcFAZ+DNNA1i+2hVOAbyH0sOMuCTN6cuq07UnPXOS/PaUQqYXqN/Vx/wuemh7ULB0SiCo3K/96DRezo8bNNo/A9VUBhSCZLSKq45u7aAPJOZCtIZ/A3NF2KD0RWsjVqcMZjDnwgOiQyJ5bcMkUFXa+Cf0Dvqhw/ISVVknEL858ZYx6G+3TpaqM0cNFstrVgwG28eMiattvAPe3xUC3ltVRrfvFo7cyr7J+r0FpakZyNg== 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=9rMUD93gy7BrF7Il4uhsuLbNwmQYd6oq2LiS0QYxwcQ=; b=KhAQlmQ4jzttHG1MHiWQP8kUpJBNDGAiyqyvT+QbrNlj+d2p27o81aHFd8MH4sR/s+w27wThoALK59CHMbkgtZkBBx/NrhKEBrhnp6cyN+JXdkhgMU+F+dzvggc7S8/T0KdZ1ti8uARcegr2bZfyfUGWit4PmOr2n060jUPuiOYUZBNLrHOkC4VKGEfyi43QwDrlPyzv7CUQXW5wVQpaLkINYpfKKK5obvAoq7RyiLde+MaV14GPjliGiXvsOfIJZRd6ELILbIQkKlc0J9OH7H2LOnn/EOUSynTsPeE2OUAlo40y5Abg85FA0WMkaXnzPn7LJOLhXa8VtbKXHiOh2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9rMUD93gy7BrF7Il4uhsuLbNwmQYd6oq2LiS0QYxwcQ=; b=nJdVA8Bb9ffU9FL+x7Fa6ehU5cCGa5nRQft0KDbmtwcgRTNGbj0+SbPlQ8H8uDPV6CaKnNfV5fSPVDMm2tTGoqn8kwOTul7aWVCEqfzrqhk/TxmX/d9YUPuuqT02SLcLeUqxHznAAk7YSsvTmDcXzkiO7DB4dBmnzWpFSW8O9UPoc07Js/4mUEdEc+5oWLOcVjw5ugUpMq06lsW8BZvlCGxMmAZ3qfAdcJuTt7FDbw+fVq2pDIv5+zixVITyGxmPTGPbFkqKZbHxCAw2xsCGk4O9gaV8KRIfbRjpTK4KCKw8JLpTY/phIIA2OpnRA2KxpTYDQ1xARDGBB0zm88tmjg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:09 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:08 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:24 -0500 Subject: [PATCH v2 04/11] dmaengine: dw-edma: Remove ll_max = -1 in dw_edma_channel_setup() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-4-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=1428; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=u7fTulRfZLwNK7ZgvfmFeAzMaJKinGgg4N76uOfzuY8=; b=Xy6fJCbH0W7ONINqunvDQeQdEYUsJroWgdMdtpxOygY73nNGA86OyQ+1AROHo4HTtYiM+X7lW pnAKzdwo+gfAxsjqAJaFISN8zZx4Y0kJRJgkw65vRobcIXnOjlw4yRK X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: a4cc7ec7-01e4-49ba-a336-08de4f93d505 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bGFwMkRpSzRRMXNPNmRvMEY2WnFZNktFRXNFRUhRWEVpZnQyV1NxdVRSbklz?= =?utf-8?B?M255K3puQU9rUjQ0dU1vZ2JqUjNHZnhLRVNZQjdTRHFORVVRRGJkREZRZSsx?= =?utf-8?B?UUt3MGc2YjlZVUN4aXZtbjVUbmhqT1BXajkxT3dUQ0syamsyUng4aEoyay9y?= =?utf-8?B?Z0ZxN01XdnBNdWE5WjRHSWJ3UldxMnpKaUd3cGdFclNtMmR5R05SNk1DV1F4?= =?utf-8?B?ZHg4ZzR6dDVMa2JwQlQyMzhkeWx4a1BkL2tJUGFxcTB0NlNudTAwS21TTnc4?= =?utf-8?B?MmNuTHBnSHRzRTd0NlFGQ3I3VW9RWkd0NzJJUStxTDhtTFZHOTgxd0tIWUVP?= =?utf-8?B?QWQxSjlWM3lWUnltTndjZDdxVVBOZVBkSHEySDQyVmg0K0UzamNJN0s3RW1l?= =?utf-8?B?a3IwZVZpbTRxTTRwcVBiK3hXUDJqcEQrRThiWkNiQWhqNmZYcElWQmozeEtW?= =?utf-8?B?eXlQc25ZSkZLMUpGRjFJSWN4WnArQmJ2OHNubjN1SFQ5bitkcTdINjRkSFFF?= =?utf-8?B?Vm1rZ0dlOGg2OU9vV21vdUtTeExnZ0Jwa0J5TytkN3pGK2hKbFhvbWxTcEND?= =?utf-8?B?d1hCR3pHaVZkbHFJN0FzOEFPQ2hYbEJMS2xCL01OVWpKaWFHQ05FMTNuekli?= =?utf-8?B?Mms0dkFJbnZJWksvU3hncElzTGVON3FGeEZKWTNTditSQWo4aG1UVm8wZVZH?= =?utf-8?B?MGVSR1QybXdjWk5OUktKWG13bm91UXZNT25MbnhuVk4wVFFzMExVSUcxOEtw?= =?utf-8?B?VHFUU1l1TEd3Mkd0eUt5ZHE0WUhwQ09oSmh6U2VKbW52dmE3c3hBdWxvM1gw?= =?utf-8?B?UXVGM25zYmM4TDZaS3pUeXJpUFpwa0Nhbm52Mnh5b0tFa2wwK0Jkc002c0xS?= =?utf-8?B?ajNLa2U3V2loZXBlZGtiS3NqYURyejBhazlYbGkvQ3pQS3FzSHV6UGlZMzgw?= =?utf-8?B?ZFhFRGh2bEhpY29NQUI1YjJJQ0kxUU55WnRETm1jWFBYTUlxbUZlaUdxY2ZM?= =?utf-8?B?Vks4eHZwdkI5dGY3K3BRM01EZm44M0lRVnpMWVU1NGVnbEZtOWljWWxrVTFk?= =?utf-8?B?cWJYakR0cWM5MVVZZy9vV1JlS05WSnAya2Nma3k1QlJVSnFZVkMyR3VjbWVk?= =?utf-8?B?M01zTFcyYVR6S2E3dExLYUJoeGl2ZkJPQXdsRTRSVzMydWZwczVoZW5jM2tu?= =?utf-8?B?SFd2MmlaeUl1ZHFOVk0rN2hEbm1VcGlZUXA0ZVA4V0lWUi9UdENESEZSYlg0?= =?utf-8?B?NkhZU2NxSnVqTGJCRXlyUlFiUnhSMXRkc3BNVjlMb05EN3JBTHNHM1dxSENx?= =?utf-8?B?WS94WE9yL3RmMG1wQi93SlpKaGtSS1ZRQmJnRWlYa0pmb2p1b3Y4TG4yOVJj?= =?utf-8?B?NWZsNFRjc3BPN2pkWmlDSEpaVWs0S0ZoeVVNMUZydy9TeWFiY1FQbDVUMW93?= =?utf-8?B?ZVozWVN6dDV1MWVwMGEyQlRwY0lRV2NXZnFNbENZMi9XWlFyZXpFcG1FZVBx?= =?utf-8?B?YU90bEhZTkhoQTVRK2c3WkY0K3R0ZmlDaVlQbjQ0MjFtbUd4Z1hreWlMYzJj?= =?utf-8?B?bld6ME5oVDE5WENIbDhQN1NLK2ZXU2J3YXA0cHd5R2dzWUx6bFdiaFAyWnJB?= =?utf-8?B?YjdsZHF1UGFRdVU4MWRjbTZNYUJhTXFqRmNvMEs4RlYvanpqTllWS2ViMGVG?= =?utf-8?B?TzBYQVR2bld6cnZ0RHB5NTNGeXNaK2duNGZmZFBmMExpZGxkTkpLZmhUL3RB?= =?utf-8?B?VGM2U1pxWUlJNzg4ODJXK0tIbDVVOS9HUmZOeHEwZ0tVOG5wUWRrTVN4UnFz?= =?utf-8?B?RXZGMzArd0NOK3hrUTNESXpTQU56MEszaVA3Z3BMS1ZZUHVZVjgzcElWNFhG?= =?utf-8?B?Z3RNNk5KN21nVytEYk1OcFNNQmFaTDlOTEREWlRNaWFWa0x6bW1xZzdYSDBR?= =?utf-8?B?YWttVmxRNEN4dXY5UGJ6bS91SUdmVjgzYWJjcHI4Mmt2Z0MzMFUvY3haQ2FK?= =?utf-8?B?MkhFbUxEanhjbG9vZmFBeGFUdER1QmRYbTFHc2srOFJmY2N0QnFhdGFzcXFk?= =?utf-8?B?K1V5QXFkS296SjFreXM4T1dFZlE2Y0hKaUx3Zz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WC9HOGw0ZXpSVDNnUlowL0VuNXFiYWNEdExvZk9oZnl4NWVNL0tZVmNKL2dV?= =?utf-8?B?ZlZCQXdabEN3RWY5OTR2TEdlZDh0aGF4ZVdvZVNhOXpKMXNIb3IweDR5Sjhu?= =?utf-8?B?Zlk5ajVqeFphV0oxWmgzdmRGdlJrdk0ybHhIQXc4bjFYVlJMbTJna0FsdWE0?= =?utf-8?B?L1V6ekhCNWZ3M2RQREJHdHJOcGlhVUJ3b2lNMEROMEF3Z0pvRWtUR1FRMjhX?= =?utf-8?B?bkwzajFnSGhnMEloSUJiQzVBYUxuUE5rdUwraWpPZUV3WnV3NThOK3k3QytI?= =?utf-8?B?Y3V5TGh2dDNET1lXb05maWEzdURUM0VJZklPZDhQUDBhc1Z2cmdtazJTdzEv?= =?utf-8?B?SWFZdG5mQjlXT3pWRnNKdDZDdndSU2ErL2N5d0pqVE5HWDI2eXhmSkVzUTBo?= =?utf-8?B?VkZYMC9wNHlZWHpMUXNuaTRsNzd5NlMyTHpRclhrZEJFVGw2TW4xZjJTZlQ5?= =?utf-8?B?dGtkUUZaVnlaRVl6RVJCUm5Na0tYZnRjaUkzRzhIMTFRbHZGR0VHT1BDYW4y?= =?utf-8?B?L2ZrbUpXQ1YyV0xNcEdFeFhnREpWT3NSWnM5V0c1YXRHQ1hILzlJdkJOVWVR?= =?utf-8?B?d0JNR25Wc213RVlqNjFXRDNBZ0grZU5CMUdVa212NHA5TmZvR2dBbndRUWJ3?= =?utf-8?B?NUQyVXNsM05UbGRnTE5Zb2dxN2M5QUw4ak91dlc5YjZZUGs0aENHWU5QNFBp?= =?utf-8?B?dVRZVC92bFUyeUc2dVBabnVBUzQxbjkvdW9SREFaYUJSSFlRZkNpMXlvbUlk?= =?utf-8?B?VHNBYjNpZVVUQkdwR3NHbnlxbkRtY2lmQlFJMDBxNXZIRnhpUFBPRGVCTGtF?= =?utf-8?B?KzlZY2RmYjI1T2Y5WEFnVnp6MjdxaW1HME5DQW9JSldXcjQvWEplRmJKRktR?= =?utf-8?B?bVJTa1R5RjV3U1VtemJDZXlTdzgrQURjOHBqNVVGZDdmYzV2a0VQRjVuTjlz?= =?utf-8?B?TG9FaXFPNThhVTZpL01aSmRGWG0xM2dzTmVNOHhGOEkrdlVUNzRSR0lVcStJ?= =?utf-8?B?MytDcm5kQTdwVldyYkNBMFNDeXl3RXRmQzRDV1lvWjZ0NkZPT0poQVhoZmFv?= =?utf-8?B?UkMvSEZjQk5abHB4Nk12dGRsd25KTS91RFllK1MyQWluQThKUTZVelE5eWwz?= =?utf-8?B?T2pnVVMrMkkwMWk0b2E3MiswUGJrYmNIKzEwbVZRS0hFRnFWMktDTmUxM3Ru?= =?utf-8?B?am9SZTI5aVhXSGQ5S1FURzQxTUh4VXYzWGFNY29yWnJZOHlhcEduSlZRby9z?= =?utf-8?B?VVkwZXlMUHhCbGpSNUFlb0w2RXVCb1dLVHFJNldrY1Z3K091TXYyQTUreEFE?= =?utf-8?B?WHV3czlPVjhEMlZxUzhmWjVGaDJmZUxjT2Zmb0VNN3h4RS9yVUJEc0hoUlFQ?= =?utf-8?B?RThwNXE4dlVVTFpiNE5rbnU5MUlDVjFLN28zSTNxb2J4ZU92ZmNUUmVrUHdG?= =?utf-8?B?RlVRYlRJMnEwS2xYKzR1V3FPQkRxbm1ENWM4QjltVWNvOEEwODVOaHZxU2Ur?= =?utf-8?B?TDJ1NUtDQ2JPbXR2SmpQRTRFczBTV1hGWEZQZjRXcmtzRUdWakdKZkpaaUUr?= =?utf-8?B?MVJtOG5JMGpKLy9CbFlLYW9oK01LY2NRakJLNGlwREZHM051STBDMGJTS1Nl?= =?utf-8?B?dEpmSkZvVHJNZldRNURpVFNrV3k4S2tpbXhoQjRBdFFwc2Zaa3l4L2lPMDlw?= =?utf-8?B?bVlIdTR0ZWd4QUVnRlplM21SU3Z0TFJqdFRtWjZZbm5HelBKamU4K0lDbVRa?= =?utf-8?B?elNDT2ExTXBXZnkvbWlVT3BXS2dJblVHWnE0UUMwL1pJdGI1MSt0dXJOQnd3?= =?utf-8?B?Yjg0aGNpT09lb3BuVGlTR2ZWRHZXd1ViYmc4RkR6RE5hY2xGZnhrR1hGOUpV?= =?utf-8?B?OFMzVGxWa2JxYzUyaFBZSlh6UjNyZHBNZHlYT09KVzRsZGpiQ3ZBR3UrdEp4?= =?utf-8?B?WlVSdUZaYkkxT0RQMmhOL0NvdVB2ZWxCZDA5dzJHb0VxanhFbXg2Nk5zeENN?= =?utf-8?B?a0ZFcEtNVVlHSGFrL3ExdVRvaEhyMkl1UFFlL0x2N1M2ZlBVV1ptVWt4MDdQ?= =?utf-8?B?TXp2NTcxN1VGTllHdDhvaFdjNXBLK2c1M1RkamVrMUVFbUlwTW9GaUR3SU1M?= =?utf-8?B?RjhOUEVSd21iMi9Fb29PWkpHTFQ1ZHhXYmloVk4yeTkva2s0SHFiK1ZwZzBM?= =?utf-8?B?VG11WnRkWkdMTkkzTjhxek0ycWNrUU9SVTVFM0hweG11dTVoR3RrZ0xEYU5X?= =?utf-8?B?bENKZEVBSzNlRm5sdzNRdGVmYWFMTWJ3SG96K0FrdFRuU01XWUpuMmc0YTho?= =?utf-8?B?Y3VDdmMvMVZmc1VqVWtPWkIwcEZHL1oxWUo5MDBQWmJIMkZHWTZVUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4cc7ec7-01e4-49ba-a336-08de4f93d505 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:08.7974 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RPPnuKNW7gT1eoOLZOctyVErv3MVHIyqwBXG5WXWILD2BJLUjwaxZ6fNebGhuKBxHSTzXkjec0pjfMUGJwyURQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 dw_edma_channel_setup() calculates ll_max based on the size of the ll_region, but the value is later overwritten with -1, preventing the code from ever reaching the calculated ll_max. Typically ll_max is around 170 for a 4 KB page and four DMA R/W channels. It is uncommon for a single DMA request to reach this limit, so the issue has not been observed in practice. However, if it occurs, the driver may overwrite adjacent memory before reporting an error. Remove the incorrect assignment so the calculated ll_max is honored Fixes: 31fb8c1ff962d ("dmaengine: dw-edma: Improve the linked list and data= blocks definition") Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index c6b014949afe82f10362711fc8a956fe60a72835..b154bdd7f2897d9a28df698a425= afc1b1c93698b 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -770,7 +770,6 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) chan->ll_max =3D (chip->ll_region_wr[chan->id].sz / EDMA_LL_SZ); else chan->ll_max =3D (chip->ll_region_rd[chan->id].sz / EDMA_LL_SZ); - chan->ll_max -=3D 1; =20 dev_vdbg(dev, "L. List:\tChannel %s[%u] max_cnt=3D%u\n", str_write_read(chan->dir =3D=3D EDMA_DIR_WRITE), --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013031.outbound.protection.outlook.com [52.101.83.31]) (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 50F5635EDA8; Fri, 9 Jan 2026 15:29:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.31 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972559; cv=fail; b=DyDRj5nQsTHTYa1ksLCI7v+dM7Lwbt0yCnKCKvqZBvoISqEtNNiZltKveo94j/F8clSaZkJNPxCBm99mf+jLXch9ua2tuxc5oInVxPRSXbp9jvxiiWbM5hpAG6W8wWUj1nD508CgJQKvFipPEcrFIN7l6Pc+z1f8RSTn4R3f6Qo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972559; c=relaxed/simple; bh=BVei9oaxixdZN/1lIiuFf7ag2w89A7PX0bp9V32XQPg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=iCr3GS9xfSHu//qeexQP2b1SdEcpbMbKpt1CWtYt7XJS2fOwdlSu29l7/3lEhup4FcUnwzC1bHRpWi0T6qAeygl96gAxAc2wVLKRcefV2zP16eRtUxGkhNf27YBilIr2mupJ6RZOc9F5+WXKCX59yHknIDW7PKQxSQFIHztR2z8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=CDvcN1Xk; arc=fail smtp.client-ip=52.101.83.31 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="CDvcN1Xk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=d84heULISTaO+kXGo6CwgxL6MvsfJgnxbVGBVKIHl5py+qDcCGVIE9Yz/jBKr65Tllx1OpXQSwxwf89jTUzt4QR0b1pIxNs3CnR19wH5UpNcXsiKsY0Os+lLrbl2KIqr1pnwW1XP17kEp5KRp7ayTVH7sc6dJBOfGu3+RCWw+gjUc616gAVnCD2+ZtUD+0O5cSsIIA+ZNajziB83oek933yVaKilxNdWMVrU2ybN39mODZj/pmtZFau7svIViuFJ55pvZ8B0RB7zEw5eoJ6BWGjsZ20rwzwRA6PX3lTPfXF9Uhpp1qsZkA2gaxkeXPDAA9bqgddOwU3OYjv1JPqOjg== 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=1TgGwDV/YKOQf4IuvHzx8VIIgBxGCZOV4+RWNREuWb0=; b=IZEx8qKDLd+e2HzjTVixl5mic3AgqzJc8/sW32SHsWJlkqjxdtqeMQYhcV+jvrADs4d/dcvCeG0aXTbjGenB7xc1tUGlznwBdze8k+4c8zsuGGc9uO6QqgLv+KVdEIhDh34udZrip8+GY8+smm8zDR/5s44/GoOnaLaCKEfDg1S70htttSLmHKuPiiVwmJnamjEaxhAmxZcGgx87eefs4eollKw9nZKkoeyY1nh98mRL/aLcIkyFVQTcAMN1r9pWktLBLthGrMeNF/5qm/2x7rfEJtyoWi3etn+vHwj0DxRBjLWonCkJHOJ9lvnAa6qtbZu/HxSTyamtXBglj7DBEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1TgGwDV/YKOQf4IuvHzx8VIIgBxGCZOV4+RWNREuWb0=; b=CDvcN1XkmIRObIVXNDNXnWjfmDyftHuNRyWZvifm2Qkj/bJ/YH6eadIX5egcRVDeU6tA3BJaB4MNcJuoEJfTdHDwr4BPNMtiyxlLatshVh5bV0hUsgpUyKt6qRCgjl39jwEtDUaPsjkA0XL7XWXSQK5AruvZtl4z1okY/StjFOdhLgQqywBXcnxWDtWiRgVLbykI3ZMQPnxuD6NUoivohC960Ui7i5lW0u617YayeDxP7plDcI0JhDjgR1bn4puS1zwavzGwB/w5k+BJrdgkVu4fEoNeMx9FIxfjfSmnWsvArECPHKKcfRVXAnxRdLT+1VLLtFM72ReqoxKv6hWE0w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:13 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:13 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:25 -0500 Subject: [PATCH v2 05/11] dmaengine: dw-edma: Move ll_region from struct dw_edma_chunk to struct dw_edma_chan Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-5-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=9173; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=BVei9oaxixdZN/1lIiuFf7ag2w89A7PX0bp9V32XQPg=; b=5eO8Z0dkpBcBQy8oSqcK/jwkQKaLVfH5WhDn7ooeiiUmHyq6E6LvWaZoSAlCcNwHB2xyffZsG AuFoh45rXqPD6EXGDSiHLjND6n6enjvRcxWi1a1amkljWS8Xi+WFhf9 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 25d62b5f-e989-4e88-1558-08de4f93d7de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?N1h1dEVuTVlTeHdqSUpLVFowclRzQTRodGpVekorRmtUc3VzL014ODVhVW0v?= =?utf-8?B?ZDIvRkZmM2srQTZxMmczeGZQSjVmQXFvbnQxTkh3djRsbENlTGNuUWdzSmw2?= =?utf-8?B?RnBFZHg5MHBZdStpS3RXclhwNURMMXZ3ZThoYnFKeHpxVGE1NS9Edy8vSnJK?= =?utf-8?B?Uy9RdW12Q1RSSmpmYWxjd09zb1phR3VnK2xwNTUrVGdGNng0bTVKbmRSODNu?= =?utf-8?B?dEp0YXhiQmNRNnV5d05yc0tScUlXNXhvNFRTU1B4a1k3WHpvNjNJaEFoUzhs?= =?utf-8?B?K0wzTGZYYmRzOGYvTjc5Rkw5SkRtV280eDJLSk5GclRsQnhkaEpJT3BvRCtw?= =?utf-8?B?Z1NYSmI0NXNIazUrRi93cXV4QTRVa3JYdDRmN0lzdnl5bTIvRzFYZmUxSC9V?= =?utf-8?B?azVSdm4wTHZvMHBpWXFtakUwaXZ2UEdRYlRnVGJGNThCTWdTaVpSeXNkSlFC?= =?utf-8?B?d0VqK1kzcGZhdUQ3Ymg0SCtqdGs4N3Y1SkozZm9rSjJaTSt6YkNSVm1BMXRH?= =?utf-8?B?RGhEMzRMNHVtSmtveG9OK3JKNlRWY0VFd1NMb0M4MXFIUnp0aTJDakFtZnhP?= =?utf-8?B?bHBybXlOR1Q0R3NudGxpakpUb1cxLzJiOEhzVm9BTGdJcnRyUGxSOGFzTE1n?= =?utf-8?B?UWlhb3VnNFNkZ3NUOUc2TzUvWm9ST2M4ZnJIaVdqY1h0ME1oVCtBaU9qY3VZ?= =?utf-8?B?YUFpdDFnNytCdElDRzJ3dnM3eFNsVzRpN0d3WWkveUFDRjU0Ykg5ci9zZ0FQ?= =?utf-8?B?V25FeW0rODdiYmVHSUVRK0txSXpKM3Bxd3RQb3BxN1N4b2R3RHpDNTYzRFMx?= =?utf-8?B?TlFWWkY1bDh6cytKY2FOS2l4VzZUMlZmb0tkcDY3YkRFY3EvYnkxVWtxUHBT?= =?utf-8?B?RmdmYThDZnVTN3J3Z2U5M2FBUG1UVERnNE50ZUlhSHNza2dHZTgrV3JDNWd0?= =?utf-8?B?NmFwankwZmxKZkVSZUdvMGMzSjFpR25jOUlmUFBVdDJnbUgyalhtbUVBUW9C?= =?utf-8?B?dm5lWGtBV1BTbmp1R3l4ZnFqWmw2MW9keXp3U21hQzhzUFdPR2kwMTl1QkpD?= =?utf-8?B?Umg1RHVMd0JqbHFJTkNJeXh0RTdOSjRUTFNEZjFlb3o1Zi9qQVB0N0s4eXlj?= =?utf-8?B?S3EyVElvZTNVaGZyNDJTK08yUHZhUWJpZzlkZVpCYUpmSGxDQ3VsRlhndEF2?= =?utf-8?B?SndnK0xiYWErcU9BWHE2dllKWDc1bER1Y2M2UFc3QkZGM1BZNVdHVy9mUnY1?= =?utf-8?B?TEVFa3lka1ZPTWhKcWRkRmF4THV0YlVESFplUzRmSU5aTC9OQUdSR3QrMEY4?= =?utf-8?B?WDNYV0tvbTdTTXBjeGRnTXltQmVZSE01OXhGRmFHcm5EVGRyVldkYW53NzVl?= =?utf-8?B?ZmFEZzF4alMwSnByRXU3TExYSXRSbVNSR29mbzRtdFdGa1p4TWVhV0poVndj?= =?utf-8?B?U3hLU3dPT3hkb2NPd0xHbzhDUkRyekxYbmp4WEh6TDVVS2t3Mmd6YVV4M0lr?= =?utf-8?B?bkFzTmVmSFBrSEc4R2tKT2tpR1lvdjZvOFphSmhmbjFoWFkwcE03ZFBaeHBC?= =?utf-8?B?Yzd3d3BneVZGZzZlalQ1WSsvM2ZDV0QrQXJPaERPSXFtc2JIa1BIMTVyWEgr?= =?utf-8?B?TXhGOFBmRVJrR0ovaWlhY0N2M1NpMnBMVkwyOTVma3NMeFRUTVYrQzhlWURP?= =?utf-8?B?Ump6c1pldDRaUmd0SmR5Ni9pQnVHVjloUkIwTW1LNi9qWThjYTBaOVVtQUwz?= =?utf-8?B?RDV3Tk5TaW1WM2NQKy9DM2RFNkZKd2tEcmtRYTJSZXl6aTJKbjZRbmM4cjM0?= =?utf-8?B?em5xWnBKKytGRngrZHhveWF5RnZ6bGJXa3ZXK3Z1RFlEMm42K0UzSENhQkg3?= =?utf-8?B?dUxXK093UStYbVB5Wjk5OGZQUlp6V1FwOVV1dFNxd0JEWXhMYkR6N255WUU5?= =?utf-8?B?cmFieHdob0I3Yk80MHAySWV3WGd3ZU9aUU0vWmRGK2xrK0VaOGRad1VZc0tK?= =?utf-8?B?bU5TN09rNnZweDNEdCs4SmZ2c3o0ZlVHUEw3OGk2NVN3WklBcngrZ0FJZm5j?= =?utf-8?B?Qk9qZUllQTZvOS9qemlrcWlrZkhZaVJpNEJudz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S2pHaXJlczBUcXVFWEhXNk15d2dmYTh4Tng3SDlpY2V5blZ2T2NzcGNpL21t?= =?utf-8?B?aEhITDdkM2w3b3BiK0l5L1FPVmhST2VMR3dqRktLT2wwY2JzZklzR3dROTFq?= =?utf-8?B?Vy9wSXQ1Znhpdkx1UzIvSVVVUkdmdGhNa3I2d0hubDIydGZJZUNidnA5NnAv?= =?utf-8?B?eWI0R1BCMUZLM1Jxck9SbnRtcHF2ekIyUmRSdThpcE0rRXhKMmtLWWtpQXNM?= =?utf-8?B?azh4aFpLRXR0NWVKS2FBaUg1SEtvY28xRGRqdW5WRnZRamRkRjJ2ZUJCRUsy?= =?utf-8?B?MWV6SVhnWVZIZ1NHaGpXZCtoQnBrZFBOVE5LbW5ZK1d0SnFnNDhzR3Vnd1Uv?= =?utf-8?B?TjZLVThyMlpocmdmSitPSlQzT1hQT1VuU3l4aXA4N2RDajhVcXFsdmdTQitW?= =?utf-8?B?Q25peEJxenpYR0UrVUlZNlZKT0p6eXVOSDQxejd6NTNFV3paUWNzYUs3N0xT?= =?utf-8?B?RXBWa2g2NjdXVEgzQ2xoTFBiYjlIZm1uRGpQRmZaWk5HOEsxTElEWWJuWnFD?= =?utf-8?B?Z0VUeS9OVVEwOUxEQ3cvQkNVZlBmS01JZTBBK2pqUzFrbmhQOE93UlpmelRC?= =?utf-8?B?VXRjdDh6M2tDTVhxaTdyTHlFUk9jRjhhZWdRY1ZndUFUaS9WMVYxd1lJSXlO?= =?utf-8?B?ajE2OVRJbmwwRVZOWG41a25TTWhJanQ0bWxRaFMwMnpHSVNjRDNKc1RHMFVM?= =?utf-8?B?N3NkWU1hUEVUSEpDSnhHZWxNaTNwN2JFbVdmVnhLVW9sUlFmM3E0YXBxOTJ0?= =?utf-8?B?NXp5cnhUZjhaMElrR3phVEwyNFBZeWI2a1c2VE8xcXVzTE9DZ0dwVmp6QXd3?= =?utf-8?B?Wlc4UVQvZ0ZlMzdQMjZRYTZGMnVnTUI1WE5TSzFteDY0RXRCcjB4d3A4WEZ2?= =?utf-8?B?bDNZN0J0akdUTXF4UXU5Vmx6WHN6YlpKTFNEUTFDZVFCcERrTmtjZXBFN1Rp?= =?utf-8?B?SmEvQ1RvZWcxVXh2ZTFFVW03eWE5YnBTbG9XVmg3Z3daN3VFSEJIS3NZU016?= =?utf-8?B?S0V6UlBhRWJzMTVVQldvQzRjelFxaWlVN1FnZmpKQU4wNTh0alBWY3VOZG9F?= =?utf-8?B?WkFVQjA0cDBvTHUyaHl6RmFsNnFZUUFBMCsrQzFsdXcwcWdrN2JLbUhkMk00?= =?utf-8?B?bE8rZEFuUDJtWER1a3FGaEpONTVMLyt0akJyNUZndkh6STIrck1sU05WWnpo?= =?utf-8?B?MlJMcml3SktGZ1MxcFg2TytsdGZQdTY3enByMWUycG0zN0pyamFvMDFNZWox?= =?utf-8?B?VzF1NGNsY1FXVVBkeXlDOFU3Wll1dDZhdDVNbzZwQ09lOHZqNDRaTm4yS0p3?= =?utf-8?B?VHQxelhJUjhrNlhHMndpMmJmR2owR0YzK2U5SkplR01laWgrcCtWcGJOb0No?= =?utf-8?B?Q1Vzd3pZVW5Fa2RWZnpFL0RNQTlNWXNzQU9XbGs1YVBzRys0Qzg5djN1aTZz?= =?utf-8?B?MXUwQnZjd0JRR3FlZWI1SjB1d1pzbXg3N3BwOFVFUFpObkRqaHRSeHMycjE1?= =?utf-8?B?bzkremwwUEN1MEdPK1ZCTDhnMEFrSy9IT1hNZVhYTGdvY1prbWh1VS9rQmdP?= =?utf-8?B?MUV4NTVJRkhadE9rVFZOajM3NEl0TWU4U3NqMFB2d1h2Wm1KQUg0N1hlSUZI?= =?utf-8?B?U25weVBIYkFhTmp5WGpUM1V2ajFzaHRQZDUwMkxZM1phbUN6ZVVZSU5nc2hp?= =?utf-8?B?SW1UNlhMR1h0TW5sdTRramN1QSsyQkp3aTZtQkxhTFFPblp3UDFWMW9tRnF4?= =?utf-8?B?SjhMNnkrZGMvZ3l0alJZTVhSZGtLb2pXSUUrMDg5SjBKbjdDL1VSUEZ6MUJm?= =?utf-8?B?ZkRZcVQrM3psd2tHdVZVNW1tQ1dHQkN0K2hMNmRTMitEM3J1S3dTK1BEbWEy?= =?utf-8?B?ZVJld2pTSGRuR1pvMHR4djN1cFI1b1ZHYjdSNHMvWlhNT0FmWk51UTRiK3BY?= =?utf-8?B?WmpJNWRkSDIzTnVQU29pbEZvN216d1kzSlNwdXdBU1VCMlc5cTJGTVRKcjF4?= =?utf-8?B?ditJRzQ1ZG1pdmNnS2FHd3hZVjlqaGJYcmtkWnlxNXhxOWRtWTVNTi9FeDcv?= =?utf-8?B?QVVEd3pBZmZ1K1A0c01MeUJtZm5qSEpPWjJ6YnRBVGNveG1xN3B6SkpoTDBP?= =?utf-8?B?cEIyLzJDbHhIc1hSaTF3b25ONG9NVWlYNkFQTTJSNHJsejdxMjRNZFlrQnVu?= =?utf-8?B?Z3VnOURLWUxQR1FDdkRhN2l3VVY2YjkrV3dkUWNoRzU3emRKcUYzQTlYeVIw?= =?utf-8?B?aVV0OGZZQmQxcnV6SVdURGE3SU5CWGowWWJtb0dSNGZJNCtNU2p1OFBySUZn?= =?utf-8?B?WDFZUE53ZGp1MW84MFBnOTVsVXFTeUZ3VS93c29RYVNuZEZxeE80dz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25d62b5f-e989-4e88-1558-08de4f93d7de X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:13.7131 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: biMjwASfsApzFfahybSiFQEuXsveA56xSs6qxrfYXBHHUOIEXrugrDLYF8dsUbH+U0TbdROJrTsMaX2c5HjyuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 ll_region is identical for all chunks belonging to the same DMA channel, so there is no need to copy it into each chunk. Move ll_region to struct dw_edma_chan to avoid redundant copies. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 14 ++++---------- drivers/dma/dw-edma/dw-edma-core.h | 2 +- drivers/dma/dw-edma/dw-edma-v0-core.c | 18 ++++++++++-------- drivers/dma/dw-edma/dw-hdma-v0-core.c | 18 ++++++++++-------- 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index b154bdd7f2897d9a28df698a425afc1b1c93698b..5b12af20cb37156a8dec440401d= 956652b890d53 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -64,7 +64,6 @@ static struct dw_edma_burst *dw_edma_alloc_burst(struct d= w_edma_chunk *chunk) =20 static struct dw_edma_chunk *dw_edma_alloc_chunk(struct dw_edma_desc *desc) { - struct dw_edma_chip *chip =3D desc->chan->dw->chip; struct dw_edma_chan *chan =3D desc->chan; struct dw_edma_chunk *chunk; =20 @@ -81,13 +80,6 @@ static struct dw_edma_chunk *dw_edma_alloc_chunk(struct = dw_edma_desc *desc) * - Even chunks originate CB equal to 1 */ chunk->cb =3D !(desc->chunks_alloc % 2); - if (chan->dir =3D=3D EDMA_DIR_WRITE) { - chunk->ll_region.paddr =3D chip->ll_region_wr[chan->id].paddr; - chunk->ll_region.vaddr =3D chip->ll_region_wr[chan->id].vaddr; - } else { - chunk->ll_region.paddr =3D chip->ll_region_rd[chan->id].paddr; - chunk->ll_region.vaddr =3D chip->ll_region_rd[chan->id].vaddr; - } =20 if (desc->chunk) { /* Create and add new element into the linked list */ @@ -767,9 +759,11 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u= 32 wr_alloc, u32 rd_alloc) chan->status =3D EDMA_ST_IDLE; =20 if (chan->dir =3D=3D EDMA_DIR_WRITE) - chan->ll_max =3D (chip->ll_region_wr[chan->id].sz / EDMA_LL_SZ); + chan->ll_region =3D chip->ll_region_wr[chan->id]; else - chan->ll_max =3D (chip->ll_region_rd[chan->id].sz / EDMA_LL_SZ); + chan->ll_region =3D chip->ll_region_rd[chan->id]; + + chan->ll_max =3D chan->ll_region.sz / EDMA_LL_SZ; =20 dev_vdbg(dev, "L. List:\tChannel %s[%u] max_cnt=3D%u\n", str_write_read(chan->dir =3D=3D EDMA_DIR_WRITE), diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 722f3e0011208f503f426b65645ef26fbae3804b..e074a6375f8a6853c212e65d2d5= 4cb3e614b1483 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -58,7 +58,6 @@ struct dw_edma_chunk { =20 u8 cb; u32 xfer_sz; - struct dw_edma_region ll_region; /* Linked list */ }; =20 struct dw_edma_desc { @@ -79,6 +78,7 @@ struct dw_edma_chan { enum dw_edma_dir dir; =20 u32 ll_max; + struct dw_edma_region ll_region; /* Linked list */ =20 struct msi_msg msi; =20 diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 1b0add95ed655d8d16d381c8294acb252b7bcd2d..a1656b3c6cf9e389b6349dd13f9= a4ac3d71b4689 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -280,9 +280,10 @@ static void dw_edma_v0_write_ll_data(struct dw_edma_ch= unk *chunk, int i, u32 control, u32 size, u64 sar, u64 dar) { ptrdiff_t ofs =3D i * sizeof(struct dw_edma_v0_lli); + struct dw_edma_chan *chan =3D chunk->chan; =20 if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { - struct dw_edma_v0_lli *lli =3D chunk->ll_region.vaddr.mem + ofs; + struct dw_edma_v0_lli *lli =3D chan->ll_region.vaddr.mem + ofs; =20 lli->transfer_size =3D size; lli->sar.reg =3D sar; @@ -290,7 +291,7 @@ static void dw_edma_v0_write_ll_data(struct dw_edma_chu= nk *chunk, int i, dma_wmb(); lli->control =3D control; } else { - struct dw_edma_v0_lli __iomem *lli =3D chunk->ll_region.vaddr.io + ofs; + struct dw_edma_v0_lli __iomem *lli =3D chan->ll_region.vaddr.io + ofs; =20 writel(size, &lli->transfer_size); writeq(sar, &lli->sar.reg); @@ -303,15 +304,16 @@ static void dw_edma_v0_write_ll_link(struct dw_edma_c= hunk *chunk, int i, u32 control, u64 pointer) { ptrdiff_t ofs =3D i * sizeof(struct dw_edma_v0_lli); + struct dw_edma_chan *chan =3D chunk->chan; =20 if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { - struct dw_edma_v0_llp *llp =3D chunk->ll_region.vaddr.mem + ofs; + struct dw_edma_v0_llp *llp =3D chan->ll_region.vaddr.mem + ofs; =20 llp->llp.reg =3D pointer; dma_wmb(); llp->control =3D control; } else { - struct dw_edma_v0_llp __iomem *llp =3D chunk->ll_region.vaddr.io + ofs; + struct dw_edma_v0_llp __iomem *llp =3D chan->ll_region.vaddr.io + ofs; =20 writeq(pointer, &llp->llp.reg); writel(control, &llp->control); @@ -345,7 +347,7 @@ static void dw_edma_v0_core_write_chunk(struct dw_edma_= chunk *chunk) if (!chunk->cb) control |=3D DW_EDMA_V0_CB; =20 - dw_edma_v0_write_ll_link(chunk, i, control, chunk->ll_region.paddr); + dw_edma_v0_write_ll_link(chunk, i, control, chan->ll_region.paddr); } =20 static void dw_edma_v0_sync_ll_data(struct dw_edma_chunk *chunk) @@ -359,7 +361,7 @@ static void dw_edma_v0_sync_ll_data(struct dw_edma_chun= k *chunk) * last MWr TLP is completed */ if (!(chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - readl(chunk->ll_region.vaddr.io); + readl(chunk->chan->ll_region.vaddr.io); } =20 static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first) @@ -430,9 +432,9 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) /* Linked list */ /* llp is not aligned on 64bit -> keep 32bit accesses */ SET_CH_32(dw, chan->dir, chan->id, llp.lsb, - lower_32_bits(chunk->ll_region.paddr)); + lower_32_bits(chan->ll_region.paddr)); SET_CH_32(dw, chan->dir, chan->id, llp.msb, - upper_32_bits(chunk->ll_region.paddr)); + upper_32_bits(chan->ll_region.paddr)); } =20 dw_edma_v0_sync_ll_data(chunk); diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index f1fc1060d3f77e3b12dea48efa72c5b3a0a58c8b..c12cc80c6c99697b50cf65a9720= dab5a379dbe54 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -156,9 +156,10 @@ static void dw_hdma_v0_write_ll_data(struct dw_edma_ch= unk *chunk, int i, u32 control, u32 size, u64 sar, u64 dar) { ptrdiff_t ofs =3D i * sizeof(struct dw_hdma_v0_lli); + struct dw_edma_chan *chan =3D chunk->chan; =20 if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { - struct dw_hdma_v0_lli *lli =3D chunk->ll_region.vaddr.mem + ofs; + struct dw_hdma_v0_lli *lli =3D chan->ll_region.vaddr.mem + ofs; =20 lli->transfer_size =3D size; lli->sar.reg =3D sar; @@ -166,7 +167,7 @@ static void dw_hdma_v0_write_ll_data(struct dw_edma_chu= nk *chunk, int i, dma_wmb(); lli->control =3D control; } else { - struct dw_hdma_v0_lli __iomem *lli =3D chunk->ll_region.vaddr.io + ofs; + struct dw_hdma_v0_lli __iomem *lli =3D chan->ll_region.vaddr.io + ofs; =20 writel(size, &lli->transfer_size); writeq(sar, &lli->sar.reg); @@ -179,15 +180,16 @@ static void dw_hdma_v0_write_ll_link(struct dw_edma_c= hunk *chunk, int i, u32 control, u64 pointer) { ptrdiff_t ofs =3D i * sizeof(struct dw_hdma_v0_lli); + struct dw_edma_chan *chan =3D chunk->chan; =20 if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { - struct dw_hdma_v0_llp *llp =3D chunk->ll_region.vaddr.mem + ofs; + struct dw_hdma_v0_llp *llp =3D chan->ll_region.vaddr.mem + ofs; =20 llp->llp.reg =3D pointer; dma_wmb(); llp->control =3D control; } else { - struct dw_hdma_v0_llp __iomem *llp =3D chunk->ll_region.vaddr.io + ofs; + struct dw_hdma_v0_llp __iomem *llp =3D chan->ll_region.vaddr.io + ofs; =20 writeq(pointer, &llp->llp.reg); writel(control, &llp->control); @@ -210,7 +212,7 @@ static void dw_hdma_v0_core_write_chunk(struct dw_edma_= chunk *chunk) if (!chunk->cb) control |=3D DW_HDMA_V0_CB; =20 - dw_hdma_v0_write_ll_link(chunk, i, control, chunk->ll_region.paddr); + dw_hdma_v0_write_ll_link(chunk, i, control, chunk->chan->ll_region.paddr); } =20 static void dw_hdma_v0_sync_ll_data(struct dw_edma_chunk *chunk) @@ -224,7 +226,7 @@ static void dw_hdma_v0_sync_ll_data(struct dw_edma_chun= k *chunk) * last MWr TLP is completed */ if (!(chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - readl(chunk->ll_region.vaddr.io); + readl(chunk->chan->ll_region.vaddr.io); } =20 static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) @@ -251,9 +253,9 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) /* Linked list */ /* llp is not aligned on 64bit -> keep 32bit accesses */ SET_CH_32(dw, chan->dir, chan->id, llp.lsb, - lower_32_bits(chunk->ll_region.paddr)); + lower_32_bits(chan->ll_region.paddr)); SET_CH_32(dw, chan->dir, chan->id, llp.msb, - upper_32_bits(chunk->ll_region.paddr)); + upper_32_bits(chan->ll_region.paddr)); } /* Set consumer cycle */ SET_CH_32(dw, chan->dir, chan->id, cycle_sync, --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011003.outbound.protection.outlook.com [52.101.70.3]) (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 2597E35E551; Fri, 9 Jan 2026 15:29:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972566; cv=fail; b=YMEZngkl9AFQ+2jxa4WkfvbbJXi3f32h8OI0fNlxvf9dVw7u080DPGhOSwQoHixQdGQlDzB7l/qtJ5+Fy18yHrfhJzj6UrfE9xRDiQlUX66nw926i8iDDcT6AGiSXOtLaV6+BhGYHZzoTtnpqpu070QHgbBks+YT+wlWrPJhPCc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972566; c=relaxed/simple; bh=aOAaA7jThMYTLvhiPxxVJZNwV14iX6s7QyAVIfn6T48=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=tVXVYzulsyBMcUAxvVYb93J7/cI1pCdgFYXKEU+jkcC03fIZGFeCu4r3h6gWusOihW74OKnWX9E3iUEFRuM+0LAUQkdnTIOeUnasJjOEn2wndvMRBi8C8yOXt+jN90SduhRit3aW3VcvIRW+9t1L+a0za63a44Km7RGT7XxoJMc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=BRq+vUOS; arc=fail smtp.client-ip=52.101.70.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="BRq+vUOS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ifq+/bDLmWRrlN1+1zApKu4yaVyDzqRr7vjbVsSWvpvJ9WdFhENqjh7y5IVriQfueXc4E4QcN+lhkbf/d4U6c8ViAppC3+H8lSWfXg+J1E+7HBEMoKY8XTa2Y20X1CFozKhkvfauwV0eDImTbNUHqolRs1Zb6bHsmRp0sB02YMHLRryyJ7OHsIonmc1VPSuA6ueMpLJ+DuE/PG1VERyJyTmXMW6iWMMlrvjs5ae+FScXqOSUs/t55XFT2PI7TUHr4YyPUOkaiaZGOO27VSCgdwYBoM1Gx5iV1uuR+C3eHmenIhjg+mE5u0nSqLU5IB7dD9QkyTEO1VB0eaDi7b6q9Q== 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=ILU8UFmHXUWrFEnocL7/1SBQiZN/bilsyMgv0JmFyvI=; b=Bn2bVZhun+nXG/xnWzB0yFkatb2zzG72RctadvXxJt/s7pIm6wTRaFEbUTx0dOlIZDv61Ozi6QTkBFqvmj8rq+nNoS0ImGrHPJGicsmXP4ttDPuOvOcYjZLu7xbbEkTxdpnYJn/SNCcza/eYDJqWjAbJyomiKQGZI+sTUeiCM+j+nEvG0GRYjTbnOUNKcoZ9k0rT44aUkU+JDSXzOnTQaoC8gJNe8ipzM5PFLdddgmGE1ZH134+4kFHBnVJVLJ0mreF5/mYO70JW/NzwfmY3lAUgKfBlR0LS8pkGM575aUEdkQFRDeXZDJJheuv7mrL+BGU2Q5avMbqUlJcNf0Buaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ILU8UFmHXUWrFEnocL7/1SBQiZN/bilsyMgv0JmFyvI=; b=BRq+vUOSt8XRTxqxZP3V9MPoK9W/Zs8ggLx2Elg7JdGIH1QwxV+ozqGHIxZo2FgF6Q9Vc1K9mI2omopC2Kh7GgT/U0khGN7HdQEo2m2gze6QK8ux243JsgfDqvG37ggcxTNeJMmA5TTl05dhohyW1N3tzP8+g5JShX5YVWENPw565W7DeS9atzquaRQ11+FCwSu3D0sphKzeXZ0qF7SYvwDh6ZXdu9SKogv15sptX25/TepPRQ1yCSf1NphHfZOK6pIq4jLZDpnMnXEFOEOc8Ix6N/AN8W7N33w7hX/EMKYAcPWk+K8eS1Jrswf/1GZ/LjzYbmz1s4Tvw+X/sDLk/g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:21 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:19 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:26 -0500 Subject: [PATCH v2 06/11] dmaengine: dw-edma: Pass down dw_edma_chan to reduce one level of indirection Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-6-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=6978; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=aOAaA7jThMYTLvhiPxxVJZNwV14iX6s7QyAVIfn6T48=; b=DkTbVShCe2tGa/qNUh5Ra382+VoTCa8eS3kQZ+b9wJ6IvqLlXuJ5AeyAq+NL0qHCYXN+2xYL/ 92Pw3KRIOs1CZRYuVRcm0ZyWK1/vscpThF5x7UGB0WXIUSR3vrwiHrD X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 74669a2a-699b-4f34-4183-08de4f93daf2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U25iUExHTmpaTkpWUTcrQ0liRUxzb095T3NCcHViakQzQ2UwUHJJRjBEaWwv?= =?utf-8?B?SlhyUFhOV0NRVlJEMEY0V2xvYzNtdHVRQkFCRC9EanlaVUVsR0cwNkNjeDQ3?= =?utf-8?B?MVI2WmZvSnJLc1UxQzF1K3JxTW5VMXprQW9lSWEzOTliVUhFamJrY1pMYnlN?= =?utf-8?B?OWh3TjRGNXBFREdnZ2ZpNm9lY003WFNnK2UyalU1QXpsbWxOMzNLZ1Uwdy9J?= =?utf-8?B?MCtuQzFKbXBmQkhuMUhhaytBWXhJL2xlbEs2YWlBQStMVDVOZUxTVXFINTVO?= =?utf-8?B?aHE2K0xVV3hnMDRFNXVYU2JQK0hDd0lMUDhzQU1qWU01a2VSc2gyVnRrSTM1?= =?utf-8?B?V0ZXYSs0ZGx1Wkx2K1pRSHIwVEEvSzhWdGZicE5OdlZEWkE1QTE2bDlBbHBp?= =?utf-8?B?dnErNzVZL0xGVENHUmxYL0xxWDYxdWRoaUVpRmxzZkNmdEhtWXl1UmdyV1lj?= =?utf-8?B?Zlo0RlI1VU4reFNoVXd6OE5WUWh4aHUxNU1HeUsvV0ZTUmtYVTNCeEpKa0NV?= =?utf-8?B?bEVyRjhKcUwvaVU3YW9qUWRyeGlSRWpKSFV4SFFhckQ2WCtHaFRITDJPMHEr?= =?utf-8?B?Q01keGkzSzl5V3Q4amcxb3FGWGIvRk5jNDIvai9ZUVUyd0FmTk1QWjRmdnl1?= =?utf-8?B?cmtVVnNOZ1ZJTjFxa1g1c0FCbmoxU29GWVNtejhPQk1JZlFpMkR5NUxhaUw3?= =?utf-8?B?U1N1NW1QYlhMc3g3OE4zb25lQThzd1FQcm1ENzh6VW5sMy90ZVJUTGJzczZO?= =?utf-8?B?TjVQa0lBZHZsY3FSSFVWU1p0WjNrZnhJMURWQzJFU1IyblVWZzIxZ3g4U2VW?= =?utf-8?B?WWZueS83VnZYblo0QUpwSUhUN0R6OFBkZEdIRnFOM0daZy9ETm5KRDdTR2Jw?= =?utf-8?B?dDBRek81UThXbE42dU1CeU55TGw0RC9Ua1J5WDhPUmhLWGRYdzl2WitpTlRT?= =?utf-8?B?QWJwMlEyQ0VXbStVWWdkSTltNHppeVA3YXVieUZlbm5XNlRQYU93Ky81aVhS?= =?utf-8?B?Tm4yNm8rczZGNTlwSnJCWEJyQWNObFhGNW05RzQvZm54Rmk4ekFWRS9jazRq?= =?utf-8?B?UGxUZlhuL2VBMFNpOUNJc0tNRFRiM1JpTzZKZEFtWEhkV0FMSDNvaVhyNXhq?= =?utf-8?B?amw4aUowOW82aXRpWUhSeEI5SGpoWUFTUEtoWmhkRWZVbExneWxscXVNMUVS?= =?utf-8?B?cmpCdHMwNlFqVzJqWHlmUTRBSW5FRytxR1FPQ2cyeVRXcXA1OTZzNVRkRHl2?= =?utf-8?B?OUJXc213dE03VW9NaEJDNWROazBhdGJLOUdkVkNBc1ZibWdCcjAvdHNqWTlL?= =?utf-8?B?ZE9KbGVNS2djUDFZSG1haVFLVEZiWTQwZW9TemRLc1p1dW40emM1QWJnclgr?= =?utf-8?B?dGpPMmF1MHhIUzlONkc5TU53NVRKblpZUWkzc0g5MmVPbUlWaXFkelcxRDdy?= =?utf-8?B?UWM3QzJFTHczZ2UwTkc5MklhQjQwYXlSek03Y3VwMmsreXEwSjhKTUcyRG0v?= =?utf-8?B?bUdvVWZDaDdsMVBvZ0NUcHh0S1hKMWF3OFpFVEhONWZEbC92S1RabjRXQXk3?= =?utf-8?B?QThpYXIxTkpXbXhTV0ZoaU1GMHJNQ2lDRkJ4ejlYM2lWdktjUTQyMkQ2SEpU?= =?utf-8?B?Nk9VcGM3R21Ic2xtZlhTeThNTUVSMkRBcWV3aGp6bVIvaHRmTmo1WEx4TTVM?= =?utf-8?B?ZFhyVUFGSlZadjdDWjNQZDRob0QwdTFoZFpqUllkODlBZXNDenFVYmVOVWhF?= =?utf-8?B?MGhqcUJMYnFubGJnZjhQQVdsdXJ2aXREeTU2a1N6K0dseFdrU1JyWkJ1bGxO?= =?utf-8?B?cVJWWk1ZUlUwcUZLd3FLSUF5OXNPZldlMElGM3dxVm9XUHFvMEptUkFnVVlH?= =?utf-8?B?VDFVVHM4dUxvcms0NGZRd3Jmekl1Yy92bWJ2eXVXOVM3RUhQRUlLV2Q1aEVx?= =?utf-8?B?SjlNRUE0a0VQdDZXV0daZUUyUmQ5d1N4TE5nUHRwVHVTeURyVXZqRUlKbTZJ?= =?utf-8?B?Nnp4clluNmxROG9mNW1QNUphM2M2SW5ZelNmR2dxL0Mrb1UwNnhkNjNPaTFj?= =?utf-8?B?dDgwbnMwd2xLYzdmSlFReDdkb3hoRm0vNFZ1UT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L1F3WmFPZHVnREk1V3UzOWplUk84WXJnc1VnQVdPSEpYZUpLekxGMUovbkl2?= =?utf-8?B?bGFWVy9OR241YWYzVmM2YUNzNlBIdjBSakllbGdGdmJwUzBySDVwQ1ZLNW1R?= =?utf-8?B?OEtEMFR1RmtTOGFtRmhubGNZZHlxeFBlUXJsQnZsQ0VDSTJtYm5IZUxKeHRC?= =?utf-8?B?SGhZMnJscE13QUIvVjl3MHlkdjl4YUhSZ2ZubzRMM3dkd3dkR09Kby9nQjVS?= =?utf-8?B?OVJpYlhCVENBTjNPdEZJb1N5ZzNxcTlCUklZOUVJR2RiRjBtL3ZnU0MrM0lq?= =?utf-8?B?TFpPTE1tOStrVmh3akpWaDMvb0lnSnFIemtQMGt2ejlVZ3Z4Rk1YTWJ4WkZk?= =?utf-8?B?eTFObEpBWkdBK2lCbzA0K1Bydkh6ZzQzaG16aTYvbGd0ZlNIZXNoN2x2dC9F?= =?utf-8?B?TXl3VW9URjhaSmxCdjBtNVNOT0tUNGJwZXVuT09lTzQwV25wUm5lUTFMeU1n?= =?utf-8?B?WU42endxTjZ1eG9Rell0UnJUdFJ4cnpmdEhjSzF3NXpmNEE4RkVOT0I2RGZw?= =?utf-8?B?MUxDdDZDUFQrWDVhOHliRG40eGh1cU1WQmlRdlAvaWMxTkR5UkVOaFRCUExl?= =?utf-8?B?QWlla1d5eDlYWTUrNWUxczNHRnFVc3FTNDk4b1k1TTBNbXVCVExGZTZJZG9v?= =?utf-8?B?WnA1eUd0NjhpQVNOMnA4RnhaZVk3YU5JMFNETWRSaEo1S2x4YUx1azE1K0ZV?= =?utf-8?B?QW16dzZDSXpMMG44dVFkOGtPUUM1bE9XS0hheXliMUppbDFKcnc5Uld3WlRq?= =?utf-8?B?dC80dHc3a2NPN3lBMFo0TTBIS0RlQVpHQkRjYjZnVVlHTUY1Zmw4NTd4Y2Nz?= =?utf-8?B?eHVLcThWSDVERjdtSWpnbGV0OFN3STBocWlwbkI5VHpra0VQeWJBOEhlbS85?= =?utf-8?B?dDF1NFJPdlkxVTlwd1VnMDMyYW1qZEdReWxDRlpMWkhubVpVZngzYlpQQkF6?= =?utf-8?B?WGRJUjhIbllNUk02WEs1Z3dPYVNjRlhsUE8yUEh3ejUwdGxJUlpOdHJBN3Ny?= =?utf-8?B?TkM0VlVmTlFyWDhmR2RwOWgwYWkwcEFwWUplOUhtTEJ5ckxkWjJPSFZoaXVU?= =?utf-8?B?Yk5WRytHZzU4cVBmWFBHQS91cWE1ZEVhM0VvcEE0RURHUzJDZkdSVlkxQkdJ?= =?utf-8?B?UDFDRkJ0a3NDc2N5ZG9ucDVGakc5cTF0bHErSkkvY2s3QUJJNlZBUzVEMDdX?= =?utf-8?B?aXR2QlEvS2IwVkVtRW1WRVA3dDRmcE00VS92dGF6MFVvUzRNN3JBeTdpaFNZ?= =?utf-8?B?aFdIL214U1JDcWJENVBuRnFsQWF4MnBTK3JLZnppOCtGUS9HR1hNbm45OCtR?= =?utf-8?B?Ky9rdmk1Zk1WQ1crblhWOEFJYU5KdzdJUkZ2Mk1hSWpwOGlDcDRXZzNRUVRs?= =?utf-8?B?NWtVN0xUSG1rSkNkRDhvMk5YazhNLzNmemxtUVExWUN0UkdmL1N5QkU2aVEr?= =?utf-8?B?eGFFcTVOdStJYlo0OUNFRVNleWpQaEdTUWs3ZTBuaU0vQ2FXdW5VQWpUc3pi?= =?utf-8?B?eWhIK1g1VTFNQXprNmdnWHJWZ0NiOThKSzRicnV1cVoxRkcyNXZ5WEpQRWlM?= =?utf-8?B?RW50MWY5d1p2Y3dwTEFxK25OR2JGZTF3OHdaNitpOGhxdWh6ZkRVNUMwWExF?= =?utf-8?B?RmxzV2l0a0lxdmZ0bjAvb3l4RDNZQ3JLMG9IU3NuN0xqaGNiY2RyKy93dFc2?= =?utf-8?B?YXRXdnNySU9qc1lmM1JWMm1HT2x6K2lzMXJxZ1dtQ28xVU1XMWE2cW15eWpn?= =?utf-8?B?WU8ycFpabVBIMjJCemFNL3pIdVNaNXJNeXRBSkpIRTdkUGdxcW9NeTkrWk1N?= =?utf-8?B?Vkd4aWFoNkc4cTBtUFR4STNtdm95N3RZL3YweTBWNGJwaW1WU0tYZzg4dWgv?= =?utf-8?B?YVFSY2VlZ0ZMQUUzN2tvNk9tZzFCajB5NjhJNXdNbDVaMFY5VEJzM0QzYVVV?= =?utf-8?B?b0dMdjBveGJQYU5DRHJqNUg4RVdJM2ZKdWM0ZG8xOVlDZTF5VHVWWkFmV0Va?= =?utf-8?B?SDU5SnpXaS9zQzFtNXFMY0FoejU0MWt0cFVPaVRBYUFLLzhqeWtCbnBHUW5z?= =?utf-8?B?Y1BiSDhWR1VxWFlJYVNnbHJ1Tk9GakVyR3U2NEI4c1BNOFRhSUN0QnFoWEZk?= =?utf-8?B?OEhUNG5ZV1JVdFJ1dFg1TjdPNmpmOVl4YS95NjdBa1B5RjkyYVhNUEdva2lQ?= =?utf-8?B?U0NubkxEOEJFUytzS1k5NnhzdkxiaGx4a0FHNHZkUGNmZ0xWT0V1VW5sNjJI?= =?utf-8?B?V2JEQm5Yc3o1bTNSS2tpS3hVMmRBblV5S3NjNHN3OENpMlRxdG1MT0FXMStQ?= =?utf-8?B?L3k1SEVRUUdBd2YvYVlJSTlLcDZDdTNQZTZLWEcrbU9qNWhhRjE1QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74669a2a-699b-4f34-4183-08de4f93daf2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:19.4769 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WyMKX7z394WBCfdUqoj9967kUhdt76Co9I208i/gEe8jS9gQbolsF1f5zB2zQiial6G2DowVcPo+wXiGu6S3eA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 Some helper functions do not use any information from dw_edma_chunk, so passing a dw_edma_chan pointer directly avoids an unnecessary level of pointer dereferencing and simplifies data access. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-v0-core.c | 22 ++++++++++------------ drivers/dma/dw-edma/dw-hdma-v0-core.c | 23 +++++++++++------------ 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index a1656b3c6cf9e389b6349dd13f9a4ac3d71b4689..79265684613df4f4a30d6108d69= 6b95a2934dffe 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -276,13 +276,12 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq= , enum dw_edma_dir dir, return ret; } =20 -static void dw_edma_v0_write_ll_data(struct dw_edma_chunk *chunk, int i, +static void dw_edma_v0_write_ll_data(struct dw_edma_chan *chan, int i, u32 control, u32 size, u64 sar, u64 dar) { ptrdiff_t ofs =3D i * sizeof(struct dw_edma_v0_lli); - struct dw_edma_chan *chan =3D chunk->chan; =20 - if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { + if (chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_edma_v0_lli *lli =3D chan->ll_region.vaddr.mem + ofs; =20 lli->transfer_size =3D size; @@ -300,13 +299,12 @@ static void dw_edma_v0_write_ll_data(struct dw_edma_c= hunk *chunk, int i, } } =20 -static void dw_edma_v0_write_ll_link(struct dw_edma_chunk *chunk, +static void dw_edma_v0_write_ll_link(struct dw_edma_chan *chan, int i, u32 control, u64 pointer) { ptrdiff_t ofs =3D i * sizeof(struct dw_edma_v0_lli); - struct dw_edma_chan *chan =3D chunk->chan; =20 - if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { + if (chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_edma_v0_llp *llp =3D chan->ll_region.vaddr.mem + ofs; =20 llp->llp.reg =3D pointer; @@ -339,7 +337,7 @@ static void dw_edma_v0_core_write_chunk(struct dw_edma_= chunk *chunk) control |=3D DW_EDMA_V0_RIE; } =20 - dw_edma_v0_write_ll_data(chunk, i++, control, child->sz, + dw_edma_v0_write_ll_data(chan, i++, control, child->sz, child->sar, child->dar); } =20 @@ -347,10 +345,10 @@ static void dw_edma_v0_core_write_chunk(struct dw_edm= a_chunk *chunk) if (!chunk->cb) control |=3D DW_EDMA_V0_CB; =20 - dw_edma_v0_write_ll_link(chunk, i, control, chan->ll_region.paddr); + dw_edma_v0_write_ll_link(chan, i, control, chan->ll_region.paddr); } =20 -static void dw_edma_v0_sync_ll_data(struct dw_edma_chunk *chunk) +static void dw_edma_v0_sync_ll_data(struct dw_edma_chan *chan) { /* * In case of remote eDMA engine setup, the DW PCIe RP/EP internal @@ -360,8 +358,8 @@ static void dw_edma_v0_sync_ll_data(struct dw_edma_chun= k *chunk) * LL memory in a hope that the MRd TLP will return only after the * last MWr TLP is completed */ - if (!(chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - readl(chunk->chan->ll_region.vaddr.io); + if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + readl(chan->ll_region.vaddr.io); } =20 static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first) @@ -437,7 +435,7 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) upper_32_bits(chan->ll_region.paddr)); } =20 - dw_edma_v0_sync_ll_data(chunk); + dw_edma_v0_sync_ll_data(chan); =20 /* Doorbell */ SET_RW_32(dw, chan->dir, doorbell, diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index c12cc80c6c99697b50cf65a9720dab5a379dbe54..27f79d9b97d91fdbafc4f1e1e4d= 099bbbddf60e2 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -152,13 +152,12 @@ dw_hdma_v0_core_handle_int(struct dw_edma_irq *dw_irq= , enum dw_edma_dir dir, return ret; } =20 -static void dw_hdma_v0_write_ll_data(struct dw_edma_chunk *chunk, int i, +static void dw_hdma_v0_write_ll_data(struct dw_edma_chan *chan, int i, u32 control, u32 size, u64 sar, u64 dar) { ptrdiff_t ofs =3D i * sizeof(struct dw_hdma_v0_lli); - struct dw_edma_chan *chan =3D chunk->chan; =20 - if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { + if (chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_hdma_v0_lli *lli =3D chan->ll_region.vaddr.mem + ofs; =20 lli->transfer_size =3D size; @@ -176,13 +175,12 @@ static void dw_hdma_v0_write_ll_data(struct dw_edma_c= hunk *chunk, int i, } } =20 -static void dw_hdma_v0_write_ll_link(struct dw_edma_chunk *chunk, +static void dw_hdma_v0_write_ll_link(struct dw_edma_chan *chan, int i, u32 control, u64 pointer) { ptrdiff_t ofs =3D i * sizeof(struct dw_hdma_v0_lli); - struct dw_edma_chan *chan =3D chunk->chan; =20 - if (chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { + if (chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) { struct dw_hdma_v0_llp *llp =3D chan->ll_region.vaddr.mem + ofs; =20 llp->llp.reg =3D pointer; @@ -198,6 +196,7 @@ static void dw_hdma_v0_write_ll_link(struct dw_edma_chu= nk *chunk, =20 static void dw_hdma_v0_core_write_chunk(struct dw_edma_chunk *chunk) { + struct dw_edma_chan *chan =3D chunk->chan; struct dw_edma_burst *child; u32 control =3D 0, i =3D 0; =20 @@ -205,17 +204,17 @@ static void dw_hdma_v0_core_write_chunk(struct dw_edm= a_chunk *chunk) control =3D DW_HDMA_V0_CB; =20 list_for_each_entry(child, &chunk->burst->list, list) - dw_hdma_v0_write_ll_data(chunk, i++, control, child->sz, + dw_hdma_v0_write_ll_data(chan, i++, control, child->sz, child->sar, child->dar); =20 control =3D DW_HDMA_V0_LLP | DW_HDMA_V0_TCB; if (!chunk->cb) control |=3D DW_HDMA_V0_CB; =20 - dw_hdma_v0_write_ll_link(chunk, i, control, chunk->chan->ll_region.paddr); + dw_hdma_v0_write_ll_link(chan, i, control, chunk->chan->ll_region.paddr); } =20 -static void dw_hdma_v0_sync_ll_data(struct dw_edma_chunk *chunk) +static void dw_hdma_v0_sync_ll_data(struct dw_edma_chan *chan) { /* * In case of remote HDMA engine setup, the DW PCIe RP/EP internal @@ -225,8 +224,8 @@ static void dw_hdma_v0_sync_ll_data(struct dw_edma_chun= k *chunk) * LL memory in a hope that the MRd TLP will return only after the * last MWr TLP is completed */ - if (!(chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - readl(chunk->chan->ll_region.vaddr.io); + if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + readl(chan->ll_region.vaddr.io); } =20 static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) @@ -261,7 +260,7 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk = *chunk, bool first) SET_CH_32(dw, chan->dir, chan->id, cycle_sync, HDMA_V0_CONSUMER_CYCLE_STAT | HDMA_V0_CONSUMER_CYCLE_BIT); =20 - dw_hdma_v0_sync_ll_data(chunk); + dw_hdma_v0_sync_ll_data(chan); =20 /* Doorbell */ SET_CH_32(dw, chan->dir, chan->id, doorbell, HDMA_V0_DOORBELL_START); --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011003.outbound.protection.outlook.com [52.101.70.3]) (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 3A915363C5F; Fri, 9 Jan 2026 15:29:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972571; cv=fail; b=tmHMfuYhkhU7MqTcWtnTXqv6YrrYMKGnDGw2ybbbWjI9kK9OTDdzYpgxUZBI9bwXryn9LTcbncvqu8jQQOVyKE2HOBudP9TCLXyP8hFj1qKMlfAKyc9TIKGhpn+y7vJqgIlqQX4YvBmV7qPyqeW0XkK+BzQp0tZ/l+T84TTwGyo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972571; c=relaxed/simple; bh=F+fDFjVxxPgXTCyoMFc6NMQ4XG5kI1uVo8VeRJRlXlc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=kmhxS7GuQOF//zFVCZd0B2MtjQytAJ3Q4XdChhpEcqCpqaMCgy7tTTdMvU07URY7H7hlzhidhhtCpemdKIzYsa0mREEcIuyXm7zeF+oL1k/dN/RQjqc2EcjXb2kUnKI0pkBWshiDGqaBIDltBexyW1B5qN6Tpvkn0ZG+tpafd00= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=hIO13B6V; arc=fail smtp.client-ip=52.101.70.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="hIO13B6V" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XSDY/DkMU4mJegaxyarw1MbhdXDTBaR4xUAxNi3ZrCyKVjk2YpE5qapeISvkNB4AFZ+dx9k4kjipirbG024AlaNNf4UajBu0+bCNDohMmt1eF6pZdvYctBzX5JrB+M0ikyhGsyxVegGx2W4tHWDhD8+/PK0pAYTAIPbjDGImMJ3u5Ft/G0Z/52gF0Q3BE7YrakQ8tAL7wbQkpa/49WkBbOTI1j4HI0zJRCgW2zFl1q2WiTm2MdQIsnp0nPaQYLmWQsQzAUyFn0Zl28JGaYon/L3TtQJ/qGlMQt5WVExsiBNqM9HBZ3S1W3+UfTcyc338AFXEiJ1NBcfOJso9KY0CBw== 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=cE0VOqS08uwvWI3sn1olo8/9bX0gvPyMPcy6llRXccI=; b=fU+h3QyBXZctgF/rc3Pq/qkiBtsPkd6ZJMz3VLWLuey5EheDrvMe4fpf43yBoP4daYLZRKRHhJM4ylqcgBOLRnvR2ysfo9vikgXxatOpU7dSzRiiyrZs/U6MlhwoQVIGIam71ztzFjBtqbZmLWSHcYZcnUrJuVM2hrY94uoAmx8j6R1BKg9F9c0sXa5g1+ECfT8PKG7dWm9oldkJKozfkhcbAofL2bfzkQB9Yd5Fe34azmU8ffEbtmj3O5x5OeINisweBA9dJSzpFJlO7zLy7Ue/1FkDbJvSpDw1PDj1eQGJx/m3bfjf6yH3xSScac+uy8lXhIbHesvtQJhHiZOUwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cE0VOqS08uwvWI3sn1olo8/9bX0gvPyMPcy6llRXccI=; b=hIO13B6VG+14aCAVtEd7vqKSS1NjIE+aYiMc6JPHaM9ZZl+wJElzTeIXyDSeYN/vWO8ZtNOHOHUng0mXGl3jzOBPd+xcj5Vyj5TrFYwTfPQtQRBQLrzBnyW9lzUvSl4OL90EjOrLt9h5k58QPsbXzoisSFqwovQE/Bfz+n5X7VQVehyzij8R1RkGTOJrMyzi8LxlKtu1hU8sG+0Z5PyE/dhelNHr5/Ay669LBI0YKIMyW5NBx1h69ofiPxfxi+IkbtKAjTJCtTtfLed1XMjnfbocMkl3Aoh2Wg9AD1nM3G635JrhHKpMZiVoGTXXCbhO5vNHwIjRXVwnKuEZ85xMYw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:24 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:24 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:27 -0500 Subject: [PATCH v2 07/11] dmaengine: dw-edma: Add helper dw_(edma|hdma)_v0_core_ch_enable() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-7-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=7895; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=F+fDFjVxxPgXTCyoMFc6NMQ4XG5kI1uVo8VeRJRlXlc=; b=OAHtQMH/UHWCQfY691prG6fOsPyPK7u4sn+A5jcUdK75f2PZHVzz8yvpeFlaMxNbzSw1/K4LJ o+LsNOgbTiRBqR0mh48h2poSNVTgsgsp/1eG4em39/A+K5ieC/lpY53 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d3bc744-a29f-4766-fe10-08de4f93de1b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UFdsNVV1cUZYa2M3SVJ1ZFBPa0RxeXlsQ1A4WklPWlFSY0NWTlg5bTMvZnJB?= =?utf-8?B?amFyc0pOZGx5aXRlNSs4K2d0cTFyeG1QSjZzcXYwMHY0MlRNRmtLUWRON1Vw?= =?utf-8?B?SnZydDNWUzRZMkhlNVlucVBFNXRDTjNJMTBSNUppRmdQZzJ5b05Sb2ozWWZZ?= =?utf-8?B?N2pKZDl5a0o5R1VycmQxaWRYVGx4TkxKcDREbHZ1cklBY1Z5REY5WXNLR0V6?= =?utf-8?B?QVdtekIybGNJRTlmZVNTVkdkNkxGTEZpdytGb0tOQk1ickkwNlltM3djRGRO?= =?utf-8?B?N3hpT1NBUU1wVnYrR1doUmUzVy9QWTB5ZXZUWmFyMXMrVGhxQyswaElFL1py?= =?utf-8?B?aXRzbUpaTUZKSEhaMGk4N3dFUnpGU20ra0gvRUhvMnVYd0cva1I4RDhqRWZx?= =?utf-8?B?V0EvM3hGSDQzNXFvVjNRTHhHVnRKL3RqbEY2NEtKK0lyVDZuaWxhWWJGQWRM?= =?utf-8?B?UEU3K1YvOFRQQ0FJdGYvL3VmZ1ZnZVBNME5GNE5lb1JzRGhKaFZyNUZCNC9Z?= =?utf-8?B?d25BZVZYWGJ3bWNKQVZsR1k0dkV6TFlKaFR5VFBweTZRbFJudnRQZVh6dTYz?= =?utf-8?B?MlE4ZC9WT3RFVnJld2FIMFU4RFBBQTF1ZHYyMGNjeC8vUmVUQldlMDhWSE1Z?= =?utf-8?B?VkhZaityY0VXNXFkV2I3bGNObTlWYURVOFFTTjQ1dEFsMHA2bVFFbWhJMUtX?= =?utf-8?B?V3JRV3FuRUs5UUdlcXRjRlAxUEE2aSsxT0Y2OGdLV0VxQ05ZMjJvVno1MzNC?= =?utf-8?B?MjgrekZHSVR6djRtZzhXbWxCNGhRZDVMa2VHNERSd3ovQXhrTDY5MGJwNWsr?= =?utf-8?B?ME5iRjJXa3VJMmltaStXZ1ZCR1dNM1RjQXdqZU5RRkRTcDR5bEFWVU90TXBJ?= =?utf-8?B?QjBnZSs4YXNNbDdkNG5qSU51UGJhd1pjQXVyQWwzRzdNMUVBdTBFZXgvZWU1?= =?utf-8?B?dys5R20ydytmNnJobG1wdzd3QXBCWjdtRDFpWllSLyt3eU1RSlZRZExCMHJz?= =?utf-8?B?MnlvYjlsblFNTXNhL1Z2eU15b243OGlLM3Z3bHhBRW81UlFROG9rOVcxQkF2?= =?utf-8?B?NXdhczVnbEw5bXVENnVBVUJsS0oxeDdTUXQxRzFmNUI2RUw5ekdhWnFJRWEy?= =?utf-8?B?SkYzMGxMdWMrR2daTDNwUisxMVlzdWZ4THFBc2dxTzJ0M3d2dFk1THhZd1ZB?= =?utf-8?B?WDMrejZRYlNDUWNycG1zWmZHaDJvTnU4Tkp4U1JpWjN4bm14RmNMYm5kTHdq?= =?utf-8?B?SytWeDNMVFBWSXR0UXB3eVVvSk9kVkptMHJIZHZhZ3JRdFVVZlE1TzNKd0Jk?= =?utf-8?B?dExwR0VId3BhWTBaZzVxNDJCV2FlWGYwNTFlQkhXalRUZWs4SHlkWnJ3V21u?= =?utf-8?B?T0hsUU5SdUljbnVsSVhnVDNzTHVIanZRcTViamhub2V0NDBUSWlQRnNqVUdW?= =?utf-8?B?RVZpejVVdVVoYjJlcVhRRzRRN0tScmdBblIzNjFrT00rTkhzTHE5dVB5OGRV?= =?utf-8?B?RFNqQ0ovNXYwbTJteGJkZExzeXU2ZG1LdkNSNGNVc1QzNS9KcGcrTHRmSlh2?= =?utf-8?B?aE5CWUtwaGlBNGxKU2NFYWNFeW1HU01kMlp4bnhmKzdMcCsvcWRtOTVPR2dS?= =?utf-8?B?Umd5K3U4RjNiVHRwbVB6aEI3ZEpKNHA4S1NrTjA5UTdUT09CTjd2REhEck8y?= =?utf-8?B?Z1J2M3dMWXE4dkVnNWk4YkRJcG1YditvVmd6bVRNSjVtMEpvMnBTeHhoWjBk?= =?utf-8?B?VmtZU2Qwd2d5Z05YQWh1Zkk3ZWQxUU9rNm0wcXFkQk5KVUpHWWN1UmR2dTBt?= =?utf-8?B?K2R3RGJEVzJISTQvcmVIUEZxZVlycVEwZ1Zwb2Y3akZYZ0tpbTRzQnNOMnp5?= =?utf-8?B?NUE3Z0RTTU0rZ1ZFVVgrQy9uTXhQVkxFTU1Lc0Z3Z1RLMlR3ZlQvWXRuSEw5?= =?utf-8?B?Si9pN2FiengrY0I3YTRQbStFUFJVZVMyemJiR2xENU90elllSm4yMFRLQXdo?= =?utf-8?B?MUpHTTB1TFpQWFpKTUwyMXhXbVVFSkhBMzJ3TXZzSFArZGIybzZnNndWbEFU?= =?utf-8?B?aU13WUJ1NDh5MklycFhxc2VmdklMY2dXRGNiUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZEJOamdTZFNZVWlObnlYOGloRG1Ma09IY2o3K0VKeFR0WXlPQmJHSTV5a1Fo?= =?utf-8?B?OE0xeUxxUkFhV3FoUHk3a0kvRExkNTQzNjJZcDJ6MndtQnAweWVLTEQ5RFBR?= =?utf-8?B?RTlOb0Y2Z1JUWkMwakxOM0NQdDE2RHZMTUVTZW9oYWxZbDlrZVBFUktJMEZC?= =?utf-8?B?ZmRwc2JKZU9oWHlFL05UVlVmQngzUWt6Rlh2WGx1cGpkTDQrQ0kwVmpwUEdn?= =?utf-8?B?djN1b1l6SzBpU1RNRmM2cmVEc1NNT01UYlI4V01aWjc0aFJQYzlqd1pTSDk0?= =?utf-8?B?YWtob3czQ0hmaG5NTzk4TTFuUElzaHcrTU9tb2cxS1NlM3BNZzFLaklXMER1?= =?utf-8?B?VXJBeEhZdVBPTnVaM1JIdTNwUXlnallnRlFacVo1MjI1VnRkSUpnSVVyNDZn?= =?utf-8?B?bVhMV3k0anNnZnI0M3FiUDhpOU1iWE5FNUZuWVV2TEtGTVZqRWFUY3RaUWNT?= =?utf-8?B?eGczQzJPdVo0c1U1NUh5QWU0cFA1dTgzSDBLVlQxMS8xMlhYbjlhQlYxY3Z0?= =?utf-8?B?OHVVNkRXT1lucnZYeGJKem5ycjYwUWExM3pXaElLNEVXRC9HS2VjTGhlTmlQ?= =?utf-8?B?ZHJnTWNYakJTL1ZWb0QzSVJpVUVQV21VVVhIWW5NTEdVek5pVkVvK201bGtk?= =?utf-8?B?N012aWxBK1dzWnEzTUJHUTNlNlpZUmQ0ejl5YVFVbFYwQS9lNkZGR2oxT29K?= =?utf-8?B?TTJqei9EeUQyOFdzUDMvd3UwYUZqT3RVb1ZiOTQydThTb05CMHVPM3V0dGlZ?= =?utf-8?B?bzdKVW1iOGx0M3Z0RElWMGRzc2pscWxjWWJkV2NVSk5nYjJkM2w5TEt4TG1B?= =?utf-8?B?dmhMdnd4d1N1WlZnMFVBR2ZqU0VUaEJ1SnVOTi81c1lnMXB1d3hDSGZIOW9Q?= =?utf-8?B?d203R05xUy81TGdVS1F6OGV0VXRhYXRiVExRYkI2YmpCZWl6UTNrSzlLQzdN?= =?utf-8?B?L1p1cGR5UFN6WjhXdjJlanBMVW9zay9lWjU5ekZYOUtvSXY4Vk5tdFRlSHQy?= =?utf-8?B?VlNsKzViSmE5Wlh3ZGJBYzJ4U3R6UnNaS3pZdGMzcDZITURwNzdIVm5Ga2FP?= =?utf-8?B?SUpEWDhVbldsaXdLUlJoT2NsamdQT0Z4alNkb3M4WmpRYndnbEQxUFZLdzNZ?= =?utf-8?B?Q3YxY3kvMU9iSjZjdWlkMEovcURheWhGUllmR2c2VDBHdEJZTmRTa2UycGVh?= =?utf-8?B?K25RVTdHZnZ0OWtQSFNPUktXRkFxa1ljSGVZMWhaQmVPR0VQcDBmSkRpWExD?= =?utf-8?B?LzU2QWM0a1JGY1RsRzBHbU1nZitaZ0hWMWZaMncweHc2cGNxV24wdlRCS3Nk?= =?utf-8?B?UWpkbXpYVDJHUmI3RXp0anJmVUd3WWdkSUpiTjBEeDREV0FJdnhmYVh5UnRy?= =?utf-8?B?b0twQml4NUdPd0lvZ3lRZC92LzVreGFRcjFBU0Y0eGVyWEFLYkhhUkMvOTlv?= =?utf-8?B?OTNtR2FSdE92TFdpYW9vUEpBSmY5Z0VXNmVqc1ZOSmNGMnllb1hmVVZCRGlz?= =?utf-8?B?WTNLdVhvRndrdDRKa0FEampDSmFneVlmanBvMkpwVnpHUVVEd3U3OUQvQnZy?= =?utf-8?B?NHgyVlE3Y3RuQVZQT0ZCWnQ1ZGRGYkpOMXY5MEgvUVJsNm4wMzJyNFJ4T1ZV?= =?utf-8?B?dzdydDIzZE1KczVjVW5ONUpkeWxCWmxyMTVvOHc4cXBQYnFIdUZhajQyV3Ji?= =?utf-8?B?Rk4wU3VYNnoyaDJhTXRUTEtoeFI4Z2wvQnBITmkwQVdBeVBVWE1oSWxXbGVO?= =?utf-8?B?SklwZXVLdC9uU1IvVm0xV2dkYnhhaEd1WFF0S0FTVFBobGYwM2xoeHQrN3Q3?= =?utf-8?B?YVRtWmcvMjdiTG81VjB1bUFNdElqR1FnWVR2WW02V2tlNzFJM2F0KzFpMXQy?= =?utf-8?B?QS96Q1dlUnVkWXFEeCtXS0Y0TjF6LzFGcnRtM1h5NVhtOVFxN0tDYjJCTkFh?= =?utf-8?B?aCtuVCtCd0FFaWtJUUVIQmpuNTlOcmtZYUJoS0RVSTBUb04zb1N0bnhZeEJJ?= =?utf-8?B?bjIweXpWaDY2SjBJeG1SRTFnMHUwQ0VDT0ZacDUxNW5PQ3pwVWZqNXI0d2Rw?= =?utf-8?B?UitDZ21KQk1Kd2dYRHFSTXgybGtwdTdqeXpPZlI3clhENjJVelhjaHpFYlFY?= =?utf-8?B?Y0JXTmxxZUpKeTJKYmVLZG9DMEhMZUM1QlN1eE5PZHp4dXZaNG1xMndJVlZ5?= =?utf-8?B?ODdOUExGemowSE55U3pia0w5dGhiSSs2UXAxYi9kZmFhSVQ3czB6NnVsY052?= =?utf-8?B?S2hCUEFzQmdIZ2d4bjltVTR5dGJqUmFjYi9OYmJyK1NFTXJ4WHh2RWNCbGUz?= =?utf-8?B?bWR3WGFUSjdROWpPa3NJSzdBWElGeFFaK0U0cnI0ZzRsUVI1MVA4QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d3bc744-a29f-4766-fe10-08de4f93de1b X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:24.7930 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Gf59uoOKB2TlGDTi0lxWvXzTleji1c6+Y+MrGLxZPZ6KdSfwv2ljdSs+bR8WwucFplPWtYIqcQC3T5ISPiVtsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 Move the channel-enable logic into a new helper function, dw_(edma|hdma)_v0_core_ch_enable(), in preparation for supporting dynamic link entry additions. No functional changes. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-v0-core.c | 128 +++++++++++++++++-------------= ---- drivers/dma/dw-edma/dw-hdma-v0-core.c | 49 +++++++------ 2 files changed, 91 insertions(+), 86 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 79265684613df4f4a30d6108d696b95a2934dffe..1f1bc8b8d04aff85ddaf0b077fd= 01a87ac54046f 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -318,6 +318,67 @@ static void dw_edma_v0_write_ll_link(struct dw_edma_ch= an *chan, } } =20 +static void dw_edma_v0_core_ch_enable(struct dw_edma_chan *chan) +{ + struct dw_edma *dw =3D chan->dw; + unsigned long flags; + u32 tmp; + + /* Enable engine */ + SET_RW_32(dw, chan->dir, engine_en, BIT(0)); + if (dw->chip->mf =3D=3D EDMA_MF_HDMA_COMPAT) { + switch (chan->id) { + case 0: + SET_RW_COMPAT(dw, chan->dir, ch0_pwr_en, BIT(0)); + break; + case 1: + SET_RW_COMPAT(dw, chan->dir, ch1_pwr_en, BIT(0)); + break; + case 2: + SET_RW_COMPAT(dw, chan->dir, ch2_pwr_en, BIT(0)); + break; + case 3: + SET_RW_COMPAT(dw, chan->dir, ch3_pwr_en, BIT(0)); + break; + case 4: + SET_RW_COMPAT(dw, chan->dir, ch4_pwr_en, BIT(0)); + break; + case 5: + SET_RW_COMPAT(dw, chan->dir, ch5_pwr_en, BIT(0)); + break; + case 6: + SET_RW_COMPAT(dw, chan->dir, ch6_pwr_en, BIT(0)); + break; + case 7: + SET_RW_COMPAT(dw, chan->dir, ch7_pwr_en, BIT(0)); + break; + } + } + /* Interrupt unmask - done, abort */ + raw_spin_lock_irqsave(&dw->lock, flags); + + tmp =3D GET_RW_32(dw, chan->dir, int_mask); + tmp &=3D ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); + tmp &=3D ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); + SET_RW_32(dw, chan->dir, int_mask, tmp); + /* Linked list error */ + tmp =3D GET_RW_32(dw, chan->dir, linked_list_err_en); + tmp |=3D FIELD_PREP(EDMA_V0_LINKED_LIST_ERR_MASK, BIT(chan->id)); + SET_RW_32(dw, chan->dir, linked_list_err_en, tmp); + + raw_spin_unlock_irqrestore(&dw->lock, flags); + + /* Channel control */ + SET_CH_32(dw, chan->dir, chan->id, ch_control1, + (DW_EDMA_V0_CCS | DW_EDMA_V0_LLE)); + /* Linked list */ + /* llp is not aligned on 64bit -> keep 32bit accesses */ + SET_CH_32(dw, chan->dir, chan->id, llp.lsb, + lower_32_bits(chan->ll_region.paddr)); + SET_CH_32(dw, chan->dir, chan->id, llp.msb, + upper_32_bits(chan->ll_region.paddr)); +} + static void dw_edma_v0_core_write_chunk(struct dw_edma_chunk *chunk) { struct dw_edma_burst *child; @@ -366,74 +427,11 @@ static void dw_edma_v0_core_start(struct dw_edma_chun= k *chunk, bool first) { struct dw_edma_chan *chan =3D chunk->chan; struct dw_edma *dw =3D chan->dw; - unsigned long flags; - u32 tmp; =20 dw_edma_v0_core_write_chunk(chunk); =20 - if (first) { - /* Enable engine */ - SET_RW_32(dw, chan->dir, engine_en, BIT(0)); - if (dw->chip->mf =3D=3D EDMA_MF_HDMA_COMPAT) { - switch (chan->id) { - case 0: - SET_RW_COMPAT(dw, chan->dir, ch0_pwr_en, - BIT(0)); - break; - case 1: - SET_RW_COMPAT(dw, chan->dir, ch1_pwr_en, - BIT(0)); - break; - case 2: - SET_RW_COMPAT(dw, chan->dir, ch2_pwr_en, - BIT(0)); - break; - case 3: - SET_RW_COMPAT(dw, chan->dir, ch3_pwr_en, - BIT(0)); - break; - case 4: - SET_RW_COMPAT(dw, chan->dir, ch4_pwr_en, - BIT(0)); - break; - case 5: - SET_RW_COMPAT(dw, chan->dir, ch5_pwr_en, - BIT(0)); - break; - case 6: - SET_RW_COMPAT(dw, chan->dir, ch6_pwr_en, - BIT(0)); - break; - case 7: - SET_RW_COMPAT(dw, chan->dir, ch7_pwr_en, - BIT(0)); - break; - } - } - /* Interrupt unmask - done, abort */ - raw_spin_lock_irqsave(&dw->lock, flags); - - tmp =3D GET_RW_32(dw, chan->dir, int_mask); - tmp &=3D ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); - tmp &=3D ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); - SET_RW_32(dw, chan->dir, int_mask, tmp); - /* Linked list error */ - tmp =3D GET_RW_32(dw, chan->dir, linked_list_err_en); - tmp |=3D FIELD_PREP(EDMA_V0_LINKED_LIST_ERR_MASK, BIT(chan->id)); - SET_RW_32(dw, chan->dir, linked_list_err_en, tmp); - - raw_spin_unlock_irqrestore(&dw->lock, flags); - - /* Channel control */ - SET_CH_32(dw, chan->dir, chan->id, ch_control1, - (DW_EDMA_V0_CCS | DW_EDMA_V0_LLE)); - /* Linked list */ - /* llp is not aligned on 64bit -> keep 32bit accesses */ - SET_CH_32(dw, chan->dir, chan->id, llp.lsb, - lower_32_bits(chan->ll_region.paddr)); - SET_CH_32(dw, chan->dir, chan->id, llp.msb, - upper_32_bits(chan->ll_region.paddr)); - } + if (first) + dw_edma_v0_core_ch_enable(chan); =20 dw_edma_v0_sync_ll_data(chan); =20 diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index 27f79d9b97d91fdbafc4f1e1e4d099bbbddf60e2..953868ef424250c1b696b9e61b7= 2ba9a9c7c38c9 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -194,6 +194,31 @@ static void dw_hdma_v0_write_ll_link(struct dw_edma_ch= an *chan, } } =20 +static void dw_hdma_v0_core_ch_enable(struct dw_edma_chan *chan) +{ + struct dw_edma *dw =3D chan->dw; + u32 tmp; + + /* Enable engine */ + SET_CH_32(dw, chan->dir, chan->id, ch_en, BIT(0)); + /* Interrupt unmask - stop, abort */ + tmp =3D GET_CH_32(dw, chan->dir, chan->id, int_setup); + tmp &=3D ~(HDMA_V0_STOP_INT_MASK | HDMA_V0_ABORT_INT_MASK); + /* Interrupt enable - stop, abort */ + tmp |=3D HDMA_V0_LOCAL_STOP_INT_EN | HDMA_V0_LOCAL_ABORT_INT_EN; + if (!(dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + tmp |=3D HDMA_V0_REMOTE_STOP_INT_EN | HDMA_V0_REMOTE_ABORT_INT_EN; + SET_CH_32(dw, chan->dir, chan->id, int_setup, tmp); + /* Channel control */ + SET_CH_32(dw, chan->dir, chan->id, control1, HDMA_V0_LINKLIST_EN); + /* Linked list */ + /* llp is not aligned on 64bit -> keep 32bit accesses */ + SET_CH_32(dw, chan->dir, chan->id, llp.lsb, + lower_32_bits(chan->ll_region.paddr)); + SET_CH_32(dw, chan->dir, chan->id, llp.msb, + upper_32_bits(chan->ll_region.paddr)); +} + static void dw_hdma_v0_core_write_chunk(struct dw_edma_chunk *chunk) { struct dw_edma_chan *chan =3D chunk->chan; @@ -232,30 +257,12 @@ static void dw_hdma_v0_core_start(struct dw_edma_chun= k *chunk, bool first) { struct dw_edma_chan *chan =3D chunk->chan; struct dw_edma *dw =3D chan->dw; - u32 tmp; =20 dw_hdma_v0_core_write_chunk(chunk); =20 - if (first) { - /* Enable engine */ - SET_CH_32(dw, chan->dir, chan->id, ch_en, BIT(0)); - /* Interrupt unmask - stop, abort */ - tmp =3D GET_CH_32(dw, chan->dir, chan->id, int_setup); - tmp &=3D ~(HDMA_V0_STOP_INT_MASK | HDMA_V0_ABORT_INT_MASK); - /* Interrupt enable - stop, abort */ - tmp |=3D HDMA_V0_LOCAL_STOP_INT_EN | HDMA_V0_LOCAL_ABORT_INT_EN; - if (!(dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - tmp |=3D HDMA_V0_REMOTE_STOP_INT_EN | HDMA_V0_REMOTE_ABORT_INT_EN; - SET_CH_32(dw, chan->dir, chan->id, int_setup, tmp); - /* Channel control */ - SET_CH_32(dw, chan->dir, chan->id, control1, HDMA_V0_LINKLIST_EN); - /* Linked list */ - /* llp is not aligned on 64bit -> keep 32bit accesses */ - SET_CH_32(dw, chan->dir, chan->id, llp.lsb, - lower_32_bits(chan->ll_region.paddr)); - SET_CH_32(dw, chan->dir, chan->id, llp.msb, - upper_32_bits(chan->ll_region.paddr)); - } + if (first) + dw_hdma_v0_core_ch_enable(chan); + /* Set consumer cycle */ SET_CH_32(dw, chan->dir, chan->id, cycle_sync, HDMA_V0_CONSUMER_CYCLE_STAT | HDMA_V0_CONSUMER_CYCLE_BIT); --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010007.outbound.protection.outlook.com [52.101.84.7]) (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 63382364049; Fri, 9 Jan 2026 15:29:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972576; cv=fail; b=grNEZqAZ6p991WbUga3KIR+ZqiEiRwpeITbYJoWysiXioBbXMU5YEE7TLnn28Z5//gNiX3+LDRYw0u/L57T6NfXCGJVfg9H3ENfqY5+/1nSFe39c/L5sy2UYXv2PyT8ytfHy0n06nlQCUgi4Liyx66fPSXVJYgzu814EqMMAiBU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972576; c=relaxed/simple; bh=w5ps2p9CujbZUsKjzla7w5em4bh2AQNtLiZah5if8hg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=qCI8FN4kZmf7E4rSKyaWVMrdZ/IkzGEm1r55YVMFM2sjDOHhM2qf5l3wATuKJp0GoGqj+9WxdQ0QIM/UY7QJGuJjSsCXdfZT7UXBzlkf5k1gIa3M6DD9KCri2s1cTvKLDl4aU69yeFKN9jFHL4Wze+XClJFwRq/wxYUxCPrxOjU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=HB7fJuuB; arc=fail smtp.client-ip=52.101.84.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="HB7fJuuB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aLuomOKLFgEFRWt/5nc24nIkeU5ZZ6gLUXXmdWpj6WIU70okX9bH9nGLKS9Vz4o2Aosz5qvg33HkBjxnbxdeoPxEp4kYA6E8zWRFhF6Txz5r0GfkLzz95zC2u0LKLtq3Rqttgy//kAybxEKePU3kiq6CJzV+Q+jdWjysnfMK2up9F2iW/li2zmP9xL37dwTnzA8GPO5Iy0Tvpvjl2V3HllSI/gmFgR6or5rP4VVsYWFxTJRscmYjUSvKnGoK4IWn5/MiRla58Efrd2Swup4Rme7Ou10MWdUv2cHC7Pkjf2RmmD2DlPCHlXykmRzKFGyILidjZLO8krvzOU9QB19qpA== 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=XXVVOurEHaeLMeflZi1dd2ZRXNNs6nwImwEsOkr5VFI=; b=CwYKyRLlI223mxoQ8SpANq1K2zuwjLbDiiZVA2KeR+nVws5xPXVd7o35pOaRsfxIXexn+VgtWjanOQtd+ayfS7pMs/2PCwqEVhMclRZJCc1utvGql5z9CJ9mJTTsGkWuYc2yvn8M7M0/qG9EVpsfB6/OWq2Hg/1Z8VfD+DcICjIJFXmrAtp/l48RJA+OLD+dc0f+6JL/LM6sWSUT8slMT9QplS967OiXro6CK1tEDidTGvIor+25Du55uVJxcdg039uoWI1NKMka5PHOQldljP/3dA2ZaYir/VRrYeY/vqSpq7GtWyVQd6lk8ttxk67QMNxcJn98kg25dJ+RA5iX5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XXVVOurEHaeLMeflZi1dd2ZRXNNs6nwImwEsOkr5VFI=; b=HB7fJuuBXaGAt6LUCS5Y3NDUzFxgwNQmU99FbEaUnIwNa9IPofOhideO8jTvVfeymjpv8qy49J1S5ImkNFgX6F/6Fx0BGzPATmPicPsEU4Kh2hVLWhbF2JU/bt31qj1B4RTuWz9hzr3CZcOnFWFvvxm0suTnieIbAG+yaNlvr5HaoPcK8vh9ZBStm3BtpxJ463+93P4Y3O+Na6HKycrlSiJxog+rUrEZhqaGRuTMzWevy3EuiXoWShTECmvkWYPNpnsrgkoyA3t2OrQBBFYBB/XZlUTtME1/3plsx3JASBGE0GR/4mQ/MMVU8P83il5uZDZeQrDBf6wcJWq0I5CcVg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:31 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:31 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:28 -0500 Subject: [PATCH v2 08/11] dmaengine: dw-edma: Add callbacks to fill link list entries Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-8-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=6285; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=w5ps2p9CujbZUsKjzla7w5em4bh2AQNtLiZah5if8hg=; b=6qOa94gk2Fz5ZuhZTCShYgywQCoKiwZQdW3tORzPEgFuJFsN6+tJ7DqqBGPLFxYQSMH9n4GvY 0nxOdfId7zCAXX4vxbCTGQ2qRyeBVru+JXhiy0bv5RJscSn41Jtbgxw X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ec66f8f-5f0b-4d84-83f9-08de4f93e166 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bEljRzJIT2JWY2p5MVN2VkxiVjBHZVBsY29GZ0VBWHVpUFRUUkdBcm5VdExU?= =?utf-8?B?QXh2Y282bzhPN2o4MG5mb21vamI5aXQxTzYwNGFyWVV6VWZCd3FOa3ptaWhZ?= =?utf-8?B?cjNybCtPa25Fdm9ndVZSdUVlckhtVGR4VkV1bTE4dWVRUFd5OFhVeS83b2NV?= =?utf-8?B?NmtNblpKK0V2dVEzUDFFc2l6Qk9GYmJTTG9GbmdQWnlQaGFMQjB0aXJzQ2dk?= =?utf-8?B?Rno4SlozMWZqTVRjRTFlbEY5N2lZNncvY2J3dms1bVJ0enVSS3dXTHFPUEMx?= =?utf-8?B?eTZOMlJVcFpGUUEwT2RaSVpVcVFEL1NYbDZhMTBSQ1hkQ1V3am1PajdPVHp4?= =?utf-8?B?cEFVSUNnY3Vhb0F3c1ZCUXl2dE9PblViNGpRcjJrc1BWemxiSjYrVFowc1U3?= =?utf-8?B?TUlzMm1mU2xYR0F5ZEJ0akhLN1JkVGR3TFNGK2k4dDhobEZqWHZRMjZ0aEd0?= =?utf-8?B?WXMwc3NXZmdlNm9CUHd1TzRDRHFsVnQxMGhxU0NBWXdOTHlvK281a2lsZ2dr?= =?utf-8?B?c0JRM28zSHNWeEVLTlBTYjhkLzBxTVlWamhaWjRNNHRmSTlpWGo2MitGU3Yr?= =?utf-8?B?aGFLSjJBOXU1WXFZWFZHSE9vNStKRFNrUWJsSEpodGpCcU9rVHhrVWVpM0Ex?= =?utf-8?B?cmZXMHBvMHVjYVhEcGVWMDd5NDIrdkxlUDlNRmptek02VVZOTThpYzdyTmxm?= =?utf-8?B?WENUenpCdTU2dE01UlB3RHc0OG5LSFZML2J5VXVnVDkxa01zdDR2MFdZZVFF?= =?utf-8?B?RWZFRHdKR0k5MEExR2pXSEp3dGNxdjlmb01TL3c1cy9teFBPMEM3ZXpDVG1G?= =?utf-8?B?dnF1b2haSkNZVXZxMDVJaFEvTjFMdVJNeTdmNmY5blQ2dlZFdnR0WURYN0s3?= =?utf-8?B?K0M1OUV1Uk8rRFJxNTFJc0VsWGM5eHR0QmZObFBoeFVxMWZkL0luUTVFb21v?= =?utf-8?B?VGp6V3h4Zlc3Tlk5SWNtVkNQM3Z3UVg3bmNzSXEvdHFKYlFvdE1BN2xBSFFS?= =?utf-8?B?SEVobXdaSnF1RGk0Qkg2OFJKVjNIamY0WXFBZG5HdEw3dCtLcmhCcldtdFN4?= =?utf-8?B?cGVXUlJ2SUFtcUJpZ0tlSUQ0YjNwc1V1b3VGRm10b29HNFdvV0pzUStSMTNi?= =?utf-8?B?MzNwb3ppQUZXZnpzTi9sY0FTMTRYdlRudlFnVnNremdTdkNXZVNFYUJpUkJm?= =?utf-8?B?c09IRWs4Y3BWTHFQeWZrZnVkWllhT2VUZzdGVTNOZ3JlWkQ1VDVZc3RNaFVV?= =?utf-8?B?akF1ZXlPZEJ4L24weUxuUzVrSy9JN3JjS085ME01bjY5OVdvc0R6RWhQcHRP?= =?utf-8?B?bTdmZFUvLzJHVmRORFpQV1FUL3c1M2VsVUpPLzdmN3UzQkp1TFBqcFpOcXVJ?= =?utf-8?B?ZlptbnhVQUFoYWFWVkhQenVCNXhpWTFUcXQxSVUzbVpYYmU1ckhFVDlvS2lh?= =?utf-8?B?dUtDODhaY3Q4cW5iSlhyQWdKQVdPeXY2aEtlaFFhNnhpKzVGSkJsWU9Ebk9E?= =?utf-8?B?QlFoeGtKRDg1bkhGOGVNMjV3NTEzZ2ZiT0RWRkdkVXBORWsxc1MvUmh2SkNL?= =?utf-8?B?U2xmOVdmVlpCYSswcUVmZ1dsa3FCSmRqbmZGSnpIbHdZdTBScHNCbjU0eVN4?= =?utf-8?B?U2xSWUcrWlRaa0NTckVKUHh5ejdtbXpIT05nQTlUc3JJMnk1WFdFK0hFcWx4?= =?utf-8?B?cTF2SktHdGVWSWxwRzNCWU04VGt0dGpWOFhLaDkwdEdhbFZNdG1NcE80WDBX?= =?utf-8?B?Z1UxOGZnREI0M3pCTFFuRlM0Yk4yRUZvaUJSaE51TkZHYjgyMHpwS2dIcnd1?= =?utf-8?B?ZVhIVStOUnJwWGswWEJaaGZ5TWVKd1pOQVpqMWlFVTJLaU9RZFh1MElmemVw?= =?utf-8?B?UXZLVE1KNEJURXQwY3JLWWxJK0tQZlZiYXg0b1hIZHhQQld4czRUeHcxZXUz?= =?utf-8?B?WjBaeEk0T2xiakdsN3l4SFVMMXQ3alhVcnpRSXJMRTJwMEJpeEFTQnFFY0Y0?= =?utf-8?B?NUxhMVVnMGY1SGw0NGtKQ0ppOGxCTEFzOUhaYUFzZ3RSSkpLbW5FVi9FMUVV?= =?utf-8?B?OW40eENkdVYwbVdFZ2xDeXg0eittdVJ0OG54dz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ejFjUmM1aXhFVGlKY3lGajhyaHZtcnM4WUR6eWZvRmY4VkM5NE5zWHVUZURq?= =?utf-8?B?RCtKSHZ3ODFlVFdJamxhWmZQYS9FKzVpV2NXU3liK1A1NFVhZ0VqZ1B6NkZB?= =?utf-8?B?VDNSaXBhNXA2ZHRkWlQ0SnJZR0VoY3BUaURNdUVPN3RnTGpaM1cvRVpjdlUr?= =?utf-8?B?d1phR1VDZW50NmgzSWRaVmw5ckEydFcwNmxpeVFTMjYyWWsrdC8zZGFpNDdB?= =?utf-8?B?bnh0QllpUUVRTWtXdC9UNjdQTWJKVHRkTUN0UEVyUXk0VEtxajhVMHBMM1Vm?= =?utf-8?B?WGh6OFZGL2JkNXBWTFZVYit4M3VZYXhDS2tZeGFKM0N4QnNyQThPSXBDalk1?= =?utf-8?B?cFd3cDYrL1RKNHlGUVhkQmh1UVNzQklaV0tTZyt1QVdxT2lWU3R0bTcyMko2?= =?utf-8?B?cjU2d1gzd0NaZjdibmMrcDFndUFqbk1FQ2I5aThXKzg0WGtWWHp0czh6ZDR4?= =?utf-8?B?YnhQdTBQbmcza3E1ck8xMVRLMUg4RFVQSWxxWEhKTlZnVXRuUVFweSs5dlZq?= =?utf-8?B?SlJCcVYwRkYzUVQ4VW5uMm9nZ0t4LzcxQmxGa3hzMlpuSkdkUVdUdHZjZ3po?= =?utf-8?B?R1dMSUZWcFA0SWN2UG9kWVBOUzVUNEtZSzZLL3NFZWJFQmVCSFY4ZXJlUGxG?= =?utf-8?B?TTBoOWlRM2dOSURBQWRUaWtPREl1Nld5K2lhYWd6VjJaQVQyV3BsaFFnalM4?= =?utf-8?B?ajg1OStFUE1CSDVhQjhJeG1LMWNYSU9GUEIrWEN1dUxsUFlxOWNzeGRyTUhS?= =?utf-8?B?eWlpMVZPSVZINU9CVXhHai9OajZnUGhnbTVBbjhaUVJQb0pMVXFWSDVDTUwv?= =?utf-8?B?Vkc4Vm1VZUtreGRVNHJyZXBMV3Zxakp4bXUxRkNjcFljZ3JCUFRaR0FnSVFu?= =?utf-8?B?K1B1TWVlcVhCTzM5S0JTeVBtT0tLVmoxZXg0NHlkZ29IVnlJSGZHblh3dFZx?= =?utf-8?B?bE8zOVNRbnhUSDBVVVQ5ZEQ3dnhoWEV3QTBUbG1UUU1Fa3d2dXZVemlZQWFv?= =?utf-8?B?TUJ3N3dtUm1uRXp1RWxZRE1pVy9rWXVVOWdtOWVjZ2hsc2JIRld4NXBoOFB6?= =?utf-8?B?YW5TMjlaMVVBMUxoSkRzRE4yTW9RWDNmcHRYVDM2QjQ2ZEIvY1FOOUN5aFFW?= =?utf-8?B?ZzZGK0hwdytGQ3BkSS9HVFpMMGJkY3NOMDRJQUVxdi9YcWJHc0I1VjBZK2xD?= =?utf-8?B?UkJKaXV2UFNGejczMnpqdDl4ZXMrWC83WEFmcEVFRVJNdEQreUlXK0F4dXdq?= =?utf-8?B?L3JiUWVib051T2ZSQ1dPcHhoR1hPRnU4RWFzTFFHNDVtbVY2d2NUUXkvSzV3?= =?utf-8?B?VkRmTE9LSUxSNXcwaTlDK25jdE9zQm5NUzF6S1p5L3BWQllvb3lMSEM1UHpK?= =?utf-8?B?VEZRWkRTd25yYURSR0NlcnRzOEEvRTdlVzFSYkk3TExkQXNhYmhIYkJ6VzE1?= =?utf-8?B?VmVTbU9NQ0RFcEFZVU9iRENwS3ozamJFY2J5eGlRcFJFWXNoNk9Nd2g4YmJB?= =?utf-8?B?UW5VVjhhcHA1VUN6bW5FRDhHVFhDZ0p3c2lXVFJ3NW1veTljMXJwbG9kMFVV?= =?utf-8?B?MnRLNXd5OCtkYlN4eEtzU213NDFjWHpZRXRIQkpSeFZGMlZhZVFwMnZ1Qis1?= =?utf-8?B?ZDY5Q2ZSdDJqZmYreGwySWVFNEhMZjVKcHZqM0lCNEZwQ21SYkc2VklkYk1n?= =?utf-8?B?WGkxekd3WGhQQVg0TjBnKzlCM0hucVAxd3lFclRyQjlxMnlxbUh4V0N2NXhh?= =?utf-8?B?VEZranVIbC8wVmliS0dvNVJhT08zQVpsZE84dWNQakpEakNWUTVBUVM2Wktr?= =?utf-8?B?dXNNenFISFY0MkJEdEh4djlJOHh4UkhHUmFsN2cvc1AzTHN1Z0ZOb0RYeEI5?= =?utf-8?B?cnNGZjFzM2Yra0t1U1FqWFVGMUFNSk5IdmYrOG5zU3VBVGNzWUhxRko0UEp3?= =?utf-8?B?TE16cHROMkxob0Zwa0xlQm5QZHk5M01hRklRcGtXVllTWHRYUWhZUDRzMzdK?= =?utf-8?B?YjZUeU5PMGFhclpiYS93cWhsRVdmREVmSUh1ekgwZmlYT1RFZWQ1K1BLa3Rp?= =?utf-8?B?S1F3Tm5GdGJ6WWorbThxRmJqNG9UUmM5bld0ODBsdGJxbU5sWm5GSDZURkQz?= =?utf-8?B?a0hGZlZnam9MQ001dU45WnhhWnRiaGQvR2ZzN1RDMWpmT0duejRWTkI3K1Ar?= =?utf-8?B?SStBTDVxVjB4a3hmaWdRTnNJcTJsM0F3TTZrR1Y2TGRvSFJDTWgvdERrNk9y?= =?utf-8?B?SWNJUWR6L29NejZuY05Wc3JlakdzcVpWeXJqMFhRVTgrbTFVVTM5ZlVWamln?= =?utf-8?B?K2dLd3hScm9iRGVXMFJEOWxMT0hUdzZ6akQ0T213TXBQVjZyZWZTUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ec66f8f-5f0b-4d84-83f9-08de4f93e166 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:31.1956 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: d7DrVUP662LRqMOkI7w8EryxZBlsybffmCHaFKF/ogCgUfQVLhl5CmvksATmYR4cIyF6I+ye0OKQ7USVPXibqw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 Introduce four new callbacks to fill link list entries in preparation for replacing dw_(edma|hdma)_v0_core_start(). Filling link list entries is expected to become more complex, and without this abstraction both eDMA and HDMA paths would need to duplicate the same logic. Add fill-entry callbacks so the code can be shared cleanly between eDMA and HDMA implementations. Signed-off-by: Frank Li --- change in v2 - update commit message - use eDMA and HDMI - keep inline to avoid build warnings. dw-edma-v0-core.c also include dw-edma-core.h --- drivers/dma/dw-edma/dw-edma-core.h | 29 ++++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-v0-core.c | 46 +++++++++++++++++++++++++++++++= ++++ drivers/dma/dw-edma/dw-hdma-v0-core.c | 38 +++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index e074a6375f8a6853c212e65d2d54cb3e614b1483..09e6b25225407f5bacb2699cbba= 26d1bab90b0c7 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -125,6 +125,12 @@ struct dw_edma_core_ops { irqreturn_t (*handle_int)(struct dw_edma_irq *dw_irq, enum dw_edma_dir di= r, dw_edma_handler_t done, dw_edma_handler_t abort); void (*start)(struct dw_edma_chunk *chunk, bool first); + void (*ll_data)(struct dw_edma_chan *chan, struct dw_edma_burst *burst, + u32 idx, bool cb, bool irq); + void (*ll_link)(struct dw_edma_chan *chan, u32 idx, bool cb, u64 addr); + void (*ch_doorbell)(struct dw_edma_chan *chan); + void (*ch_enable)(struct dw_edma_chan *chan); + void (*ch_config)(struct dw_edma_chan *chan); void (*debugfs_on)(struct dw_edma *dw); }; @@ -201,6 +207,29 @@ void dw_edma_core_ch_config(struct dw_edma_chan *chan) chan->dw->core->ch_config(chan); } =20 +static inline void +dw_edma_core_ll_data(struct dw_edma_chan *chan, struct dw_edma_burst *burs= t, + u32 idx, bool cb, bool irq) +{ + chan->dw->core->ll_data(chan, burst, idx, cb, irq); +} + +static inline void +dw_edma_core_ll_link(struct dw_edma_chan *chan, u32 idx, bool cb, u64 addr) +{ + chan->dw->core->ll_link(chan, idx, cb, addr); +} + +static inline void dw_edma_core_ch_doorbell(struct dw_edma_chan *chan) +{ + chan->dw->core->ch_doorbell(chan); +} + +static inline void dw_edma_core_ch_enable(struct dw_edma_chan *chan) +{ + chan->dw->core->ch_enable(chan); +} + static inline void dw_edma_core_debugfs_on(struct dw_edma *dw) { diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 1f1bc8b8d04aff85ddaf0b077fd01a87ac54046f..7c954af7a3e377f1fb2a2502793= 83af4fa0d8d3e 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -509,6 +509,48 @@ static void dw_edma_v0_core_ch_config(struct dw_edma_c= han *chan) } } =20 +static void +dw_edma_v0_core_ll_data(struct dw_edma_chan *chan, struct dw_edma_burst *b= urst, + u32 idx, bool cb, bool irq) +{ + u32 control =3D 0; + + if (cb) + control |=3D DW_EDMA_V0_CB; + + if (irq) { + control |=3D DW_EDMA_V0_LIE; + + if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + control |=3D DW_EDMA_V0_RIE; + } + + dw_edma_v0_write_ll_data(chan, idx, control, burst->sz, burst->sar, + burst->dar); +} + +static void +dw_edma_v0_core_ll_link(struct dw_edma_chan *chan, u32 idx, bool cb, u64 a= ddr) +{ + u32 control =3D DW_EDMA_V0_LLP | DW_EDMA_V0_TCB; + + if (!cb) + control |=3D DW_EDMA_V0_CB; + + dw_edma_v0_write_ll_link(chan, idx, control, chan->ll_region.paddr); +} + +static void dw_edma_v0_core_ch_doorbell(struct dw_edma_chan *chan) +{ + struct dw_edma *dw =3D chan->dw; + + dw_edma_v0_sync_ll_data(chan); + + /* Doorbell */ + SET_RW_32(dw, chan->dir, doorbell, + FIELD_PREP(EDMA_V0_DOORBELL_CH_MASK, chan->id)); +} + /* eDMA debugfs callbacks */ static void dw_edma_v0_core_debugfs_on(struct dw_edma *dw) { @@ -521,6 +563,10 @@ static const struct dw_edma_core_ops dw_edma_v0_core = =3D { .ch_status =3D dw_edma_v0_core_ch_status, .handle_int =3D dw_edma_v0_core_handle_int, .start =3D dw_edma_v0_core_start, + .ll_data =3D dw_edma_v0_core_ll_data, + .ll_link =3D dw_edma_v0_core_ll_link, + .ch_doorbell =3D dw_edma_v0_core_ch_doorbell, + .ch_enable =3D dw_edma_v0_core_ch_enable, .ch_config =3D dw_edma_v0_core_ch_config, .debugfs_on =3D dw_edma_v0_core_debugfs_on, }; diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index 953868ef424250c1b696b9e61b72ba9a9c7c38c9..94350bb2bdcd6e29d8a42380160= a5bd77caf4680 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -287,6 +287,40 @@ static void dw_hdma_v0_core_ch_config(struct dw_edma_c= han *chan) SET_CH_32(dw, chan->dir, chan->id, msi_msgdata, chan->msi.data); } =20 +static void +dw_hdma_v0_core_ll_data(struct dw_edma_chan *chan, struct dw_edma_burst *b= urst, + u32 idx, bool cb, bool irq) +{ + u32 control =3D 0; + + if (cb) + control |=3D DW_HDMA_V0_CB; + + dw_hdma_v0_write_ll_data(chan, idx, control, burst->sz, burst->sar, + burst->dar); +} + +static void +dw_hdma_v0_core_ll_link(struct dw_edma_chan *chan, u32 idx, bool cb, u64 a= ddr) +{ + u32 control =3D DW_HDMA_V0_LLP | DW_HDMA_V0_TCB; + + if (!cb) + control |=3D DW_HDMA_V0_CB; + + dw_hdma_v0_write_ll_link(chan, idx, control, chan->ll_region.paddr); +} + +static void dw_hdma_v0_core_ch_doorbell(struct dw_edma_chan *chan) +{ + struct dw_edma *dw =3D chan->dw; + + dw_hdma_v0_sync_ll_data(chan); + + /* Doorbell */ + SET_CH_32(dw, chan->dir, chan->id, doorbell, HDMA_V0_DOORBELL_START); +} + /* HDMA debugfs callbacks */ static void dw_hdma_v0_core_debugfs_on(struct dw_edma *dw) { @@ -299,6 +333,10 @@ static const struct dw_edma_core_ops dw_hdma_v0_core = =3D { .ch_status =3D dw_hdma_v0_core_ch_status, .handle_int =3D dw_hdma_v0_core_handle_int, .start =3D dw_hdma_v0_core_start, + .ll_data =3D dw_hdma_v0_core_ll_data, + .ll_link =3D dw_hdma_v0_core_ll_link, + .ch_doorbell =3D dw_hdma_v0_core_ch_doorbell, + .ch_enable =3D dw_hdma_v0_core_ch_enable, .ch_config =3D dw_hdma_v0_core_ch_config, .debugfs_on =3D dw_hdma_v0_core_debugfs_on, }; --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013004.outbound.protection.outlook.com [52.101.83.4]) (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 5C5A9363C73; Fri, 9 Jan 2026 15:29:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972584; cv=fail; b=s689ukgvQXCj0htEp07sWh5uilsdZq6FkpjvSGHfEflZeYSBpw7jWZPN4Bc9yjsp+UTHMsG8HaKY4MBRpsTVmfbYdBYQuO0mDBRBQLd4WNC/f/z50LhtjkcsENwbrzFy5eoyKb2D309ecHYpNbTdB00EIJtAqERbKuZB3XC9XHk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972584; c=relaxed/simple; bh=puAsIdSpIkHkgRCiWKpN7EldmeyyFMebVkNcAtZFFqM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=nN/atYfv3UvGtG2f4YeUIc4xk182TvmIabgsHOr5Cdfa47/eL6+j0DZqxElY+ymawYtHRcB4FyDumEr10sHdzSL0PBc2CjRTOzyOpv3Lt3KmxWwFTJpC5lxQNaEzzHHgoS7VotKgFBxLubDxiem/g7hZNzo17NF2+Id1wB3dE+0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=C2FL3E5s; arc=fail smtp.client-ip=52.101.83.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="C2FL3E5s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gSiSD5Up2PHf7pYWkA5/2/y3a3xRTHXK+gDG9vX+HoCEWp3/IklWCI4ir3Lg3iI4NhaLmHIKtmbDCnPYME9WsqNnA6lCAXdRxDuugqloUHYqgCEWn7sklS5HlXEWnMCfXfC9dRFbFv1RuTnj5ZwjBV8dji76Kjzwp2PtD/sQfVTvtVuqkmt7MD6PQ5hvAAGfINWGrqbVnFk5Ly39vkdeVu8yKXmLSce6/klz0rqK9MpqMWtoZfMl73Eu29elF7VaycxlUPaPJt1tYeBRAe4b/Ee7sCTOLF3MH1QGedvDTs2eQ7fn0ZhrM/11YfTtMZFhdEc+2/je3l67xtyEbTzf1g== 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=1jlJ41SuVri7IZ1zZP3mqwB9THPwM4myTBlaJoJrc4Q=; b=hHPh3xaHl72UtLr6BZEVXnpAngdy8PgNDr2w69Mg2aKJsWsnU5G/i2G49sjQdruOantOj7vtnGdTFgKktOgOlu9GZ7vNK95phUX7p6O/oIYILQB9X6KaRsl5I6pehbKSL9cvDJE8RD3RDF2RBV8B4XMk0dlWmtmZe4616GM7x6IZz+f5Isz0lvQrDj9FBvKjnRt2uPb+txGPTZkVBrgwk5VOFJBE0H7aLtH2V/vLrEu2ybiMc+pOswcJIu1MyonkMYxlaui3oSE3uj5GNEZRqZ6zpqDigWwv7FRF8RNnPBPeQ2jnm6LTTJ+PoWOWy21BqeL3ox5BYqrCcPo+3JpV+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1jlJ41SuVri7IZ1zZP3mqwB9THPwM4myTBlaJoJrc4Q=; b=C2FL3E5sAo7+l4qqW6sfGSkIk5JeUUGoMARrH4lrb6hIHmKF8FP6c9Bv748iMsq6CoTEp2trU3pXHTXN6YC9obm5F1xHneu2OZUlFJMswwA67lwCrwEwHQaR0z/KzC7jJiZOQWYR1iQE1vV3x9cT9tV4FMghM2X8XoQa+U/hkn1rkFQ6K7hLvbyJvsb3zGQlrTig4STwEXjpe+1rIvn2LEoUqjMsb0GUaa4wRyM/80bSYRKf7BAxw3g5iW4iJaL1QexNkuQdLwvKs5ZoXS06QDNjNKSndAvJJFYKOhF6k33i9fPmNYT5HCjCrrIJCJVRYuEdzzWJV9EuVa8zUtKDLA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:37 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:36 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:29 -0500 Subject: [PATCH v2 09/11] dmaengine: dw-edma: Use common dw_edma_core_start() for both eDMA and HDMA Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-9-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=7784; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=puAsIdSpIkHkgRCiWKpN7EldmeyyFMebVkNcAtZFFqM=; b=PP5UY3X+SzxgkUni3NvgYt3053KpFbqEBJU8/OH6C9rcnXNPs3kC0uC56qXohwiquOv32xvFS RM3UD5vfIU3AphUmnrmisRt2PL5IExOk7M2hFvvf1fSfsJ6Cm+fF7fK X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 97d12518-94a8-4ec4-a99a-08de4f93e5be X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?d011emxGRE43aTBZR2NsMWpWYmpKK2dOY3IzNk9nTGllWDE1c1hWOHd4dXhJ?= =?utf-8?B?Z09RWGpvWU8rQTNTc3BQcUoxNjhYRTMvenJ5U1Y4QjQ4dXNXT2Q5STVzeVNm?= =?utf-8?B?NWY3VjFWaGhXKzJDb1g0RXF6cEgzcXZzdG41NzVUSjMyQmNjaXpPMmxMOUZx?= =?utf-8?B?UE9XbjJwaW45cWVvUkpMTGdmUksyUUNibHRrNlIzUTVYVzVtOFlUNFFCZ2lU?= =?utf-8?B?bjhJMXI1NjlTaVRXN0VyRVBDNEc4ckRjc2tvdGY3NSs5MGhRalJjOFhYanVD?= =?utf-8?B?dUtMTGtCRjNwVXZ6b0ZYaU5TcXBKekpqREs0VlI4NXMxRTVSajBDd00vVW94?= =?utf-8?B?bjVKcHN1Snh1Ym85R0Z1R3BwK3M0WXM1N1RSUlFwTitqZVl4WWljTm1jSmRr?= =?utf-8?B?b1o2bkFydzdrYWk1U0lBbzMybVdXc2N6U3Fsb3dYYlp2dUVreUNFTGpKaC9F?= =?utf-8?B?RWM0TGljZUs2Tk8rMDlDS3VlYTV2eWRrVjJCeXNyeGI1V2lJSVROMDNGeWpu?= =?utf-8?B?SDlOeG5JMGZGMTBBTUQvcnFQZkFqUEExWFFib3h5VE9sdXFqUkJIMU9jMzAz?= =?utf-8?B?T2tSc0VFMUxPU3J1R1BueWFRcVpjK0l1WHkzQnZBaTRHUnRWYzhCTWVURmQ5?= =?utf-8?B?ODZNbVNTblR0RDVjNTVUSFZGZ2dJaWtvcDYrSm9NcDVueDhhdWtOUnN6N0t4?= =?utf-8?B?QnZ0K09kVEtNQlowMDlRanE2c2RPZmliZlI0cHV3eDBWRUt5dElvcU5TRllB?= =?utf-8?B?TDZMQ0RCMXQybFduZmZsbHJrTERJR0syemRiZDkxWmsvN3pBSFFGb3VNRHBa?= =?utf-8?B?WjhmdUlCQWlnNjBPZFVlVHkzMHluUGRjSTdIM1VFKzNJcTJVMWt2cUZsQnFl?= =?utf-8?B?SHB1aVZTMUZVQllwRlFXUmZZWkhkdm11Qm5oWHFwVjJhR05KbVg2UmpyaHVO?= =?utf-8?B?aVJSaWQ3eHk1VHZZYmFtenR4azFNNTdLdlNkNlkwZ0x3Vmg4WUloc3MrWVlq?= =?utf-8?B?b3FBMThIUVJtemV3WHZJS3hCcnRaejByZkNoYUhqNXNCemMxc3Vsalh3TlFJ?= =?utf-8?B?NkhaNTRXUUl6VkZXVDl5V0ZHcEdZMUJEMjB5UGlzTmpoNlJQbmtCK2FUWGoy?= =?utf-8?B?Y0xDaVRzZVIzWGNXbHZYT0NCQzZabzhDa1lyYWRzWUNVQnozL2w3azlpWmpU?= =?utf-8?B?bjJNdDNFelRwMWsyaFRIZnpVbmpJdVlOQXEyR0JTZEdFenF0V1NHeHBEbnRr?= =?utf-8?B?SXA4SzBZK2tyZjRpRzVkUmprZ0ZwbnZieWg0RWdsQWNNMitBVkpuQnZvbWsy?= =?utf-8?B?cEZoUnhFS2hVN2FGazJuR0sremYyeXYvYlJOMVVKMHpzWHhIa3ZVZzRxR2NZ?= =?utf-8?B?a3ZsVW9XSTJvQ2NOMnQ1N25jZnNDUkZZSXZsV3plR0FBYlZEdUQ4QmJCb2Iw?= =?utf-8?B?U0xURE5pelgwQlI4K2Y2WjIvc2VldHk0QUFhR3kyZjFXQ1ZqV0pUcnlCTEZp?= =?utf-8?B?Q29Ra1R6NmwvRHFlK25pR2lkMk8xMTRoRlY0TTZlQXJtVWFKQ3I4Z2dnMFhy?= =?utf-8?B?R09lcEJZRFpZV3VsS3dScVZGdTZDNFRUSTFsRTY0elFiRTZRSnNlSlJmWlJ0?= =?utf-8?B?TmNMRjhnRGFBeC9ZUnpTeGVMMHJlZldNQ0xEN3BPSUpYeDhHeFJDWVl5K2tm?= =?utf-8?B?aGhISVRhVDRpSGJLbjEwWm1HUG5DNGI3M3BPMXMvMGI1YWt0VWJOK1NBZ0lX?= =?utf-8?B?eDgxRVpUc3NKSVhnZWtxcHE2bE81OStCelg2aWs3eXFQRTFVUGYvQ3VVOEhs?= =?utf-8?B?eG9KZ3d6TkEweE5YR1J2Ti8zYkx5bi8wenRzSmc1bGt5WW05TzMwVHBqaUZB?= =?utf-8?B?NGF5VXd6bWVVM3hQOXVHMlFSUHJpUmVpNFd5djRzSG1VdWFEa2dhNllaMkJS?= =?utf-8?B?UlduY1hmaE9mZHFVM2dEQ1FmemYrbzl6WG0rNHFHZzc4K0R6WCtPcHBxRmVL?= =?utf-8?B?WUsraWtiV1pSUGc3MmlsOVU1YjQ0dW9tYzFvM1RFZ2ZYUUxKLzBmdXJQUU4x?= =?utf-8?B?NDc0Rlk4RHIzeUJWdGdBUi8vY3REK001QWtuQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S1VJbnZPRHFtYlU3SHluSVp5cXptZCtwcFdicjlsakZwNmprTjdUSUd6cDAy?= =?utf-8?B?eGEyeW4rRXhmTlFSZnZKYXRsU0FvQVA4MTdJb1pTY3kyQTg0eUJwZ0VFcm5m?= =?utf-8?B?QWFLemRIQkRpZGh2ZS9uZmZzNGl0VGZLRG1qaVJ5bEkyZHdtTTFpaW1TSnRU?= =?utf-8?B?bkZCam9oQWt2TFRTcGhsVFpIRThhL3hGUVdidXV6enJYQ2htUHExRmpMYmg4?= =?utf-8?B?YkNhMytxWkMwNGpLaUlNaXh5bkp6SGNsb2hPdVlIdFFKMVhxckxHYy9Fa3lj?= =?utf-8?B?S0dMZXU3OEY5YTJudkV4YmpTOVFWSTQ5ZmNVREY5WloxaEtFbnlXc0ZaeklL?= =?utf-8?B?NGZFcituc045ZmtKMFhLLy92aVBDaHcwN0RXbDRTbGt2OU5wRWovcjFHeUtU?= =?utf-8?B?dHZqaDQzYjdTRExHNWVnWTMwTUM4MFRVZkdvTmtVTUVreWJhYnVGMzNGSWpq?= =?utf-8?B?Y0FaOVZlS0hJRjBySFVNc2Z3S1RibFlScVowNExPcFBEUEdDNDR2Sm1pTGN3?= =?utf-8?B?Z2ZHTDRWbjNyNEJXN3oxRmkrKzY3SVQ4OTdSVE5xMVlBTEtRRVNTYURPV2ZP?= =?utf-8?B?M2dMSFl4Uk9JOGoyalcrZ1lVdlVoS25FYkd4Qnp6Z2xtdW81ZTRVZUIrU3Z4?= =?utf-8?B?bTI5SjNOSzZPaE9OTjlNNUtMbnoxZk41bjZPZi9xV2Z3TkxYYkNjVUdBVUM5?= =?utf-8?B?eUNZbk1qUjFiYU9SMGZxRVduQ29GNEZabHByU3JYcEt0OFRJSmdzK29HK04y?= =?utf-8?B?VWorNHQyZlpGcXlzeVg1SGxYakh6azg0WnlpTFZxTWZhd1p1WDVhN25XRUta?= =?utf-8?B?eVQ0UlM3cWVYZTduTUNXdlp0VmhMTEsxeFRWSlJaY1BhSXF1QWJRaHNrbFVR?= =?utf-8?B?WVZYTlVEYkxyWE53SFRpM0ZsRVBFMW84NU5ZcWk3aU9nM3k5OHMyWHpRUXNs?= =?utf-8?B?bFkwa0lWUDhCRVVBRmRyUzgva1I1UHk5Ym1MU3kvMktsSGxYaXBWOWR4UnRj?= =?utf-8?B?c1Mvdk01aXFnelY0MVVLaHU2M0Q5bWJiTXFSeHhveFZCVHV5NmxMV2ZkNzE2?= =?utf-8?B?QlVrRTNMNW5uT05VWWhWQnFsQityWWx1QTJPVE5QTUJ4VEtNQXpqeUJYVVJ4?= =?utf-8?B?UG13anRCVGtNVFNDb1ZFN3d4TkEwUlJPZDRQTitRak5Ed3FMMEI5UWtEZE44?= =?utf-8?B?a3BkSnRwbkkvdnF1N2FYS1VaOE1RcWY0MGcrdkdsSVo5Vk14VWRWMWwrVTJw?= =?utf-8?B?cnF0VmE2Z0tKSUlLeFZITmV6ZFRmZVNyT0w1ZkIyVU0rQnpJazJkNmY1eUpk?= =?utf-8?B?d0toOGFmNDNHMFVqcE1zTG43NWQ5S3pPdzhTUE9sYlNMSGhPU0Q4TitMRVNv?= =?utf-8?B?VEc4Rmp5akNaa2ZmZVhBSkFRb1lxSEFnMnZycjRrb0FGRTA3aFNsM2JmTmV0?= =?utf-8?B?QUYrWFhwZ0x4MTAvRmZlSzg0a3Z2cGFNb0tMNGEvbVovc3VjYUJLeWZxV2lu?= =?utf-8?B?eDJXNGdnZ3RQb01QSHRNTkpUMHM3TEkvanVRMm1ybEVibHpka2tpaWZYUVRC?= =?utf-8?B?ZzZVbW5wZ3Q3QUtmdTVJdVUwSXJ5UzFGNC95K2k0VVlkSm9lSGdibEZDdy9s?= =?utf-8?B?elJPOHJoZnF3SXpLMVpkakcrTGtnazdiOCt1allwcW9jeHo2OUVSQWRaa0NR?= =?utf-8?B?NkZtSVAyR2ZmYmRPWnJNaTJyS0U3dVZVcmRVSGZ1S1EvWXl3WWtxOEZ2d1g5?= =?utf-8?B?Mzc5Tm1JYld6Zlo0d1ErVktwNm96cTcxWU1abi9ybDdKQkFXZkJmUm8yOUw2?= =?utf-8?B?bjg2Qi9Xc1NVZVFiZXBjakNPNVVzS1U3NDhldUFJUWRESFpOdkNyR0Fqem5M?= =?utf-8?B?c096TEU3VDZwMFI4TWx3dkFwaHJZaWljeXROckd1b0pRVk9ab0dRYlFFTytB?= =?utf-8?B?RFZCN2JKMzhLUk0xSVY4bS95WElZYWQvMWRFbWo4VzN1MTJ2ak8yWEIwczFI?= =?utf-8?B?UVZvcmh0TGNsWHpkMkkzRzNvOXVyc0xCaVdHV21teERDbDMrZHFUcUNpdTlK?= =?utf-8?B?ZXk4cTFndjFJMkExNW9aOS9abWRlQVp3OW5iczEzaXlNWWN3N1ZnWUdGUlI5?= =?utf-8?B?bXV0bENZUkVrTlhITHluTW4vS2FZdVl6VUlmSTR6U3hRZ3h5QVJZUXd2aDV0?= =?utf-8?B?N0lOdFNxc2dLWHFleWlyNm9jUnVHOVVaNXV5WmNtRG9TSGF6QkpvTTJJcndj?= =?utf-8?B?K056WlpkUE9WRzJNZkJ3RWpIRGNNS3JJSmJiUnYvRE9EMDJxK3M4MUlNeDZs?= =?utf-8?B?NDMzUDFnaE9UK1Q5MUw2OE1DeGJGNkJUcjBuQkZTczRTWlQ1TWpUUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97d12518-94a8-4ec4-a99a-08de4f93e5be X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:36.8291 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SerDUPOvbE7YTNZ7KJbDuMCJTQFDT5NpgZtxfzXi0BrE9sOFzbsekV1wAlexhaFfBPvJoN3WVPxJZKG2go7T3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 Use common dw_edma_core_start() for both eDMA and HDMA. Remove .start() callback functions at eDMA and HDMA. Signed-off-by: Frank Li --- change in v2 - use eDMA and HDMA --- drivers/dma/dw-edma/dw-edma-core.c | 24 ++++++++++++++++-- drivers/dma/dw-edma/dw-edma-core.h | 7 ----- drivers/dma/dw-edma/dw-edma-v0-core.c | 48 -------------------------------= ---- drivers/dma/dw-edma/dw-hdma-v0-core.c | 43 +++---------------------------- 4 files changed, 25 insertions(+), 97 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 5b12af20cb37156a8dec440401d956652b890d53..37918f733eb4d36c7ced6418b85= a885affadc8f7 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -163,9 +163,29 @@ static void vchan_free_desc(struct virt_dma_desc *vdes= c) dw_edma_free_desc(vd2dw_edma_desc(vdesc)); } =20 +static void dw_edma_core_start(struct dw_edma_chunk *chunk, bool first) +{ + struct dw_edma_chan *chan =3D chunk->chan; + struct dw_edma_burst *child; + u32 i =3D 0; + int j; + + j =3D chunk->bursts_alloc; + list_for_each_entry(child, &chunk->burst->list, list) { + j--; + dw_edma_core_ll_data(chan, child, i++, chunk->cb, !j); + } + + dw_edma_core_ll_link(chan, i, chunk->cb, chan->ll_region.paddr); + + if (first) + dw_edma_core_ch_enable(chan); + + dw_edma_core_ch_doorbell(chan); +} + static int dw_edma_start_transfer(struct dw_edma_chan *chan) { - struct dw_edma *dw =3D chan->dw; struct dw_edma_chunk *child; struct dw_edma_desc *desc; struct virt_dma_desc *vd; @@ -183,7 +203,7 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) if (!child) return 0; =20 - dw_edma_core_start(dw, child, !desc->xfer_sz); + dw_edma_core_start(child, !desc->xfer_sz); desc->xfer_sz +=3D child->xfer_sz; dw_edma_free_burst(child); list_del(&child->list); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 09e6b25225407f5bacb2699cbba26d1bab90b0c7..0ad460e1942221c678a76e9ab2a= ee35f1af4eb25 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -124,7 +124,6 @@ struct dw_edma_core_ops { enum dma_status (*ch_status)(struct dw_edma_chan *chan); irqreturn_t (*handle_int)(struct dw_edma_irq *dw_irq, enum dw_edma_dir di= r, dw_edma_handler_t done, dw_edma_handler_t abort); - void (*start)(struct dw_edma_chunk *chunk, bool first); void (*ll_data)(struct dw_edma_chan *chan, struct dw_edma_burst *burst, u32 idx, bool cb, bool irq); void (*ll_link)(struct dw_edma_chan *chan, u32 idx, bool cb, u64 addr); @@ -195,12 +194,6 @@ dw_edma_core_handle_int(struct dw_edma_irq *dw_irq, en= um dw_edma_dir dir, return dw_irq->dw->core->handle_int(dw_irq, dir, done, abort); } =20 -static inline -void dw_edma_core_start(struct dw_edma *dw, struct dw_edma_chunk *chunk, b= ool first) -{ - dw->core->start(chunk, first); -} - static inline void dw_edma_core_ch_config(struct dw_edma_chan *chan) { diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 7c954af7a3e377f1fb2a250279383af4fa0d8d3e..7b4591f984ad8b6f9909db16775= 368ff471db2b8 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -379,36 +379,6 @@ static void dw_edma_v0_core_ch_enable(struct dw_edma_c= han *chan) upper_32_bits(chan->ll_region.paddr)); } =20 -static void dw_edma_v0_core_write_chunk(struct dw_edma_chunk *chunk) -{ - struct dw_edma_burst *child; - struct dw_edma_chan *chan =3D chunk->chan; - u32 control =3D 0, i =3D 0; - int j; - - if (chunk->cb) - control =3D DW_EDMA_V0_CB; - - j =3D chunk->bursts_alloc; - list_for_each_entry(child, &chunk->burst->list, list) { - j--; - if (!j) { - control |=3D DW_EDMA_V0_LIE; - if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) - control |=3D DW_EDMA_V0_RIE; - } - - dw_edma_v0_write_ll_data(chan, i++, control, child->sz, - child->sar, child->dar); - } - - control =3D DW_EDMA_V0_LLP | DW_EDMA_V0_TCB; - if (!chunk->cb) - control |=3D DW_EDMA_V0_CB; - - dw_edma_v0_write_ll_link(chan, i, control, chan->ll_region.paddr); -} - static void dw_edma_v0_sync_ll_data(struct dw_edma_chan *chan) { /* @@ -423,23 +393,6 @@ static void dw_edma_v0_sync_ll_data(struct dw_edma_cha= n *chan) readl(chan->ll_region.vaddr.io); } =20 -static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first) -{ - struct dw_edma_chan *chan =3D chunk->chan; - struct dw_edma *dw =3D chan->dw; - - dw_edma_v0_core_write_chunk(chunk); - - if (first) - dw_edma_v0_core_ch_enable(chan); - - dw_edma_v0_sync_ll_data(chan); - - /* Doorbell */ - SET_RW_32(dw, chan->dir, doorbell, - FIELD_PREP(EDMA_V0_DOORBELL_CH_MASK, chan->id)); -} - static void dw_edma_v0_core_ch_config(struct dw_edma_chan *chan) { struct dw_edma *dw =3D chan->dw; @@ -562,7 +515,6 @@ static const struct dw_edma_core_ops dw_edma_v0_core = =3D { .ch_count =3D dw_edma_v0_core_ch_count, .ch_status =3D dw_edma_v0_core_ch_status, .handle_int =3D dw_edma_v0_core_handle_int, - .start =3D dw_edma_v0_core_start, .ll_data =3D dw_edma_v0_core_ll_data, .ll_link =3D dw_edma_v0_core_ll_link, .ch_doorbell =3D dw_edma_v0_core_ch_doorbell, diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index 94350bb2bdcd6e29d8a42380160a5bd77caf4680..7f9fe3a6edd94583fd09c80a8d7= 9527ed6383a8c 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -217,26 +217,10 @@ static void dw_hdma_v0_core_ch_enable(struct dw_edma_= chan *chan) lower_32_bits(chan->ll_region.paddr)); SET_CH_32(dw, chan->dir, chan->id, llp.msb, upper_32_bits(chan->ll_region.paddr)); -} - -static void dw_hdma_v0_core_write_chunk(struct dw_edma_chunk *chunk) -{ - struct dw_edma_chan *chan =3D chunk->chan; - struct dw_edma_burst *child; - u32 control =3D 0, i =3D 0; - - if (chunk->cb) - control =3D DW_HDMA_V0_CB; - - list_for_each_entry(child, &chunk->burst->list, list) - dw_hdma_v0_write_ll_data(chan, i++, control, child->sz, - child->sar, child->dar); - - control =3D DW_HDMA_V0_LLP | DW_HDMA_V0_TCB; - if (!chunk->cb) - control |=3D DW_HDMA_V0_CB; =20 - dw_hdma_v0_write_ll_link(chan, i, control, chunk->chan->ll_region.paddr); + /* Set consumer cycle */ + SET_CH_32(dw, chan->dir, chan->id, cycle_sync, + HDMA_V0_CONSUMER_CYCLE_STAT | HDMA_V0_CONSUMER_CYCLE_BIT); } =20 static void dw_hdma_v0_sync_ll_data(struct dw_edma_chan *chan) @@ -253,26 +237,6 @@ static void dw_hdma_v0_sync_ll_data(struct dw_edma_cha= n *chan) readl(chan->ll_region.vaddr.io); } =20 -static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) -{ - struct dw_edma_chan *chan =3D chunk->chan; - struct dw_edma *dw =3D chan->dw; - - dw_hdma_v0_core_write_chunk(chunk); - - if (first) - dw_hdma_v0_core_ch_enable(chan); - - /* Set consumer cycle */ - SET_CH_32(dw, chan->dir, chan->id, cycle_sync, - HDMA_V0_CONSUMER_CYCLE_STAT | HDMA_V0_CONSUMER_CYCLE_BIT); - - dw_hdma_v0_sync_ll_data(chan); - - /* Doorbell */ - SET_CH_32(dw, chan->dir, chan->id, doorbell, HDMA_V0_DOORBELL_START); -} - static void dw_hdma_v0_core_ch_config(struct dw_edma_chan *chan) { struct dw_edma *dw =3D chan->dw; @@ -332,7 +296,6 @@ static const struct dw_edma_core_ops dw_hdma_v0_core = =3D { .ch_count =3D dw_hdma_v0_core_ch_count, .ch_status =3D dw_hdma_v0_core_ch_status, .handle_int =3D dw_hdma_v0_core_handle_int, - .start =3D dw_hdma_v0_core_start, .ll_data =3D dw_hdma_v0_core_ll_data, .ll_link =3D dw_hdma_v0_core_ll_link, .ch_doorbell =3D dw_hdma_v0_core_ch_doorbell, --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013004.outbound.protection.outlook.com [52.101.83.4]) (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 8A09C363C6B; Fri, 9 Jan 2026 15:29:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972586; cv=fail; b=H3Z6XRZpO4GJ7+lG2J+tGJjFviHsgpes7VGovFXi24ui2nuLwpIAwDB2Tgk3Yges9eta3yQAWDBNcUDhmHs2vtnL6Tm+KK4mUUxr5afZT6N2aF9lLSjrrYNuXd6HZFhKB8RYK5w3reLhjB3scNxSGgeuApo58zmmZUM3eW0BnXs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972586; c=relaxed/simple; bh=ytOl0SEzwn07yeKl+Jxu4ja5wb5i34yK75CCH+G0XQM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=s2FmVVCHRM3N4BW0RSc228rR284V0AX3u9G2i6vKdCYjmj9Sg8U2Gut1VNtr1eJ+UNqhBnORY2JUVvrGMku+zMgoPKNUCoKG5sN/x4XPaYUCJI7ZooRO029G6uZqfz/OeGU/aNfrulqw99rs1vBSQ8GXglmnfd9dVA3w+HHgpn4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=TzBvuI5v; arc=fail smtp.client-ip=52.101.83.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="TzBvuI5v" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DYN68CYni0iT7Fq/mF2nQiUAALM55UQXUS0KFchIc9OH+8UIdy7xrkd0YnobJw/oLsKxTFRtkCYF1Zys3ux3WnyARXKT4JZNaUkgtseRQUtawy8sfavLNorJr2/EaffnSo7RCuE9LdTYlcWXNpYhtEiMyCNyIx8z8FARMV5uUbNsZsMP2//z0Ku9SO0QDEo8hwE31wrVD8iD6P2CeB87dhoQOjT+PIxvh9O7IgDnxaVeqQ3OLF4gZaei8Viza5mcNJjIcEiTkdD5sH+IA2zSIJBbOLLrhm9i4VsWtpYOyeWI20Ky817CI/bq6U5oFoodxRgCCgrHrgx/ytZbkc6z0w== 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=U8pst+iSQHS0EmFBE2PVl/2ZmMwH3SXsGj/LGmrdiFs=; b=l93r2dCeIT6x5i5a5LHcBWL3XL7+0BUosXS4emMlsLYRgt9KYOuwyi+lYC+lkbHW2s1m4GNpGj0KalJICpMEzKczj8kFlmrU4idtpqPqK9NWajHl1eCKGtlyyt/E7KteW/nHri3zUoCbimmnYP+/nPpfHArgpPDM65Hor+CHSpFXcu3ebLxsHEDcAUmpQ7JJrj1/6Aks43VFL0wz0f2w7PUnr2lmzNrKJkajSNOsQcLBibGgDkjGillf/3sgFKRNfU8csXIyv0/FwkVtrcD2+HSRD32XsuWkTkOEjInWxzfqgW61BwsUqG6ZFA5M4jSIHbv6qEdGhYB17wg3g1v6HQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U8pst+iSQHS0EmFBE2PVl/2ZmMwH3SXsGj/LGmrdiFs=; b=TzBvuI5vz2PJg5jY295/GeZL+VhtQ97GusmMKVy+jn4frDTVT4INg5UHjARilNZqfPmBTdGWvGP6sc0oVHCkrvXyRQVRSk5o3UndSExE/lLtULWhfxowooes8fKkK+od62Yei3Zt7FbBsCoAEapAigjayJXvtSTp1fuyRTGw3rPAHbL+pIEWpkatnghCY3B/wP4pZBZz6d5pklN9/ZCppAMpyZplsOqo6GCLkIHR4SmrODswRnZiMMMyOLsG6bWt/owjSUe5XYg+bNUXEo5yLVdgS2hsW+4PDpaOPrBG5i3DkAu6hBUFxO6t7yuYXDhYnD8TnW1bjBbE9m9NifXUew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:41 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:41 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:30 -0500 Subject: [PATCH v2 10/11] dmaengine: dw-edma: Use burst array instead of linked list Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-10-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=7729; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=ytOl0SEzwn07yeKl+Jxu4ja5wb5i34yK75CCH+G0XQM=; b=qtIv36ZRNWLImQjQ3Z1r3JnyajnQZWxJ7wl9mOsPrC76N39G2ruMiJvSJKiRxFOgFjrS0thiQ wyYWt1Clg09COlDO9V/Dq+i320kMjrn4Z+xPd90zHAzs+0qt+xPKO6K X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: 2fb13bf9-2b94-4a65-010f-08de4f93e86d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SW5aMWtNY2wvdmp3RWhaMUFEejRSVGV2Sy95ZmdCNlc2d2FJNVZGQUFrSE1j?= =?utf-8?B?bXJhWE5YTGVGNEdQVW0xQnJCbGE5UFpjQk5pYS85M3hTZGo1NDdNdlpBMEtM?= =?utf-8?B?NVJWWTZodkpreUV2ZnEzQlNiUFUrM1FGaEtnazluUmpzOGZ4LzZMVllaekkz?= =?utf-8?B?OU96aEwvNFVtbkxOMi9mQ2dvMjliSWhrZndyRzdUVW5UZzN0QWxtaFVJSnUz?= =?utf-8?B?UHMySjZLYUhmTjJvUDN5NGszTEs0SmRsNk9UUzhUc09VelNvbG5PaDJUbjNX?= =?utf-8?B?WGcrSWdFN2Jlak40UTdBRzY2a29rRDVsZUdzUjZSZ3Fud0FJejBxUGZ3TjJo?= =?utf-8?B?VDhMYm1BU3pHcXoxTEtxejR1OWZqTzI4ZTZRNUttZHB0YndvYmU2d2c1elRP?= =?utf-8?B?d1M3NkJHVVo0M0hHNDdkOEdWTkZhMDhTZlFQNUV1RjJhMlhDbTF3VlBkS0tj?= =?utf-8?B?VnlKT1c2MGFTWm5VbmwxaEJ4ZEpvR2VzaWE4MUZ3eGlDa0Vjc2cydEplbEtL?= =?utf-8?B?MklRMDVHNEhEUWxzbHhIRTJNWjNLdVZ1RVByZVJ0R3JzUGhCMmVQM2xReXlM?= =?utf-8?B?b3ZzSHhXSVA2WHN4YWNRS2l5cEZqa1ZKamMzZUZhdERIZVo5azQ1WE5ubVh2?= =?utf-8?B?OHVXaEEwaDRPS1JKcnpybStPUzdNOTVxaThWUE5EcmN6cVJTdVpZQWZqcE5G?= =?utf-8?B?OHJoNHhIdit1OXE5SE92a1NqQ1pDWldFeVhUNVA1b3BtWWM3RW1TRFZoQTFV?= =?utf-8?B?SGFUQTlLUjBJT3dhU0dhdmVTaEJtRERRZW9VeElnNlJXRWplSDJvOHFrSmpI?= =?utf-8?B?SVpOdURXNWVVQVhwcGJjQUp4SVl4M1FTU3o3c292bGNQUGZEVlBWcUlxd0ZL?= =?utf-8?B?K3U5RTFDNmtlZiswNVhBTGVuSjJ3RHpFR3dRa3lFbzVESkZQaVVraVJPekFD?= =?utf-8?B?ZlFXa2U2KzhxSzBwTWxIbGhIT2kxbHozUlVBSDRrYUE0NUU1dGRZRlUzamYr?= =?utf-8?B?QlZSTTJNNmIvQ0FNb2Yzbkh0K2hFY0o3M3lOWGtCS0hJcUNmUkhzSnNPOFRB?= =?utf-8?B?OEZ5bmJ0QkF4UE1IVExzcWduakd0alVUQm85cTNZYlNOTms4eVV3anZYenl2?= =?utf-8?B?NVNzY0JRODFRVDdwRFBlZitHdTlVNXFsdUZESmJFbDZsWHo4TDY2ZHZqSEQv?= =?utf-8?B?Y2lLSlZqN1RNeXFKRUd2MldKdS9nYU0zV05EM3hSR2FsTGo2N3VJY0Npc0RX?= =?utf-8?B?UHhRcjM3YWNWZ2NKYW5EbDdtRFh0M0VVbDV5bGlNQkhrOFptQmk5bE9xNHla?= =?utf-8?B?VlZqcnF4eWF1NENPMEpSdWU2NjBxVkNlTTNJa1RMQUZEUVBoTThqRUl4OHM5?= =?utf-8?B?WHE1blhsR2ZZdUJpcmRtUjVDVjBEVmRqNmV5RzhrVFcyd05NejNuYlVxYkZq?= =?utf-8?B?ZHpydGtTQXd3ZVJPSXZKczhscnlXVkNtVTR5d2RjZlIxNjRQQ0tuSFZiOGVp?= =?utf-8?B?ajQrZU1uU3paWmtyOS9wQVBuNjl2MDE4eUxpQVJkM0JkV3FwV01HOUdSNWFX?= =?utf-8?B?dnhVVDIxd3Vhc2VaYklWU1ZQaTRWcU9kZzB4YklnRk5nSkw1RDgyeXZydUwz?= =?utf-8?B?Q3MxSTN3RTRkTjlpOWx5aE1TOVlQdGcyQlZQaDgrZ1djNlFsZjhtYXVTZ09M?= =?utf-8?B?NmwzZFBsZUlIUmg2SUlqKzc5MlpSRVRaZ084U1hQWWdPK0FMTDZxTzd3MGk1?= =?utf-8?B?eEU1Yzg1Z3hqUjAxS3hNVkxNOGJHOHdoTnA1aHFGaCtMc043UGI0K0kvcTRB?= =?utf-8?B?Q3lWODVNbjdjY2MwY3UwcnBtNmxjdHU4ZjR2a0pac0lIVE5LT3NXY2tQYzV0?= =?utf-8?B?ZHJ1cHhOeHV0eWpDWS91bnZuVnlSWlBWc05Id2hYN3BVSDZkNEhMNzlBRm9k?= =?utf-8?B?RFNvU3lzQVBGYUs0Y3hLNGUxd1VUUHlabDlQTk9DckROT2NUZmgySFhZdmFk?= =?utf-8?B?UnRDN2lETmN6MmJvYnpLUG1qYjRFUUZGS3VYZmtEQ0phTWdabnNvaENxanox?= =?utf-8?B?c0dMTUh3bHMvNGdOTkFLbzM2T2ZyNUNvd1RGdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Uk1aejRGTUM3US82U01ONnBLVnRjanVnYWZLYU9TSkFHMHp0bUtGSnNndXJS?= =?utf-8?B?dXJMa2JSUnBDMS8vYi93UDQvT1FYS1B2UG43QmljNk8rQWIrV3BVd283RHps?= =?utf-8?B?OWYvYVArUDBXR3dtMXlyOWJYOEpqb094MzF5NW5WVEdNcDU5bXdvNGVoUkgr?= =?utf-8?B?YjhETDIzbEQ5OXVvN3k3LytpaHZzR0g2QVFpNVQyUlBldTAyeE1US3cvN0tW?= =?utf-8?B?bnllT1oyMC80enEramdiUXVPMjBLSm44QVgrdE1OaGJtZUlGT1JZZjVQbUox?= =?utf-8?B?cHppWE5EMitySFZXaDVQbkRZbkRNeXlnTUh0TXhLUXBqaHp2cWtUbFZUVFJk?= =?utf-8?B?TG5kWnBvdFJ5KzhJS3pWYTByQjRpZEFaZWlRTGhweHVYUGMxZnBJTzhpbksw?= =?utf-8?B?Y3UvK29SWFdOeTZzMzN4dlVBdCtMNkZCQldRM1BxeHJ5Zko5TXFzTWJkZVpo?= =?utf-8?B?aFEwVFd3WHl6a2JnUHowMlhGK2ttQWlwaHREVy9sa252MUl4dTViOGpZbk9F?= =?utf-8?B?dnlDdTFPVnQwYXlrekRSRGNVUmVxMm9pSlFHTHBiRmNYYWNxVlhOakNhR1Uw?= =?utf-8?B?VTJUaUlaNUxoUElHTzF0L1NoTTFCcmFyK3k3OEhsM0ZMZjhiTFB0Y2haQzdN?= =?utf-8?B?NityRzhhWjB5eENkU0srVUFYSVdHRzdnb09tRWhsRE5Rb3pCeFY4K1Z3TWVD?= =?utf-8?B?NGFDdStwYXA0dE5CM1dyOXRYaUlSaHhLU0VKUjZUQ0R6bFFkZkpTUzZIR3dE?= =?utf-8?B?RXBWZDF2ZU9DZ1Y4Wm83MTFKRHc5bmJXcWVITHFzTThDL1NGUkNNWWc1SXJS?= =?utf-8?B?OTFRb2Z0NkE4NG1HKzFYVHdKZFNXWnZWM05sRnl1QjhwbTJ6a0lYNHlTWkll?= =?utf-8?B?TE5CQzBhSVloRXlvcGsyWDRaalJyQXpDOFlNNHBBYlBDOEQ5dk5xVk9SWUZk?= =?utf-8?B?THpXNFJhYVV6ZkcvdlhvMlFLb2Q1QlA2Zjk3SHJoRUR2K3A0VkozdEt4S3VN?= =?utf-8?B?OTQvUzFqR0xaTTBMV0lEbW1VeVNaQ1Y5TlRpNGY1QWNTenFoWmlRc2hBcFJC?= =?utf-8?B?cXpLMEdGUUYxb2tIeUVnRG40ejJhd0RkNEFrNmV5MlVlYjFTdCt0RURPM1B5?= =?utf-8?B?Z3FoSS9EZURwekduRlFxanM4cERoNDlWaEllQTMrWU9id05FQThKMHlLWWd5?= =?utf-8?B?MSsrV1dhait0Z3lNTGFtWEh3MkZRZkZ5V3U3aGwwSy9ESWpabnFuQUlxUUla?= =?utf-8?B?bjBqd0duZ1VyeVpjRmZvNlEvNlpuU2hYTXlOTjkzWjdXQ21kblBwQXdpUVdM?= =?utf-8?B?ajhtUE0yTVNqamZLWSs4OFViT3pwMVJYaUt6ZitQUUxWV29BYUtjWVhUY1pB?= =?utf-8?B?OXVUMHRvT1RiZVFoVTJKNWVSRTd4VFAwZk5XSnFXSllqOGFGdEoweExzMUFh?= =?utf-8?B?eVVrQUtoUmd0cFluTGNzbmI3ZGhFUzZyZ2NHOWZWS2RzVzZxaTZxWGxrRnRF?= =?utf-8?B?T083ODVwSjVxOXpFdWFLMWtKdjN2UEJrNm5NTEZUYjJ4bit2Z2RqRG1rNUdX?= =?utf-8?B?K3prM1Rnb0ZKdyt3enhVM0dLTU1nUHFEL2o4ZVNTWHVrQWVGaWs1MFlUN2VW?= =?utf-8?B?WHpjQWJNR1NySTlyb2o2VG1TKzNvVWlWeTdzWnRFb3lOYlM1RUxFSEVPOG1T?= =?utf-8?B?bFU1UTJoMnNjQzhSRTloakRzb09GaEFqc3RvR3BWTnpSam9QOEN2cDNTMHBT?= =?utf-8?B?eXl1YnluVVVOb3BDZ3RHYnlRVmJ1ZHQxbDJXcHNFVXByTk5vWmIzMU1CaTVh?= =?utf-8?B?RU9jZ1RtQStRUEIybTU0OHRMbkdpbUZ2ekpNWnNXcVoxeUFpSEQ5S3cwLzZk?= =?utf-8?B?cWpxVjRWNlE0UXZldmNpdXZXTzVsOHdNM0pLekt0RktYMC81T1ZZb0VFcEk4?= =?utf-8?B?U3ZwcFhkZlVMSWthTGZtN2Uzc3RadGRNNlNqOWZrdEk5ZHRvWkFzK2Z3UFJI?= =?utf-8?B?ZzR5OG1LYTlTVXBJOGhqYXFPckpkU0h1czdxUVRhbFppdUduZUF6Szc2VHF2?= =?utf-8?B?T2kzbnByczJ2TmhISitiTnFZVlo4QnRpUVB3YmZQdG9nNWxQWnhGMHdObUoz?= =?utf-8?B?ekdNVzlGcExOK1k3TlZWTEFodzFIWlI3Yk44bm1XcHZXa2tVeUlyVWEvOGk3?= =?utf-8?B?UkdrUDZrcEtlcm9YQWw2eEp2UTVVbHd6c2xlZlordkZFOERkVG9UNTRFTml6?= =?utf-8?B?TVUrRHB5SFBWUW1oU3BvVWFrT3p2Nk1DcU5NbjBKMHBHY3FKSXVIeTJvZkNa?= =?utf-8?B?MXRwTDhuSWQvWHhXZ1dWSU5EcUpmK1VkZ3VrTUowdTZuRjczMnE0QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2fb13bf9-2b94-4a65-010f-08de4f93e86d X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:41.6402 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Yf/kzKxM/eBkY4Q7s8w4APwC6F/iuCr0u/g8h2e7eeWaQhRiWDoVs5qpl/0v4OvkmwYB8IuQNQC0CigKaEG2HA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 The current descriptor layout is: struct dw_edma_desc *desc =E2=94=94=E2=94=80 chunk list =E2=94=94=E2=94=80 burst list Creating a DMA descriptor requires at least three kzalloc() calls because each burst is allocated as a linked-list node. Since the number of bursts is already known when the descriptor is created, a linked list is not necessary. Allocate a burst array when creating each chunk to simplify the code and eliminate one kzalloc() call. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 114 +++++++--------------------------= ---- drivers/dma/dw-edma/dw-edma-core.h | 9 +-- 2 files changed, 24 insertions(+), 99 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 37918f733eb4d36c7ced6418b85a885affadc8f7..9e65155fd93d69ddbc8235fad67= 1fad4dc120979 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -40,38 +40,15 @@ u64 dw_edma_get_pci_address(struct dw_edma_chan *chan, = phys_addr_t cpu_addr) return cpu_addr; } =20 -static struct dw_edma_burst *dw_edma_alloc_burst(struct dw_edma_chunk *chu= nk) -{ - struct dw_edma_burst *burst; - - burst =3D kzalloc(sizeof(*burst), GFP_NOWAIT); - if (unlikely(!burst)) - return NULL; - - INIT_LIST_HEAD(&burst->list); - if (chunk->burst) { - /* Create and add new element into the linked list */ - chunk->bursts_alloc++; - list_add_tail(&burst->list, &chunk->burst->list); - } else { - /* List head */ - chunk->bursts_alloc =3D 0; - chunk->burst =3D burst; - } - - return burst; -} - -static struct dw_edma_chunk *dw_edma_alloc_chunk(struct dw_edma_desc *desc) +static struct dw_edma_chunk *dw_edma_alloc_chunk(struct dw_edma_desc *desc= , u32 nburst) { struct dw_edma_chan *chan =3D desc->chan; struct dw_edma_chunk *chunk; =20 - chunk =3D kzalloc(sizeof(*chunk), GFP_NOWAIT); + chunk =3D kzalloc(struct_size(chunk, burst, nburst), GFP_NOWAIT); if (unlikely(!chunk)) return NULL; =20 - INIT_LIST_HEAD(&chunk->list); chunk->chan =3D chan; /* Toggling change bit (CB) in each chunk, this is a mechanism to * inform the eDMA HW block that this is a new linked list ready @@ -81,20 +58,10 @@ static struct dw_edma_chunk *dw_edma_alloc_chunk(struct= dw_edma_desc *desc) */ chunk->cb =3D !(desc->chunks_alloc % 2); =20 - if (desc->chunk) { - /* Create and add new element into the linked list */ - if (!dw_edma_alloc_burst(chunk)) { - kfree(chunk); - return NULL; - } - desc->chunks_alloc++; - list_add_tail(&chunk->list, &desc->chunk->list); - } else { - /* List head */ - chunk->burst =3D NULL; - desc->chunks_alloc =3D 0; - desc->chunk =3D chunk; - } + chunk->nburst =3D nburst; + + list_add_tail(&chunk->list, &desc->chunk_list); + desc->chunks_alloc++; =20 return chunk; } @@ -108,53 +75,23 @@ static struct dw_edma_desc *dw_edma_alloc_desc(struct = dw_edma_chan *chan) return NULL; =20 desc->chan =3D chan; - if (!dw_edma_alloc_chunk(desc)) { - kfree(desc); - return NULL; - } =20 - return desc; -} + INIT_LIST_HEAD(&desc->chunk_list); =20 -static void dw_edma_free_burst(struct dw_edma_chunk *chunk) -{ - struct dw_edma_burst *child, *_next; - - /* Remove all the list elements */ - list_for_each_entry_safe(child, _next, &chunk->burst->list, list) { - list_del(&child->list); - kfree(child); - chunk->bursts_alloc--; - } - - /* Remove the list head */ - kfree(child); - chunk->burst =3D NULL; + return desc; } =20 -static void dw_edma_free_chunk(struct dw_edma_desc *desc) +static void dw_edma_free_desc(struct dw_edma_desc *desc) { struct dw_edma_chunk *child, *_next; =20 - if (!desc->chunk) - return; - /* Remove all the list elements */ - list_for_each_entry_safe(child, _next, &desc->chunk->list, list) { - dw_edma_free_burst(child); + list_for_each_entry_safe(child, _next, &desc->chunk_list, list) { list_del(&child->list); kfree(child); desc->chunks_alloc--; } =20 - /* Remove the list head */ - kfree(child); - desc->chunk =3D NULL; -} - -static void dw_edma_free_desc(struct dw_edma_desc *desc) -{ - dw_edma_free_chunk(desc); kfree(desc); } =20 @@ -166,15 +103,11 @@ static void vchan_free_desc(struct virt_dma_desc *vde= sc) static void dw_edma_core_start(struct dw_edma_chunk *chunk, bool first) { struct dw_edma_chan *chan =3D chunk->chan; - struct dw_edma_burst *child; u32 i =3D 0; - int j; =20 - j =3D chunk->bursts_alloc; - list_for_each_entry(child, &chunk->burst->list, list) { - j--; - dw_edma_core_ll_data(chan, child, i++, chunk->cb, !j); - } + for (i =3D 0; i < chunk->nburst; i++) + dw_edma_core_ll_data(chan, &chunk->burst[i], i, chunk->cb, + i =3D=3D chunk->nburst - 1); =20 dw_edma_core_ll_link(chan, i, chunk->cb, chan->ll_region.paddr); =20 @@ -198,14 +131,13 @@ static int dw_edma_start_transfer(struct dw_edma_chan= *chan) if (!desc) return 0; =20 - child =3D list_first_entry_or_null(&desc->chunk->list, + child =3D list_first_entry_or_null(&desc->chunk_list, struct dw_edma_chunk, list); if (!child) return 0; =20 dw_edma_core_start(child, !desc->xfer_sz); desc->xfer_sz +=3D child->xfer_sz; - dw_edma_free_burst(child); list_del(&child->list); kfree(child); desc->chunks_alloc--; @@ -375,13 +307,13 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, struct dw_edma_chan *chan =3D dchan2dw_edma_chan(xfer->dchan); enum dma_transfer_direction dir =3D xfer->direction; struct scatterlist *sg =3D NULL; - struct dw_edma_chunk *chunk; + struct dw_edma_chunk *chunk =3D NULL; struct dw_edma_burst *burst; struct dw_edma_desc *desc; u64 src_addr, dst_addr; size_t fsz =3D 0; u32 cnt =3D 0; - int i; + u32 i; =20 if (!chan->configured) return NULL; @@ -441,10 +373,6 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, if (unlikely(!desc)) goto err_alloc; =20 - chunk =3D dw_edma_alloc_chunk(desc); - if (unlikely(!chunk)) - goto err_alloc; - if (xfer->type =3D=3D EDMA_XFER_INTERLEAVED) { src_addr =3D xfer->xfer.il->src_start; dst_addr =3D xfer->xfer.il->dst_start; @@ -472,15 +400,15 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, if (xfer->type =3D=3D EDMA_XFER_SCATTER_GATHER && !sg) break; =20 - if (chunk->bursts_alloc =3D=3D chan->ll_max) { - chunk =3D dw_edma_alloc_chunk(desc); + if (!(i % chan->ll_max)) { + u32 n =3D min(cnt - i, chan->ll_max); + + chunk =3D dw_edma_alloc_chunk(desc, n); if (unlikely(!chunk)) goto err_alloc; } =20 - burst =3D dw_edma_alloc_burst(chunk); - if (unlikely(!burst)) - goto err_alloc; + burst =3D chunk->burst + (i % chan->ll_max); =20 if (xfer->type =3D=3D EDMA_XFER_CYCLIC) burst->sz =3D xfer->xfer.cyclic.len; diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 0ad460e1942221c678a76e9ab2aee35f1af4eb25..e9e0346c35b1917a5ef2c545fdf= 1754d18684154 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -43,7 +43,6 @@ struct dw_edma_chan; struct dw_edma_chunk; =20 struct dw_edma_burst { - struct list_head list; u64 sar; u64 dar; u32 sz; @@ -52,18 +51,16 @@ struct dw_edma_burst { struct dw_edma_chunk { struct list_head list; struct dw_edma_chan *chan; - struct dw_edma_burst *burst; - - u32 bursts_alloc; - u8 cb; u32 xfer_sz; + u32 nburst; + struct dw_edma_burst burst[] __counted_by(nburst); }; =20 struct dw_edma_desc { struct virt_dma_desc vd; struct dw_edma_chan *chan; - struct dw_edma_chunk *chunk; + struct list_head chunk_list; =20 u32 chunks_alloc; =20 --=20 2.34.1 From nobody Sun Feb 8 18:09:17 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012028.outbound.protection.outlook.com [52.101.66.28]) (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 2E5A8363C6B; Fri, 9 Jan 2026 15:29:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972598; cv=fail; b=bTYsjoI+2YlMu4FAwpwJrHvtRZoGBdGzeGGpS+VB6zvmxOMZocMVaIsWQQNJztE9Rrfo/HQmFgGgwgMbxTtAhicAHAtDbPxblVPKQ+bP6C+NHBNWsLVhSdWt6tUmXzzx36PkOPQPwUUn/rDzgSEQmDvt2IMzsQtc/41FxJt0bPE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767972598; c=relaxed/simple; bh=MBm8m99XtWbpldQ4gR4o6okXv1EWXhF0JTusf76GutE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=nYJ9FUGQTHf/yqOR2AiwRLpnTjfUT9uWoD8D46RiNNG+6OmLKQYiPZn3YKqfgUq8UVpR0okqc61zBtE510ZjRzVjE77W0G2j4FR5EA6kCZF/YAt19AEoY+FQFCdsZdhrrmuMSbxnFuMt5KxyU+He1mZdQpgMxe8s0wlM3ifzmFs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Hof3Mf3E; arc=fail smtp.client-ip=52.101.66.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Hof3Mf3E" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PK3LczwHXszUdDT3Of8UPSx+f8vcTxiiffuq+ANCCPT5WweR7NBfJGaOGgR4JOFIoHJpDkFcPPpjRppYIF48kFtHkkwMHol0blvm12DXkiTBGfYEiFNFZ3ZEj9N1gQi34a0xz2ImaVLupI0Bf3WHImWuQ8oW6I0vpgyw+Q92hP7pZS5sOMQOJFbl8kxJa4NNHQ0Pt69egFCYR5WXbHhhfSN5sRiXxhUhsHGNYI+htVvxhwN/LpTyzi/oS6hOVw4r/UHkB3wukmjQTj0+Sos1epfWDJ8gTjHN6qhBgJSDYa5KbgxHnNd+/6szN6p6aIN+fFqLoX93VtD5w1CPEQvLaA== 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=8gP0D2MKYaBVrraKFEChRq6F8ogUj9T2EOAq8KJHrAg=; b=JwS3OSD+lGKEfYXT7D/A6QMCInsC3SzNkc24kk+UdHLEu6Wo0iZF+hImq3oIBWPu/FcKBgccKan9+Zzjzrb62MUnguNADEFG+cb0lp0zbsntmcAtgqxWmE9m8NF/VwO6+TyN/jVDh2/JycRrRXt+rRAZtH3PPUDU0Rw+egVtMA8oipWSEMci5QFBPKHlq17WbPAW1H/sbGdvxaSdAIQ0FLZWOXqQEi66bSH3KOBY6kASOmsGTjMis7zsICXHCKgABz9R4r24EksaAUpUtudzQUxn297jKiWMXBGCqaLJmf2KjGtj708uaCrCy4u2d+l//LmNhJ+dueA63Cj1KjQoxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8gP0D2MKYaBVrraKFEChRq6F8ogUj9T2EOAq8KJHrAg=; b=Hof3Mf3El2ZpwZfJTItvFmHghFwkNmTyqvRqm0K3mtOyAOmRi1DuU5TJx1RIdLZwumOV1k8Tk8F6Ngr4wUpp9t21lvgLMV0NnuYQMlRDsx6dpvO5bNw7+xJoUrBYJHEAyWN9A1HV6mdcZOYNgN8VfcZRuh5xFfJZ4LElcNzHtAKTu9aC4bGQTI9mT/AxSgNO69qF8jDr+cqxsww69XTghGz231r/7OhAi/Qw1RGfksDO1iVDpTp1fpC0Y4CB+l0YoIxpspeBTwp4kUZ1Oh75BU6A5oCxRU7tGxWRb0oWpRvwLsE+Dq+MzffL4w7yDXSyETXuHsO4xmchL7PETWrNnw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) by DU0PR04MB9371.eurprd04.prod.outlook.com (2603:10a6:10:35a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 15:29:46 +0000 Received: from PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5]) by PAXPR04MB8957.eurprd04.prod.outlook.com ([fe80::9c5d:8cdf:5a78:3c5%3]) with mapi id 15.20.9499.003; Fri, 9 Jan 2026 15:29:46 +0000 From: Frank Li Date: Fri, 09 Jan 2026 10:28:31 -0500 Subject: [PATCH v2 11/11] dmaengine: dw-edma: Remove struct dw_edma_chunk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_ll-v2-11-5c0b27b2c664@nxp.com> References: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> In-Reply-To: <20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Christoph Hellwig , Niklas Cassel Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767972522; l=9560; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=MBm8m99XtWbpldQ4gR4o6okXv1EWXhF0JTusf76GutE=; b=pLWPoj1CeA6OVZkEgsRmooCim84k7aaKZeLoZQQcSK4ebwZ6AQcQY20fEsqiuqNfIgrabGa5/ kcc1uZvdof5AaTsJ1r3S9CNTXJv5ibm4pw2WPcrTxmYiWapskmWCbtF X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) To PAXPR04MB8957.eurprd04.prod.outlook.com (2603:10a6:102:20c::5) 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: PAXPR04MB8957:EE_|DU0PR04MB9371:EE_ X-MS-Office365-Filtering-Correlation-Id: f642e88a-afd5-4281-14c1-08de4f93ebaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WkFOd3g0TndzdTRCb2tuaHA3MDAyYkJmbmRtRE5taWNmcE5kZC8zVVlFczZa?= =?utf-8?B?ODF0ZFppdGlldFYrYXVhODc2elVmUXh6WDNkNDdROGVLb0cvelpZc3FrT2kz?= =?utf-8?B?ajZZdG1HZEZ5Y21ZTmlReCtJcUlVSVhNZTVBN1NObUk5bE1wd1ZBK2E4Skc3?= =?utf-8?B?R0dScCs5dzMxakx3TjY2b2s3TENJWjJpZ1lSOStidEc3L3VMZDZkWEh0K3Mr?= =?utf-8?B?cnF4RGdzcDV0bUZ1UGZwai93eTQ3TkJlWmNCRURMZEYzT1lzR0V1ai9xdDM3?= =?utf-8?B?Y0F4Ym5VSG5aZ3BSQXRvekRrM3NoUVZjaXFvaUEvc2E1QTB3Z1hrbFp0TzZO?= =?utf-8?B?aEl6cFdXeXc0WVdDbW9aREpLUkRERXB0ckU3bXdHVlJHSWxpN0doOTBRVmNO?= =?utf-8?B?Y2dDUC9Xb2Z4OExiMFFjK21jaUQrcjgwNWpLZmxGL0JKMUpLZGUyM3l4SjEw?= =?utf-8?B?YXVKc0s3d3lwNE9zS0hBdS92aXF1RFNtV3RCVzFMSHRPNVAvdzFhcE5qTGJS?= =?utf-8?B?Q1BXR1hsWmtSZjgwTnZUajNidk5nZ2h4cWwzdDFZSlRCZTdSeU1Ud0tMZVVL?= =?utf-8?B?OFh0eHM1ZTczbGp0ODlOSTdDeUtsaFB4blMydmJIUlFNRHhmS01xYm5NRThx?= =?utf-8?B?cFlwWWZBeXFGMHBqd1NPUTFLeUFhbVFBc3l5YWQ3THNRY24yWGYwQnk1OGdX?= =?utf-8?B?U2NZdktBdE5FcVUrbk1rZ1IyU1lMakJkRnVNNFdBNVFTVVBhOFJ2azF0MWM2?= =?utf-8?B?dXo5VEpNTHE1T1ZUeEk2SCt6dGU0a3RjQ3A0R2R1bklaTlJWZnlJLzFMRXJP?= =?utf-8?B?TGpQS3RRem9qRGgydkN2SkxEWEh5eC85eURIdFRyYlZQWHpFQVpuQkwraWRn?= =?utf-8?B?SlhiQVFBU2dYRnlQY25ZbGxqb2hraFN2UVhrd25QNGdmaDAvaUxnZGxBQVNU?= =?utf-8?B?RGZZYWUyRzRuOEZoZXZyYldCRm80YjN0NkJJenZOQXkxU2RpN3I2Zk5aUlps?= =?utf-8?B?VnJCV3RBK2JyeTdLN3h1N0xjVU5TVEFEV0ZmNTdlc1krVGZ5ekJ5elZYSFJr?= =?utf-8?B?MmdmeVgxTUxFc2lkNXVKYVBiV1hXeDFkanFNUTh5Uk1FcFplb21IbXNsSXRO?= =?utf-8?B?SVoralljRWxrdXhxZEREK28xZWV3TkFVZkEvV0YzZWljZjlHTVlZT2NLd09C?= =?utf-8?B?YWdXUUVTdnBGbUhZTFlLUGJ4dTh2eTNNWEErOGhyMlhKY1QxeEVNalh6RWlZ?= =?utf-8?B?MmVXZXowamFRekJBVlZSQjNJWU8zM0N2VHpVVklBalBXZzdEbmJEd0FQZTAv?= =?utf-8?B?L0xVVHZRZkhCZmhhdFdkWUppNVFxclgvQmhNTUQvUmVLU1VmbHBWSEJiYXZX?= =?utf-8?B?ejRIakQ1aDRuUTJqSlA3T3R6UDQ5cG8rMitHc0JmWGxlWjZpa3l2V0VHMDhR?= =?utf-8?B?eXVkbUJSM1VHVzUwMWFHR0cxWWJEVVFrZ2xKQlhYRXlkNWxISmRjUmxESW11?= =?utf-8?B?eVhaM1NIVGhJYnpPSkRGZjFTWGNZTlM2TDl2K1Fwdzl1UDdQTHlSQmZXaG43?= =?utf-8?B?UmFZeHlkUS9zdHJ1WFBjMVJIQllJeDFqOWZ3R05SVlp1OE9LeWFWdTdlM2VU?= =?utf-8?B?by9Jbmo5WWgrSmdHVG82elpEeEpKTEZubC9OdENvYkpNcE9iQS80djNWU29p?= =?utf-8?B?Sktjc1h6SmFhTmtOM3Q4K0EvZGI0MzJlYm9vclo1OW0rdlN3QTlPaUdxVHE1?= =?utf-8?B?dWRNMWVSaExjSGlBakpYanNRL0FoYTV4dnlJZ1F5MUdlcnhXNVBpUzliUEo1?= =?utf-8?B?S0FoYW80WjZIeXdnamxzdU95N1lhdG9PSmJjUzlZZWltZXdiKzdMS2VUc3VQ?= =?utf-8?B?OVRrM1g4NXdLZ1NocjhHU3hDbXlQbXlwVTZpQmJwaVh1Z2pZU1RQTWZUQmYw?= =?utf-8?B?ODkzaGhrd2RqaGs3VzB2eHlvYTVVUmZwYWJZRU5QRmRRU3ZkbDkrRXQxR21B?= =?utf-8?B?M1U4cEpRS0daRDVsNVU2OEI4azVNeUpicEV1RDAzZkxVOUErSzR3dlM0dEND?= =?utf-8?B?Sy94eENhdDBGa0JoT0EyNmk0cVU0SFFUREJCdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8957.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T1BocjNrbytTYnVieVZta2Z0MW53TlJ2RDN3ZStEK2RwREUreWVmSXc3ZTZj?= =?utf-8?B?U0ZtR0I2ZUFmYUJIMGpCZWxlRWMxOXk4dTVmNWgzeEhzTzdrSnlaNGpiT3d0?= =?utf-8?B?OEJqaW12cEZGZUpJL0lEbEo5a3cvbUN0dUdxQy9oZHZVbC92OUdRdS9GQk9Z?= =?utf-8?B?S2F0WHZadkFGakY3cURpbzg2NHZnTFZCSDU3djgxNzVKWE8vd0FqcHA1cFhZ?= =?utf-8?B?czFFaGFNUkxLS1hWTWV6SVhmaGt4U2lsNVhJNUR5aERxLy9HYWwvQmk5S0VZ?= =?utf-8?B?NWhaL3VZUk9BM1M5bTBRbDNwcVpNenNoUVBObmxmQVdVTmNKU21ib1h3d3Vz?= =?utf-8?B?YTNUU0pEaFpUc0EzamlqUWNGQUIvb3RGaHJhUmxGSlFqdzJzYXBFQUdqVVAx?= =?utf-8?B?ZE94dmFsZzhnYnNBeGZoV2orV00wU0IwOHd5ZFdHdVJpZmRlNGMzUmtaRTJW?= =?utf-8?B?MlRteXhvNEZIenhuMlRweVRYM2VkZHhra3g0M3FFV0FBeXhHNmM4WEtGQnhi?= =?utf-8?B?UVVLcmh0YTNOWi93Tk1IYm0vN0t3SHpYelJCZGg4QzI0c3NIWVU3dzZYd0Zk?= =?utf-8?B?NGdEc2U2dlp0bU4zcTQxZHpSclJhalVHUDFmZ1BpK29BNVprQ2pnZHRORURv?= =?utf-8?B?Y3NVOXdFMnBybzVpOHI4b3Vyb1FKcGhiT1QzZi9lSi9pWmpySktWTkxibk9h?= =?utf-8?B?dFJHcVRCTDZMQVJudlA2Rm1VVEwrVklXMFlvbTZGRUZGOTVnMUdiK2tJWndo?= =?utf-8?B?blFOeXZ5RVNSaFB3QUNHa3J3UmRSRjZ5bUw4ZU9FWDVESjd5anQyaGxWaWQr?= =?utf-8?B?aFBxdmFhOG8wQU5zWVZMZ2IwcjM0NmdzT2U3d1VhY1l2NzFzbTN6VUlIQ1dY?= =?utf-8?B?bWtSY1NocFpweFVxZG5HNWhCZysxb0lvSTFhMVdwTCtSY0w3WWc2SWp5d3E0?= =?utf-8?B?YUlVK29yVUxPaDB5OFJIaSs1TklsN3Q2ZEZuNmNUTGFkUWZxalUzd0dQSGd2?= =?utf-8?B?eHRSWkN2cmdSS2tzUWI3Sy9xS3VHdURqNCtUUVVTZWZHZTdvaUNtWGJIQkpF?= =?utf-8?B?YWJsVmFpVm1SaUJUcnhGSGt4bU5aM3JDM2xyRWVPMnphbFFRdFk5SGtZNzZL?= =?utf-8?B?aFlWTy9QRGc5Zzk5dmNJTFJnN3RhK1VES3lZUzdtd2R5M1JZVjkzK2FsZGlW?= =?utf-8?B?S1FNaHlVaUJtSWZaTVNmYTl5eFIxN3JTNDVqTkpaTlNORkZVb0s5Z1VlMEY0?= =?utf-8?B?bklMSGREYlhtekJkbjJDbnhEeW4ra0lPWEVoTVN1NDh6WTBTZ0tjKzNpdU5V?= =?utf-8?B?OEJ4SktkdU02N0pGdjRmLzl1Rm1zNWNVdk5YbG1ROWx4bTNSTXhGZjVHVm5I?= =?utf-8?B?N1dmdzg5OUxSSDJJblFFU2czczl6T0JxNEZLbUp2cWFnYmloYzdKbUkvelNG?= =?utf-8?B?L0JyMFZXMDRnV1ZLNzdTUjYwcVNrVUcrc1NQb1lmajR0ODd6dUpCNDJxWkVC?= =?utf-8?B?WmxrRmxIdVFPNVEwRE5OWVk1ZWtIYzFpSGNHWEVwZ0tlWDg4OXBrajdjSVgw?= =?utf-8?B?OFRYTU96ckZmTXRDeEJETVFPSVdoaDBUNStmN1NKbmJsQTJPajVndjlrMFls?= =?utf-8?B?OXdHZ3FpemVXN2g2bC9JeFVGNjdCRVVyUG5ObnJqVmh4cXBuVFdrc0pKR0tD?= =?utf-8?B?cjZpVDRzSmJuWFVBUHJVTS9Fd0EzM1dNUnpnUFUyNC9GSUV1T1o4aGIrNkRt?= =?utf-8?B?Y3FOMUt0bDRJN3Z6cGUwUlQxbngyMCtqd2JrNkhJbUJhT3cySWlRRU5oUzZ3?= =?utf-8?B?eE1ad092UmFWOHd3a0tOSlBzZ051VXdTRkhyeE8yanZUcEFZZ1lzdnlLSGox?= =?utf-8?B?SUR3TXR0WXBVVmFpQjMrVWozNTRCV1ZUektZSnhOSlNROFgxNWZiZ0RVVDRx?= =?utf-8?B?WjZ2UGVoN1ZUKzFMOStBU2I5MFowMk9BVmtweUtQYXlpRTZ5Y1hDd2thVnZR?= =?utf-8?B?Uml1Ui8vNEQ3bzhtRlFNVnpzb3h1dWJvTUhQSEtidjcrVEM5S0NGWnZzd2lN?= =?utf-8?B?UHVWNk1OZDhlWm9NWVd3WjBLaWhUUEcyTngvWnFxNHJHOHgxTURVTFM5MlNF?= =?utf-8?B?RVBETURBSTMwV3Z4UUk3QWVSaDcwcG44OWp5UDR4YjIzTXJDbmpaS29RQWJG?= =?utf-8?B?WFVvMmtlblNSWE8yUWZLdGxxbFJXUFlleU1BUHJDdXNjMkhxcVl5MU8wcGpH?= =?utf-8?B?Um9VZUhnMWtZcXBUMkxWRk16ZVY0RnVaNmJxM1haMk9Cc3RhY3kzU3VBVnpC?= =?utf-8?B?TEtzcnJhWWd6NzRYUU5hUlhZd3FoU2I0c1l6MmZVOGNuS05FTFpoUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f642e88a-afd5-4281-14c1-08de4f93ebaa X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8957.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 15:29:46.7539 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BSZ31TRPNU6zU9WBVZvFIsVVYJWiP16MFs93HMjWjUr9QKt6+jU7aoL+pErTkqAK0ALKqDVf5nBPKZUw896VWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9371 The current descriptor layout is: struct dw_edma_desc *desc =E2=94=94=E2=94=80 chunk list =E2=94=94=E2=94=80 burst[] Creating a DMA descriptor requires at least two kzalloc() calls because each chunk is allocated as a linked-list node. Since the number of bursts is already known when the descriptor is created, this linked-list layer is unnecessary. Move the burst array directly into struct dw_edma_desc and remove the struct dw_edma_chunk layer entirely. Use start_burst and done_burst to track the current bursts, which current are in the DMA link list. Signed-off-by: Frank Li --- change in v2 - remove debug code - move "residue =3D desc->alloc_sz;" in if(desc) check - keep inline to avoid build warning --- drivers/dma/dw-edma/dw-edma-core.c | 128 ++++++++++++---------------------= ---- drivers/dma/dw-edma/dw-edma-core.h | 24 ++++--- 2 files changed, 56 insertions(+), 96 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 9e65155fd93d69ddbc8235fad671fad4dc120979..1c8aef5e03b0e2c93aec9f1cb05= 88b4e8b1508d9 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -40,76 +40,45 @@ u64 dw_edma_get_pci_address(struct dw_edma_chan *chan, = phys_addr_t cpu_addr) return cpu_addr; } =20 -static struct dw_edma_chunk *dw_edma_alloc_chunk(struct dw_edma_desc *desc= , u32 nburst) -{ - struct dw_edma_chan *chan =3D desc->chan; - struct dw_edma_chunk *chunk; - - chunk =3D kzalloc(struct_size(chunk, burst, nburst), GFP_NOWAIT); - if (unlikely(!chunk)) - return NULL; - - chunk->chan =3D chan; - /* Toggling change bit (CB) in each chunk, this is a mechanism to - * inform the eDMA HW block that this is a new linked list ready - * to be consumed. - * - Odd chunks originate CB equal to 0 - * - Even chunks originate CB equal to 1 - */ - chunk->cb =3D !(desc->chunks_alloc % 2); - - chunk->nburst =3D nburst; - - list_add_tail(&chunk->list, &desc->chunk_list); - desc->chunks_alloc++; - - return chunk; -} - -static struct dw_edma_desc *dw_edma_alloc_desc(struct dw_edma_chan *chan) +static struct dw_edma_desc * +dw_edma_alloc_desc(struct dw_edma_chan *chan, u32 nburst) { struct dw_edma_desc *desc; =20 - desc =3D kzalloc(sizeof(*desc), GFP_NOWAIT); + desc =3D kzalloc(struct_size(desc, burst, nburst), GFP_NOWAIT); if (unlikely(!desc)) return NULL; =20 desc->chan =3D chan; - - INIT_LIST_HEAD(&desc->chunk_list); + desc->nburst =3D nburst; + desc->cb =3D true; =20 return desc; } =20 -static void dw_edma_free_desc(struct dw_edma_desc *desc) -{ - struct dw_edma_chunk *child, *_next; - - /* Remove all the list elements */ - list_for_each_entry_safe(child, _next, &desc->chunk_list, list) { - list_del(&child->list); - kfree(child); - desc->chunks_alloc--; - } - - kfree(desc); -} - static void vchan_free_desc(struct virt_dma_desc *vdesc) { - dw_edma_free_desc(vd2dw_edma_desc(vdesc)); + kfree(vd2dw_edma_desc(vdesc)); } =20 -static void dw_edma_core_start(struct dw_edma_chunk *chunk, bool first) +static void dw_edma_core_start(struct dw_edma_desc *desc, bool first) { - struct dw_edma_chan *chan =3D chunk->chan; + struct dw_edma_chan *chan =3D desc->chan; u32 i =3D 0; =20 - for (i =3D 0; i < chunk->nburst; i++) - dw_edma_core_ll_data(chan, &chunk->burst[i], i, chunk->cb, - i =3D=3D chunk->nburst - 1); + for (i =3D 0; i < desc->nburst; i++) { + if (i =3D=3D chan->ll_max - 1) + break; + + dw_edma_core_ll_data(chan, &desc->burst[i + desc->start_burst], + i, desc->cb, + i =3D=3D desc->nburst - 1 || i =3D=3D chan->ll_max - 2); + } =20 - dw_edma_core_ll_link(chan, i, chunk->cb, chan->ll_region.paddr); + desc->done_burst =3D desc->start_burst; + desc->start_burst +=3D i; + + dw_edma_core_ll_link(chan, i, desc->cb, chan->ll_region.paddr); =20 if (first) dw_edma_core_ch_enable(chan); @@ -119,7 +88,6 @@ static void dw_edma_core_start(struct dw_edma_chunk *chu= nk, bool first) =20 static int dw_edma_start_transfer(struct dw_edma_chan *chan) { - struct dw_edma_chunk *child; struct dw_edma_desc *desc; struct virt_dma_desc *vd; =20 @@ -131,16 +99,9 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) if (!desc) return 0; =20 - child =3D list_first_entry_or_null(&desc->chunk_list, - struct dw_edma_chunk, list); - if (!child) - return 0; + dw_edma_core_start(desc, !desc->start_burst); =20 - dw_edma_core_start(child, !desc->xfer_sz); - desc->xfer_sz +=3D child->xfer_sz; - list_del(&child->list); - kfree(child); - desc->chunks_alloc--; + desc->cb =3D !desc->cb; =20 return 1; } @@ -289,8 +250,10 @@ dw_edma_device_tx_status(struct dma_chan *dchan, dma_c= ookie_t cookie, vd =3D vchan_find_desc(&chan->vc, cookie); if (vd) { desc =3D vd2dw_edma_desc(vd); - if (desc) - residue =3D desc->alloc_sz - desc->xfer_sz; + + residue =3D desc->alloc_sz; + if (desc && desc->done_burst) + residue -=3D desc->burst[desc->done_burst].xfer_sz; } spin_unlock_irqrestore(&chan->vc.lock, flags); =20 @@ -307,7 +270,6 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, struct dw_edma_chan *chan =3D dchan2dw_edma_chan(xfer->dchan); enum dma_transfer_direction dir =3D xfer->direction; struct scatterlist *sg =3D NULL; - struct dw_edma_chunk *chunk =3D NULL; struct dw_edma_burst *burst; struct dw_edma_desc *desc; u64 src_addr, dst_addr; @@ -369,10 +331,6 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, return NULL; } =20 - desc =3D dw_edma_alloc_desc(chan); - if (unlikely(!desc)) - goto err_alloc; - if (xfer->type =3D=3D EDMA_XFER_INTERLEAVED) { src_addr =3D xfer->xfer.il->src_start; dst_addr =3D xfer->xfer.il->dst_start; @@ -396,19 +354,15 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, fsz =3D xfer->xfer.il->frame_size; } =20 + desc =3D dw_edma_alloc_desc(chan, cnt); + if (unlikely(!desc)) + return NULL; + for (i =3D 0; i < cnt; i++) { if (xfer->type =3D=3D EDMA_XFER_SCATTER_GATHER && !sg) break; =20 - if (!(i % chan->ll_max)) { - u32 n =3D min(cnt - i, chan->ll_max); - - chunk =3D dw_edma_alloc_chunk(desc, n); - if (unlikely(!chunk)) - goto err_alloc; - } - - burst =3D chunk->burst + (i % chan->ll_max); + burst =3D desc->burst + i; =20 if (xfer->type =3D=3D EDMA_XFER_CYCLIC) burst->sz =3D xfer->xfer.cyclic.len; @@ -417,8 +371,8 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, else if (xfer->type =3D=3D EDMA_XFER_INTERLEAVED) burst->sz =3D xfer->xfer.il->sgl[i % fsz].size; =20 - chunk->xfer_sz +=3D burst->sz; desc->alloc_sz +=3D burst->sz; + burst->xfer_sz =3D desc->alloc_sz; =20 if (dir =3D=3D DMA_DEV_TO_MEM) { burst->sar =3D src_addr; @@ -473,12 +427,6 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer, } =20 return vchan_tx_prep(&chan->vc, &desc->vd, xfer->flags); - -err_alloc: - if (desc) - dw_edma_free_desc(desc); - - return NULL; } =20 static struct dma_async_tx_descriptor * @@ -551,8 +499,14 @@ static void dw_hdma_set_callback_result(struct virt_dm= a_desc *vd, return; =20 desc =3D vd2dw_edma_desc(vd); - if (desc) - residue =3D desc->alloc_sz - desc->xfer_sz; + if (desc) { + residue =3D desc->alloc_sz; + + if (result =3D=3D DMA_TRANS_NOERROR) + residue -=3D desc->burst[desc->start_burst - 1].xfer_sz; + else if (desc->done_burst) + residue -=3D desc->burst[desc->done_burst - 1].xfer_sz; + } =20 res =3D &vd->tx_result; res->result =3D result; @@ -571,7 +525,7 @@ static void dw_edma_done_interrupt(struct dw_edma_chan = *chan) switch (chan->request) { case EDMA_REQ_NONE: desc =3D vd2dw_edma_desc(vd); - if (!desc->chunks_alloc) { + if (desc->start_burst >=3D desc->nburst) { dw_hdma_set_callback_result(vd, DMA_TRANS_NOERROR); list_del(&vd->node); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index e9e0346c35b1917a5ef2c545fdf1754d18684154..31039eb85079cbbd38a90d24909= 1113ad646c6f9 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -46,15 +46,8 @@ struct dw_edma_burst { u64 sar; u64 dar; u32 sz; -}; - -struct dw_edma_chunk { - struct list_head list; - struct dw_edma_chan *chan; - u8 cb; + /* precalulate summary of previous burst total size */ u32 xfer_sz; - u32 nburst; - struct dw_edma_burst burst[] __counted_by(nburst); }; =20 struct dw_edma_desc { @@ -66,6 +59,12 @@ struct dw_edma_desc { =20 u32 alloc_sz; u32 xfer_sz; + + u32 done_burst; + u32 start_burst; + u8 cb; + u32 nburst; + struct dw_edma_burst burst[] __counted_by(nburst); }; =20 struct dw_edma_chan { @@ -126,7 +125,6 @@ struct dw_edma_core_ops { void (*ll_link)(struct dw_edma_chan *chan, u32 idx, bool cb, u64 addr); void (*ch_doorbell)(struct dw_edma_chan *chan); void (*ch_enable)(struct dw_edma_chan *chan); - void (*ch_config)(struct dw_edma_chan *chan); void (*debugfs_on)(struct dw_edma *dw); }; @@ -166,6 +164,14 @@ struct dw_edma_chan *dchan2dw_edma_chan(struct dma_cha= n *dchan) return vc2dw_edma_chan(to_virt_chan(dchan)); } =20 +static inline u64 dw_edma_core_get_ll_paddr(struct dw_edma_chan *chan) +{ + if (chan->dir =3D=3D EDMA_DIR_WRITE) + return chan->dw->chip->ll_region_wr[chan->id].paddr; + + return chan->dw->chip->ll_region_rd[chan->id].paddr; +} + static inline void dw_edma_core_off(struct dw_edma *dw) { --=20 2.34.1