From nobody Sun Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 5D12A1D5CC6; Fri, 12 Dec 2025 22:26:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578382; cv=fail; b=EsZt2rmG0KYHvadfmgpqXvBvUWymlYzwbKl7/GsjEjt7AX6r2NeKcneKpPMF4BbTrCj7nZ/UptOTE51UsNW0xB3FJFwNy45UNAWW4ORPxJU8O81EfiN0qYmIOknL8iXq5eDvYWH92E+QRyX9t+MZdbVG8p7MASnE6k1sZNaS734= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578382; c=relaxed/simple; bh=CYwueOnbj62KXocJrTPskw+YfJQ/MjJl07WRduEw0/U=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=OUcv9uQsP3J1WCjGZO4RM1XJ3FM35xaeBYEvwn1EZHcvegmeTYSL9bmq2QQCUhRRMykNhiVGj/CVbd9wG9JabCgU0qgfoqvBIwpDb2400I9fwzweF22wmgUiwu+MTV1AmFQ3JsVQ+Lt3wV4PxQsIRcAavygVwSBZ2egTzWNKZ4M= 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=jwSFBxUx; arc=fail smtp.client-ip=40.107.162.60 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="jwSFBxUx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aD1tluTQzWYE9Ypow7hLLpl4IkK+5Xoeg9aaYoMiNltBRUAi46QiHFvBY/W7nVE9IhlGPSQIQ+G7NZ+VrG941iHgzYdiEQAjvvu2saJyvFmrVa7LXBzzSv/DRbFTg8qskdAVxveGJ5pPsogkWM06Mmx7BHd04apaRWjkKgGUMh2LcM5dW6ie26ICyRV5VZEiYF9j8g/bktyxOFp0dGkSW8yarSdg3uxuTK0RxfK+NaZLCnhY9oaudEK/kgnv3omiDf5JaK0N3n3dNdsVc38O0Q0ZUb/G0voqMRmGYEWA1tiGQj9rFQHOdZsqBrIb2Wm6K99nCGHovVLXgLPKGHGF2g== 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=VPtT/zMjd9EwCVCfxOer5C8wAwixkQ4CR099ivp2F6U=; b=sgyQFl/Xa+KFEIoUjO18sZOddDNnADrGEVyIReEwtIou6jdvRhmnwHUZWiuh2+jaSZSzj1zpptCCqG93l+fkKjrO27SAyWPhn+TrQwoYxOVxRi8GR/AqP2wuq90z8bjqOb7akHNH1Ybz7ShFGsU3rRbWooaldWdJFPAOQas0pQkQ6f6YYDZ4yPI34o9SSKxd0J1CU78BbKwpNovZxy+nvpRC/yURr2WYQElkkcabWIlfSr20laCWV0Euksjta5gfNkBf1PJbuRu6zwgnGfdgIxn0vHcAUbSZu5XwvCaGMNAkKr+GhAAWelqiHo+4Lh5sIaq55/NXOMMgiYTN1mUbvg== 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=VPtT/zMjd9EwCVCfxOer5C8wAwixkQ4CR099ivp2F6U=; b=jwSFBxUxzwKYimAUqQYEz9AT8e2INYqugijsQSg0sLjXOCz9ygLIKlMxsFQnwxReG9FJBZxPG/iLpsdGptLJl2BtEAthLyiNdm2E6nIvBweqtLr7HZOXvwJ+yJ55qFmariHpr2ohEw/oeYgI+2jGAcJ5IZS5gC2+0vZ/p8XwaQoeq3wPP9sAGBJrPbPm3xeKUgYvKvY8T7lBlq+IonrD3zoowYvewfLn4SanbYFgZ1YuelXXP7ddWrdyirW6gwz0JphRoraoAceEW/Yn1Wgs9zgHv/RNHugYmsM1TjQOkLb6tsP+nU8rcZfBHw+Cm/eSz4BRr5PhSHWYHSqhO4vNPw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:06 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:06 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:40 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-1-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=1905; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=CYwueOnbj62KXocJrTPskw+YfJQ/MjJl07WRduEw0/U=; b=zKIMBUu7mERZz2AxuGd5ccmi6EJ0zDurjeqDft7VYEZB+QrbMH61UwA7O1GXh1Wqx3OWXgQRv 3i+HnRHCS5PAxGJwywxjihNu3hB/BNKauhoh+7J8dBVgC+HlsITJE5u X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 0661267b-6e5c-4033-95d0-08de39cd4d91 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VG1pV2RlSjRtVWZ2eWE2bE9IbW80NTJXMFR3ZnFPU0Q0RGdiR0lIMEx0UFdM?= =?utf-8?B?MTZjcTNoejBKM3A1RFlsYlJPQjgvaWlLb2o4SllEUXM5QWJQU2tBTXdTLzB4?= =?utf-8?B?UzZHd3lFNjh1WjAxTGhOZEFDTVNzbHVybWNtMFRpMmN6ZkxiV0w5eDAwb2ty?= =?utf-8?B?NnFPaHB4SDFYWU9PcTA2K3R0V3dmYUI5b1RicHRRVlpmTFd3dTJ6ci80L3BP?= =?utf-8?B?YTFuNGROSm9FWVRtTjRYMTBnbVZZZFhuYUU5cDY3N01Rbm5PbkpPanNzWlBZ?= =?utf-8?B?SHlYRkhWbmJaUGl6R1RNaThNVlMxVDQ3eWJVQVNpdUJGcFlNZms2ek9Bdy80?= =?utf-8?B?WjI5SXZHYUJnaVMvS3N6amEvY0xPdEx0UEwzOEl2QUwxbFh2NWU2ejgxSUdI?= =?utf-8?B?N3Z0UHkwS0lKeGd5YXI2UndLWGoyZFZKS2tMOG1lT0FPYmFGWFg3QlNIRWdU?= =?utf-8?B?NUdIVURtRmJRZ3NrK1A4blJjbjhIMVMweXBNVWhLUGkzaEJqQjd4ekhIWk42?= =?utf-8?B?dHViZVNYU0R3TkFiZkNMblN0OUhHemdJTEZwbnpTTVlkemJ4R1dMMUlpYkZK?= =?utf-8?B?aUI1Y01DdW5jN2xNcHRoZmlkeFgxRU04UGtkRW5ZMDFmelZiZ1JBbzhRTGxJ?= =?utf-8?B?QTJCeHRobFBNd1VFM05lVW15eER4czh4dFlTK0w5cE43U3VYdUVTMm9SZlhk?= =?utf-8?B?S0hFVklCOGRZY05zeW9FY1Z2NUJkTzVhKys3TDlTbzVmazJJaDdOeFFwakF5?= =?utf-8?B?UDFxSTNEU2F0TmhacDJTUVl1aVlhZmtSemdLOWhCUnFQVEswN0U3YUxyUzFS?= =?utf-8?B?QWJvME16RzlzWHEwcHdOSFA1dnljU3JUcDhWRldoQ1UwanBMeVBFNUpXakRv?= =?utf-8?B?cmJ6Q3dhb1N1STl2VFlSYzRMUDN5VC9LcnhEc3k3cVp2YlBiWk9vd3NmUnBE?= =?utf-8?B?bUEvRGNUdkRqbnlDWWtwclZzVW52c0kxR005VHhWTmhZdVR4c0tad0xjZUVU?= =?utf-8?B?S0xSYlhxMEViWTFmNTd0bS9VbWZwd1BDaXVMbU1CS0xBVzdZZnVMTTdSalhm?= =?utf-8?B?YytzUmZWeHF6KzZMT0UrMitTeG1QVTBxcGlpQVBCdW91TzJ0Mm92L1QxRFlq?= =?utf-8?B?M1d5TnhpSGx2VXpxYkNXQkc5RHc4d1l1RkluQnZNaVpqclBOTGdZMm1NYU9W?= =?utf-8?B?U0tuaVBrQ0licHNlSEZtTldrNk5CQ1B1WFZMdTlOY0JBU2RQNXFjdjNLNDZx?= =?utf-8?B?Mm45bVFFTll3cytLc0FTeXJGd2RyZEtzYWlpanR1QUZwS1RDV3FMRW9qRm1T?= =?utf-8?B?bytmR1I2RURoeE1wb2FoOE9oZW04VEQ4cUlCMGxnV3VuNWY2UzJ4bjZvdmt1?= =?utf-8?B?VTAwdkZnZC93bkt0RTJVd1l0Z25IN0JFSWttd3JLS0ZTQi9UUzhaL0wzRVg1?= =?utf-8?B?K3RJRWloV2FKeXJoVk1zdnU4V1ByTktBeDZ6b0NDSFRJUmVObGRneWg2MGlW?= =?utf-8?B?Y2ltZHo0U1FTWHA1cEVSaXlidUkvWjh2aytpMDRkaTAxUlZvS0RhTDU3LzV2?= =?utf-8?B?bUJLYzNOUzdHS2dxcWxTSWRlZDdqZThMVWx2TU11Yjl2QmU1R2Nld0p0Sjln?= =?utf-8?B?NkVLYmFZU0R4aVZJSFpuN2VQS0RScURMVFBUZ0pnNWtuK3hNVmVQbDZDOU5P?= =?utf-8?B?MkdVYnN4ZE1YZW1VYkRZTFYwNUtSR3RMRlVNaWRNN0dxZHRFVExTTUFpMHJF?= =?utf-8?B?RUdSMmhWb2FxaUdud3drdVB0S1loeHZXVTZZUktkZEs0YXFxTEdtT0k3ZHA3?= =?utf-8?B?ZW9BSUZzSXJPbG92QlNCMUJDbnljRXJnV1VMUUg3dlpMSTNBSzlRM05wWWRS?= =?utf-8?B?Y2RvVlBrNWFqMXp1VUt4Vm8rQ2RrVWtLRzM4TFowWTVGa0hFOUQ2S0swa0dR?= =?utf-8?B?aGQ1eWdDMGpKYkVRZVM2M2xkRGZWdGJTL2ZiZnppZ1BrMXVPdE9tTHJpMDRz?= =?utf-8?B?c2xlRVMrbnBqS3dweXhFT2VsMEVJV3RwQ0JWMUFrWXFiVnlRcmZDR29tUWZH?= =?utf-8?B?dm1pSlh5Y2hXdTlHWTZUOWdEUThZUndPMDNEdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZnowQjVOczdIcnA3N29GY2h3U1lsTEZlWC9nVDBTQ05oOVQ1Z2JQZUNPeERy?= =?utf-8?B?bXRWOG1NcXFJd0dMeFUyQjRJeUVmajVmZ2h5M1ZxbnBhalo3NmdCQ3U1c1BE?= =?utf-8?B?YlhOdUM0UUYyQTd6TzFWaDl3b3IwWkJEN3dDbXR3ZU5ucS9JRldYWE9VMWpv?= =?utf-8?B?WncvOHlrUEg4QkhYSFFaV1JqY2NhRndYdGdJd0JDY0oyQlo4b1grMjV5Rito?= =?utf-8?B?Yk85dERaelpZODFtd29hOGlVVTBBZ1grZDFCZzFSNjRQYitHTnBuc2tnSW96?= =?utf-8?B?dzBaekc1b2FuRG9IL0FOTzNzbllvQW1OeVpldDlzbjhCTVBOcDNDSzUxNUp0?= =?utf-8?B?S0JEVHpTT1A4OWVHWWdSSkJxd1VlWmF4QmI3VEtweitSQTROem1BYUlzTkww?= =?utf-8?B?YmtJTEY5eDI1NnRiS213MTkxWTFnemdyb08wbnNmZTRhcVh6SDNJMEZaaklO?= =?utf-8?B?eDNtQkEvWmpNMXNpc01rVnFoMVh3V0grMnJkeUxycnBaQ29RN1d2SnJTK1ZY?= =?utf-8?B?SnVBbGUwOU10elZIZ3BWdytLaGNxcUtKdVZxNXNQZlNhQmkyVDRVODZFbVJh?= =?utf-8?B?cHFtNEhzcEpaMXNoTGFab05NSEIxSm9nZ1NNWlo0SmNyT2UramVWTGNYVGIv?= =?utf-8?B?N3JaeDR0aDVLNG0wR1lUUmJndk1BK2ZXa0ZGTms0ZGhucFE2dWUzL0MrK2Uy?= =?utf-8?B?RGMxK2p3Vk10OTF0WTl0T1greHN0S2dDSS9qKzErdFlVNCtXcHRMSGxlbEVC?= =?utf-8?B?Y2Nod3JuMkNGQ2xhcFU1dlNnMHdZUEtTdHpOdXl1ZkdhSWFJZWNTZkdjOWIr?= =?utf-8?B?RUY0NGlCOVlLRnE4M0hsdkE5TmtlN3FjMXA2WXdmdFZhM3ZYVkJpNG5MU3NZ?= =?utf-8?B?cEFUMTRNSXMxVVF1dFd3TG1IM2pkQlFyUHF1ZTVPdGJiem1Na21GMUJ3NHBH?= =?utf-8?B?NHFtd05pdTZzNW1hVzcyRktEaVJUTlFtZTIwTlh1ZlBOVnBXZS9jeDdOSlBl?= =?utf-8?B?S3pWVFhtY1QzTytuUVRzdGxzU2hYcFU3dDYrY2drVEwzS2dWN2daUzZpaUcv?= =?utf-8?B?VzV4c1dmN0RyNHdGcVJKL2tvREhLdjB2bDFHbjg5QnNGS1B1eThMY2J2UWlu?= =?utf-8?B?d1BMUHBCcGN0b0JOdWlZWmFaMUE0MURhaWNieEZYZ091QzZJVEk1YnVuUDBk?= =?utf-8?B?bmRSSmJ5czRDL0V5bTBYakJGZTd1aEhhUlZVaHF6M1h3aGVPeU5pWDd0V3JE?= =?utf-8?B?V0NjaVRxTkdiM3o4Y2hIRnZPNVhtNjB6OS9keGx2OXIvUjNiZEh5Ny84TDJ2?= =?utf-8?B?cGF5dTZVQy9NQ2g0SWQ3OFZIZGcvYzFabnlGcXVCL3phcitKUzNkZEVKalpS?= =?utf-8?B?azVwWDFUZWk5VFlYQjEwaUZmN2VOazM4a2lNMG1XSHNPQWJZL3RVMkozSHRp?= =?utf-8?B?ZVRQck1ZZCs4WEYyLzJLck9sem5sTTB0aVVMSkw3d2pZSHVEM0tqTVZ4aEY0?= =?utf-8?B?cUpRVmxLTi9aZVhwNWpQZHl1RXUzdUZsUXAvM2J0ajhCd2xNQjNqbXZiTlFq?= =?utf-8?B?cXVXOVBsVXNCNi81ZWVGR3B6WlhQdkFVYnVtOC9RNHlkUXhCM3o2aXQyaDdo?= =?utf-8?B?VG0xZTZZREkzbExFQkVhZnAvOGtwdzlPSENTd3BJeFJuR0k1RHp6TmhCMEth?= =?utf-8?B?N3B0M0ZpODRRSzlFTCttRE0wZ0Z3Z2tZWVYzVnZxUFF6bU9jOFgyZWdGUnZT?= =?utf-8?B?QWIwK09iN2kyRzc3bXM4L3pqcktibUpVZjJCWE0zZUsxbFR1TUc4RngxNVdT?= =?utf-8?B?YXpDS3JTdHZQM201SjhETlZwZkh1eGVac3psS29uTnJ0QTIxbDdIQWR0R2JK?= =?utf-8?B?VEtjZ09yeGRaajZEdWcwRWpIN1UyS0RURE42dVhGME5ibE0yWGMyTGRGWTJv?= =?utf-8?B?ODhyaVFPLy9pd0xlMmZuWjlNay91azlMdDFjMS9wUVM2QnZHU1NaMkwwem01?= =?utf-8?B?L0RNOG9WSlRzNXlvVkNoeC9YVE1Gd0FYalh4MXNWQ1hBNC9NSUxMUzdxS3RI?= =?utf-8?B?bVlLM1lQTDJyUFhKUld0Uk5kVWZDL05CYXE1MTF5U1FPUy8wRlZmVWw1STRP?= =?utf-8?Q?za0NN6jmGIwG6NdIxMyr5G+sL?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0661267b-6e5c-4033-95d0-08de39cd4d91 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:06.6757 (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: lDzoNGxjJ5OS5WPCMLjBcorGBSWBMcoHsoeRxSmwklkqPQDjMBL8HjcFw3NmKlHBOD1RHYYXpkaX3FcqpO/Z5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 --- 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 Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 906062D7DCF; Fri, 12 Dec 2025 22:26:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578384; cv=fail; b=k81KeooHFWvSFrdruThOc7V/7pkIHN/lv9Ta9ZRqVKeqyHidc53Jv0B9KTcQ8IxndKlqNNDoYWYDeLutBqPtn8lV1AbWkLtWbou2OlT0SYy/DTPHldsa0ljoHu3Z259L8cT1yNfUWUV0camGMuYjWwey++45BJuRw1ZAOdWgaF4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578384; c=relaxed/simple; bh=Ee8HiqhZVyhqwGOSxl3X+NNbfup5c8f2QFFTSVFP+54=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=lBz2/DlJUzy4tOsKBZ+33VgnyuJbYQJWG6fmcagm42GD2G8abWsUGmrvgYcusvuaMC6ne9ZIh5ZX4JW+d0k4W6HwA5UmgamE77JpiSmAHLjhJMXg3EmsEPicMc1kB577rSSYudVwOtxoFu6Zgyy4Tg5mMMksaZOJvR2a0RQRgj4= 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=CV7yAGiy; arc=fail smtp.client-ip=40.107.162.60 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="CV7yAGiy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bmC+U40ywiyCEutWIWjCbMz1yy1lnDbD6cNS4vQFymnDk1ztpxHkBqmTWwv1I9S1wynAC/pQKytFGOK8N/qD2NdEGwyHdiKiS3el0D43d8rP2iTGqHsfJeKWpVBFJvJY+CEQHco85VDmxf8a1ibtmPhWxWy+DPBZq+IHbzj4Qmw0ANrdPM0c4oalbi5D9oTmlBowaljlqfnHXZ32Ldp0JFchlgr6UsrAkhrW7xu2C0XMSsbzyp28+BF+7j9lqJwJO5aC4FnsaAE4c63TDHBsa9CPmWC/BrdS665Mwe1ErRMuiPdG9NtLc2dVsLa/dLJaLHh+Gv7MUAC867WtKrT6RA== 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=QxoJLDoKDiETMry+TbRJCJpgyLRuyFt0T+rSoCrPxLqEg/7GyXS6CxKlZS8WNkdcXo9QHRz8O9BRNI2vI60OfW6U1JM+KxSh8QBd/buPIIjJEbW2YO23ZGyo+2nTYrx+YDpumDM1gw9Z8gI/wM4heGd7c3gFt9IYtUm14bjvnnG6Y5n/Kn0cXVhyoGJKIvJ3+nJfbV7WRxjv6i2rRtIBiYyGLGSJufgjQ23bxjhzouX0o4log4gYFYwZC5YLatS3DNF12i7n/Gx6yzjG8lp4Uyd8HE3wTF5m+U3dhb4ZBMq/I9dxo9+E7TxofW+WGw1mcxyu9bFg+QCdFwT+jjSXKA== 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=CV7yAGiyFTXmQO9Fo2U/TgCA4u6qanSR1lbfKoZqfp75nFQx6vBZrPhcB6qhmyu5Oui/R7jhvl4q6AE5HHIBXxIWO8jOhEpSfLEuyTKATTWdD1HwVyR4OcUoVfAF7yOIhsFCzlL7UHUGDunl6eQJeTcNWSIWbYqH6V+rOy8enjWT5ug+P/A9OUcOtINjGcV43MNOIvsepwdk2Xq2cfJINhM9KpR9Varze2kTkq7Y4dYgqBK2+EpABhdCnNjXOBt6OT2dvnt/vWeOTom5FDz58icr6zn00nl+3FTwua4WYPSHqEIZJ242tWcvyxXv/JKH0DAjtQzpdYd2x2kFWJHwww== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:10 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:10 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:41 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-2-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=3587; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Ee8HiqhZVyhqwGOSxl3X+NNbfup5c8f2QFFTSVFP+54=; b=ISCV+hGz57U3Z94cMs7Xivm/4iXJM7TV+9APS1GJVAdR+iJbQRsyu/KRwIWt64Ed46cqtlhqK WhQhyJqThJpBqkRpBL9IZvLEDk0VuMftwL+pjPUbiaTea7xhIju9bO+ X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 23f8e522-6a18-46dd-1aa3-08de39cd4ff1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RE1FbVkzNFAxMWlQWDg3RDBHUnMvbmZZbmg1SmNqZzlrUWF5VytPblBRNkU2?= =?utf-8?B?cWM1cnRoellCU0M5aFkwc3NGVXZKSkRPbmEvRDg5RlZqY0tSN0M5TW9NZnZG?= =?utf-8?B?RjBDd3M1OE5EZXI4UDN3Uk1wVHVGQi9QRm92a3ZJOWo5TE1vamlUaFNWbUlt?= =?utf-8?B?QnNpMlFZQUxMSkExRzhUMWlmY1hlVWczcVE1R0FIUHJLSzJvdENaUWYvQUMz?= =?utf-8?B?ZlVMRUNTRDZJNEgzaXFGVU5Qc3JZcnhRUVNKRVN5Tnd6alVweFRpSzhkWVVx?= =?utf-8?B?ckdlU1p2Zis2cGlXbHZ1eFRRamxlM2hIcjBobGhTNitiSTRKbGExUDEya2ZU?= =?utf-8?B?Y0kzSHZwRHQvNm8zTHJ6REpORU44VnVEY2N0M1JNWVNLZHprTVhpZVNQTHZW?= =?utf-8?B?bS9YTkVHSU5JZmR1a1g3RUloZVBEU3FpWkU2Z1gwRDE5OGpVZlI0NnptUUtK?= =?utf-8?B?OG1iQTUwN0VydFBnQlVzRXVyY1JZL2QxVUhmbTdmWXdnVGgwQVJucUxOVFdw?= =?utf-8?B?Q0I5cXZGaS9lQ1JzOVh2dngxREp3Y0thM1ZGMCs0R0xCVHFsYm9SRHBDN1pJ?= =?utf-8?B?NEhvODJNK1pvQ3pCZEJoTldLTS9BVjZoVkZ2aVcyUW9WN1lLc3gxdUtHcjRw?= =?utf-8?B?ZVhpTU5aMXdBV2RhMTNlTXFWQ2VFWkZIMGxoYS9NQmw4eHNLL2p2cisvak9P?= =?utf-8?B?RDIyZ0dBMldld2pmTmVTWEgrSGdIQ01vSnJ1ckFSVEF4RTg5VFIwK1FkbFdZ?= =?utf-8?B?eDVZb0dmZTFldEZTT2tnNVdMZWhNd216aDQ0eUk3dzBPYU9RTjRSRDEwTmN3?= =?utf-8?B?cVlUcWd1T3hxN0ExaFAwN1NDWEtGSFBURzVyNXlNWk4wQyswRDJLRFBjMXh3?= =?utf-8?B?V2V1VjZZbm1sUEVkMVVPZ1JvR2hydEt5Wmh2a0hBZW0wL1hrWXZFM0Y4bFVh?= =?utf-8?B?bjY5dU94ZWNmVmd6Mmk1M2R6dXUyb200L2c1NlVhVWh2S1dPaEQxTForWUNR?= =?utf-8?B?WkZNSUw3NjRzM2lKb1Y2UjJCcFlZa1lYZVdVSUNmbStnbTg4OXFrZzcyTWJv?= =?utf-8?B?N0s4cUp6Z3ZJYTllU2JiQyt0VWZrY01vcTlIWDlhU2NWV2MvbWdtVHNmdWdk?= =?utf-8?B?U1FIUldZZnBkUDUzb1pCYWhkZ3FhWXBweEdzWGl4bjlLV3lWUjlRSGtTYlM0?= =?utf-8?B?OWlFRUVHaXFLUVkrUDlvM2Y2VFZBd2Z3dHVKelpQc241SnhiMEJLV2ZBcy9F?= =?utf-8?B?MkVZV01sYTFXM0hlMWpsSmR1LzRKYTdIVmc1cnRaejExd2NtTFNhdVFSZUZY?= =?utf-8?B?SG5QSXlmaEZhT21jNW5uVHdmanZoVTZBR2hjQ053TU5sMVo3U3ZMRFdRd2U5?= =?utf-8?B?REY5NVBaU3czbmhoTGdBWEVDOTh5Y0VUTXdvTlJBYjVIUXNmOHdXbkovdVRW?= =?utf-8?B?ZXJUcG41dE5rVWQ4NkYzK2Y1dStVMmd6WHEzWjlYOXAvRjZXYXMyYW1zNmU5?= =?utf-8?B?bUduZC9pbVNjR1htNmpvN2xTUnhjZUlLVzJSMWZwbHNaWEZuNTlWWjlGSlIv?= =?utf-8?B?cUlsd1Mxa3ZTMmtpNnpWNjZCMzhzTll5U2loZ09vSlJ6NFA1SHJKRmpjNEhr?= =?utf-8?B?OE1RUGJqYUpNYVhab1BhWkxzK3A4cDZuY2lmQkJ3aWtZaEluL2xUV3lmUmlO?= =?utf-8?B?ZHBvSkh6VHUyMjR4cytkVHJFSjAydXoyeTlNZVVTaW1WNVZEaTlIc0pHWEt1?= =?utf-8?B?RUpiWUg3c0JtbnI2Yjc5dDZaakt5USswS0FUTXNQbHpWWnBUNjV1S29TbmRO?= =?utf-8?B?MnVVaFh5RzR2T1V6VWdVMnd1M2g5MnhGamRkc0thUkN0K2NrQnpjdmtvR2Fu?= =?utf-8?B?QUcxcmUyQ0NsbXBpOVJXenJ5QmVMWGhJZ2llMnFQaGw3Z3R4TFRtVzRFWDN6?= =?utf-8?B?bWdYUENvT01QdWhMTHVrVkQvV1FzbVMrZU1ncnllZlZ3aVFtdjRxcDZxU1BC?= =?utf-8?B?RE1RTGVMODRWMTlOQlVDU2FyZkpQazcxT3dZRlhNdVVhS2czOWc2SGRFbnJt?= =?utf-8?B?TmNUL2FrdHFQV0JRdXdBS21yQndFMmVQSDdidz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QXA3UXpmSkVYenJYUmd5aFZjYU1BeU1iNng3SEhPZjFhQWpOcUc2N2FJSUVP?= =?utf-8?B?ZEZIZ1pIbjRoNmF1YVpYOG5YRi9weXd1d252Um1UdU5PVHpWKzN6RUkvTnZj?= =?utf-8?B?M25NM3lBOUJWTGsvMDdhMGdZTGp2SHoxbVNhQTgyejZLZ1RHWHoxcExXQVcx?= =?utf-8?B?MnVVaGxTS3NrOU02QnlKT0Z1WWdKcTF1blJFLzVFZlRKUkpCWnErTWZheHZZ?= =?utf-8?B?SUZ4NGdYWEZjSHQzdEk4RnJXR0dYMWhYbkNFM3d5Zmp6M0VWNUhPSFU1djN6?= =?utf-8?B?blZXcTBLanUzUndZSjlwTlJrTFZhTjRubU1vQXI3UEtzU3NkdDMzRzY3REEx?= =?utf-8?B?NG5IcGNDYS93K21EKzBUWlg1Z0g5djZJbHR1M21MMW90Q0RFMjFBR21QUE5K?= =?utf-8?B?bk5oRVRhOUx2ZG1Yb1ZURk12cUNBMllySU00WEszQnkrQnhuS01kZk54SElr?= =?utf-8?B?V2lLMWdkdzV0RXg3TUNmUE9OUWtkcURWMjVlME85ZVQwU0NpSDgvd2plVVNi?= =?utf-8?B?SVRSUTh2MVVyZ3JkQy84S3psbmt3RXROTkJGZktDZ3lJVEk5NGFqVUdRTFlj?= =?utf-8?B?ZUVRbG8zV3hmcW1IOEkyanVDaXRIc0VFWFR5TDN2UUZOVVZYdFlBWkZXSXYv?= =?utf-8?B?WDdtOGZRNEdrMXl2bzFCQ2dGUzFXUjVmUGVPa0xNZ3ZkbjBBanpxWklhd1NN?= =?utf-8?B?cm1wVnRVa041SHdveXlVTzdDVk8yUHlHd2NSTVc3ajBkQ0VWMXM2RGhjNGNz?= =?utf-8?B?Sk9FWmFEemFKaVFhT0VhYldQemtmQVBSaW5qMkI0QXV0ZTB0QXF1WXZ2OWxv?= =?utf-8?B?Ujd3UVBjSjZEVGYvMVZaTnlMSldaVkU0dVFsMksvcmVOZ0NnMUlzeWhRanFw?= =?utf-8?B?c3FKMUtFTWZLdmR4ZW8yUGtyT3ZrU0RKMHVPYXl0dEtvb1M1V3g3MzdwUTdr?= =?utf-8?B?WjRNeUFkL3BFRzgvcVhyeVpvTGNrN1hJem1pOWJiS05neHlrZFlXSE10VWFR?= =?utf-8?B?dXVXN01LNXQycmEwcDZ5cERnQWFBSkRBdmRSMnpaN2ZBalE0NUlmdXc5TG91?= =?utf-8?B?S2FZOWdOK2dFNFBhMFN6cGV3U01iZlZraTNydWZrS0pHSUxOc05jSXlhSXdF?= =?utf-8?B?c0JJb2ZUNjVZU1lBcWVEMXVqSEhPQzhmelBvTjlVMFpZeER4QmRuU2pNRDlm?= =?utf-8?B?UTFISWlyVCtub1U4YXQwdjBHVVAwaWU4c1ZvRklCbkNFTDkzNWxMcG5PYy9R?= =?utf-8?B?YTJvZVJsTWtubDNvQWlBdEJhdzBBeldVUUNSbTRFaTMzamZrMzNhME9UN1NE?= =?utf-8?B?cXdvV2NVbWM1YUlFMU9xc1JQZWh6OUpVeTVEcVVFOW13TkxGODR4MTNnWWVz?= =?utf-8?B?TzJjNlJwbXZjZGdNVlNqaGE0cU1YRmN5RW1zLzBNUVBzY3dBUTZkdVp0Y1Fq?= =?utf-8?B?WVVaU0J5aVduQkZOUGVCa2FUOEEvUGJpRmNlK3ByRHJxU1kvWStuUzNWNlI5?= =?utf-8?B?d2hNQ2FzZkdDOWFxdWQrRWo4eFJ2Y3BqRTBwaVdpRWFrTnlVelZXeW9EL1ls?= =?utf-8?B?WGZCN2U5MHFJT0xxQ2dFdzNNWmpRYmd3TVQ2dkt6a3NvVGJCc2tENjZDUUln?= =?utf-8?B?cW1uNTErQXJEZENsaUZ1dlg0Q2NEdkQrMGtzMktSMXA2dDBlWmR2UFppY1dS?= =?utf-8?B?MnNXeXZjaVUvR09MOFpHMS92WEpjd2NEeCt3STdZaXFLYmY0Z2dPUE9FeERR?= =?utf-8?B?L3EzdXdDYiszMnNiQ3NyQUFOMUFCTTRjUGhGQTJENWVHb0R6ZjJmK3F3S1lT?= =?utf-8?B?UnFiSFlhVFByaHNZSTdIMWlFU285N0QrQk1nZGViNloxNUV5T29HOUUxNzRu?= =?utf-8?B?cXpuMW9KemVhVnF6UlA1Yjc5UHpwSElaMnlDTlBQUEYzK2xpcERKQWwwN05t?= =?utf-8?B?UFp4aUY1R0Vqbmw0cS8wRXM5K0pkWFJEZ2lWTkFQTC8yTW9TMTc2WUp1NDdR?= =?utf-8?B?S2ExWUJzU0FwTG56d1BjT1NHWXBBWHVaNHZjd2xmQ1BLdXhFRVB6TFc4N1JX?= =?utf-8?B?eGRRb3NRVlU0RllvNFZVbGtXWjJZUFMwem91K2Nzc2NBOGFaZ3dVSUprMVpm?= =?utf-8?Q?vc4n7pu+trzPeTU7d4UkC03lG?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23f8e522-6a18-46dd-1aa3-08de39cd4ff1 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:10.6753 (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: Io14mMpAFrTm7VKZGEh+ZnYjr1zu7PFI5UJuJ3EHLrQ42jVDDwy7GeHZtcKg8h/NGYXVBRdOXso5Tkl/7kiJ7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 Dec 14 06:37:37 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013044.outbound.protection.outlook.com [52.101.72.44]) (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 1F13430B511; Fri, 12 Dec 2025 22:26:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578385; cv=fail; b=XHvlTR/mLQyobZB/qS6wYTNw+6WWQRDO0aGc4NxAr6aOMy+k+gbWc9rUQZe8NCHGztU/GPkOnj82tCwvAnK/uEtlSF2dDi1ytrU0YcCcaIyPh9KnPz1wccLQSx4ucf83IsFuUDgDlxen1kP3U5T3YTix+QjnCpxeOoS3C+Km0QM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578385; c=relaxed/simple; bh=4IOZc5bn/cXuVYiNt9uCCiSLEc7b5zqzANKyR82eX7A=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=e/umWFi94Onq8/53Fsbn4xqmsX3qmdkqkzP0FQgE2qqHZ47OimG9dSzV1Fj7B4DcoYP0OLcSqwZAKD0oN9OBdihNoGO5tq/fvtkli+p3SF/5bYzFXMlnFjFYcoLDDxRHy8O7vdp9q7e1WpSfCcBJTu4fvdnRa+TjVBmTQcbEuek= 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=gby9dwxE; arc=fail smtp.client-ip=52.101.72.44 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="gby9dwxE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qT8StS4lqLleDnbjs7Ft6LwXAD0Tf/JgZQ7+uU7Wb41/E9I/GxDEi48ymMq3UdhuU5P8TO7Nze0xl04w42tA+sOdqEVMLOLdSyHHl2T2ruKxsIq70gs92g2aXsTMn27wE8LMp2SeKYtbGfgvMBaFAGt0vPGMi0l4OltuM8Qm/fKGsbCLWVn8rjAuPLhHpHUyE4pBa5YMk1XtoXENHtZjdwlY8K/wLqlnEOtpG7URMR/687A4hAed8eLuZ/kU8WYVLPhFNX7IEqxpjfttAU4cW8Rj8DX8PwstGxUC8Ro3LcNbzNdtDiuNSyKPxCaBF/AWZJd/IT8cNS1q9+yUPK5Hug== 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=jWyqLyZGg3BEXUDqAplGpcxURvZdqqmfRwVtf05gGXGqPJo8CIGjqNra2CIh4fYmHfpfltpwRMLcGSAJNTEF79OC0MjaFMisBq8QQz/XL+Z1URSfSKUk3i1o9FCnMFS5bnMjTIkSjrDAQCwDj2BY+Qp6UIH/DwPcXMkzt7rnK9MVoagmrB7+ReF87cvpvLa5MuHzl432Z87YcsjViWC+geEDvXUXQ6QZLsoJyU3wMoGkOMKIGGrwMuNpSjfcFshjVtsY03j0rdcYgv8W3NR4EhiClK1XBKVsEGkB/GUWkNcShiRKGBH104fiHnB6xe5qxCGDlRno0xRoxPSqdsMinQ== 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=gby9dwxE+JrmvPPwLtOT44AehXA3Zfp1zQj7n677gxR0sZD5KZ5FkTzd8HodZCT54xwJRrD79QKL2ZJevX4BMGuza3aI6pgxE7ZiJjybCW/zta5CHrfDOl/JaZKtnrA8B2uGSiRDtNVQ7XSHbcTA09WePcYH/0ZK2F/MJSR5MIUThxFMIW/YHwdaZFhTx1eRt7A1yPd54KZvwiHhfv38dkw79RBu6aDf+chCpUMfZoUqgEURNmtdLwKsTWITk66DHyLNNWgxoOHTTWWMk13PL4PUVYviN/Qj/B1HmHKW1FIwbhnoVgfG1pYU2p9jK/oip4yDCk02nywsl8wgrMD2dA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:19 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:19 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:42 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-3-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=1785; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=4IOZc5bn/cXuVYiNt9uCCiSLEc7b5zqzANKyR82eX7A=; b=ntxELZLOqrjEhrbSLf83c0q/WF1Bi0k9OQ0sgYM9hdLcJe7CPj9c0q2P0l/v3wLlNLdgVGs3i M4Pi6ex/ltgCWywroC6WJTEgiX0n9I2hGEV7Yh16SrsoY/OxP4OqJFB X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: aa3635f7-6fe2-4d05-1bbe-08de39cd5249 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aDF1NWxWdlRBeXc5Q2dDempNL2doQ2F6S2tjL2ZVV29HNkZZbmw3bHozRGpU?= =?utf-8?B?ZGNNNFIrK1NqR3NsZ1R2Q3VsREErZjlRNWRLS0JWcmJUWmVrNlR1OFI5NUZT?= =?utf-8?B?MnNtbitXdzN0TkpqeTg0QWNEOXU2b1B6bzZiTk4zK1VwVDFPWml6eHcxR0lx?= =?utf-8?B?UW5CWkM2SFl2NmVpZHFJU3pNRDZLMDdwaWtSN1JNaDlWaDVycVFiT3I0cEli?= =?utf-8?B?S2trT0c3aVFiR3JBZW5LVmJrSVlNa20vWVdZNnFUK2NkQlA0VGZlVnhwNnA2?= =?utf-8?B?S2sxbFV0RDVlSVZMV3NESzd6bldDb0t6S2Z5U05lVWpHdWpHMWE5djdnVUpo?= =?utf-8?B?RzAzcXhib1FmV2k1U0poNmlFWWd0ZmpYZkphWHI2NW1icWoxbjdTTkNMV0tT?= =?utf-8?B?RitRb3M5aFUzNERaSkgvb2ZlYXdGd2ZiM3M1Z0toNmFGU0ppQzkzVTJaNHZy?= =?utf-8?B?UWkzSEhyZHVjTzFzZmRIM3k0MXRSYlI0TERFYkJSM01sendhYlZoSzFSZ280?= =?utf-8?B?MGlSbFp1TktGRzZhNE1mVzcxaTRRWTdSQklra2Q5MGhsS1lsejl5OHFFbHEr?= =?utf-8?B?Y2xYRm0wbXMydE5WOXZlaDhmdzJjS2lSYUlRaXVDaEFYcVhTRlBNWjhIdHll?= =?utf-8?B?ZnBtVmVLaGNmejMyb1JmSG9HNzRjSnB1c05PMWowd1lyaDhob1BPQ1Jlc0ln?= =?utf-8?B?NzlWYm5TZDRISm1WcWw5MVRNYkM4cnBQRXVEZ3Z4SzYycFpJZlVtbDl2Yk45?= =?utf-8?B?S2hTeUhNbzJlY0Z2U2J3SW8veUZSR0Q1N3pacUowVkNJN0MzSTB3N0QzbVlI?= =?utf-8?B?R29ERExLZGM1Sy9ES2c0K2JUb2hVNHBZcXZVOEYwM1c4MlU1a0xlUnBZWDE1?= =?utf-8?B?ajE4YW94ZDVsQVhFeWQyYzZHcHJQOFMxV0VtMXJ1VlRVL0ZqcnpDcTdGMnBw?= =?utf-8?B?eGRTQXJzTzNLU1JWRXE5ZEp3eTUxb0txRDkvZ05kQTV0U29mLzNFaERxZTFh?= =?utf-8?B?Q2dwNnZVTWptUnd2VkNtclY4QkE4Tjd6NlgzVTZpazRwVDIrYUlTRmpYdVdF?= =?utf-8?B?MWVHNDE5MTJEUVpXRGlnbHhtVkVGaHoyUW5YZ3VQRXZ4OVZBbGZhcjJ0Qm9E?= =?utf-8?B?czN4cStkTFlYTEQzdVhVeEpiUkxRSU9mS2tBTXZRb1Y3ZFhBVGFoVW1Bc2ti?= =?utf-8?B?Yk9ldlhDNmxPS2JWYktDU3hPUWlYenp2anZEQ0cxZGw0TVdHaHM1OURQRnpB?= =?utf-8?B?WE0rN3pQS2M5eFJ4SllBMEhVbVRlNmdCK00yanBxbVpjZHhzQ0xsQWJ5SzlP?= =?utf-8?B?VGhyVElubldRQ0s0SEcvMGx5R2VIYk45R3FHWEk2OXdaSlVkNDFkMFJMSHZl?= =?utf-8?B?MDVmbnpwcHVIOGJLcUk4K2VvNHNMVllqMXZNQVBDekFXUjZpc1BmbC9hbnl5?= =?utf-8?B?U2VjN2hGOG1tcHJkVUcxN1FoaHBzbEk2UHlkTUZaUzkyTG5QOTE5cExSdEQ2?= =?utf-8?B?S3c5ZlBMSXdSbmNqNXhnTk16NWFuUDBGWkgzV0doRjI1Y3R0TjdvOWREemsy?= =?utf-8?B?bjdESnk1ZUlUK2ZjMXpuVUNaU1c0MXFCbGdNMzl5Y3ZjekU2YkZpZkZZQ0pn?= =?utf-8?B?R2lOd1VYb2pPQkQ1SzI5QnF3dE9yWUl5cVpqMXV5MEhLdHRvMWlaNVpSSm9M?= =?utf-8?B?QW1wVFRvSzlKTGg1NHdFUmU3bEdQZDVZcGpqczFVSFMva1dQN0U0SmNiQWlv?= =?utf-8?B?SU5LWG04bVgrK3IxWjJONkkrZEhxWG8wWXZKZG9MZEpGSGdFL0c2N3hCMkQ0?= =?utf-8?B?clZZSDBidzd5eDdpSU16dGNOK3RmWjB5UDNaODRkNEVERDRiOFBMWEhmdWR5?= =?utf-8?B?NGVXeVhBTnIrK0RnV0VxbVhVbytUT3gwZG1zZjFvT3kyRlVDMlNrVk1wYTlF?= =?utf-8?B?N291RzRqdDJibjNxbjBXc203a1l2czY2a2FqdEVrdU85THNtVS96QUFsOG5E?= =?utf-8?B?VWk3OUszVTFZenlLUVlna0tzSkxjRmYwM09kcWp0TE5kTWtad0VrZExhdDlR?= =?utf-8?B?UWNpTUQzckxQaFpHTGRXKzgrcmdFQ0MwYThIUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y216RVJIWGFDNEk3NTVwaE5sOFhUQjM2dGE3QmMydTlHN0R3Y2l0aDNlUHlD?= =?utf-8?B?a3hTQ3FiVlAyZFZsTzRMajZ4amllMTBLanVhSGdYVUdWc1BWQUlXT2pYeHZT?= =?utf-8?B?cUhTUS90ZEpaN3JFV1FtNVZyTXRkTTRxSnZ0MnpueUJ5dXRSWG0xaEJjSTNy?= =?utf-8?B?eVhBT3cwSEtGbWNrMWc2WjMvVWRIRjcyZmx1cmgydVNHVmhLWVNpVnpISnM4?= =?utf-8?B?RTZkZTFWd0xkKzN6ZXBjTlpaZFNHYzhQTkdKTElPRExDVGRhQ1pVbXlqbjlS?= =?utf-8?B?T05aR2dlbkd2TVZPbW1HdmM1RFJFazVvTGE2c3VwUjJpZDY5cFN0MENWWUFq?= =?utf-8?B?T01KcmNGMnI0ZHFSWkNCcTIzV2tibitOa2R2enpLWGlkYlZrbzhWU2VtNTJR?= =?utf-8?B?WDZ0TTRPZkNxaStIVHU1V1c3RUx5SzBwWlJFRGk3dk9oSi91aXVXSzY5eCta?= =?utf-8?B?U1VMMkhXRVozc0xMSkRwR01iRkFYUlB0Q09aRWxoUFkvLzFRTmRJeFEyVWZ6?= =?utf-8?B?b0IwMDBwbjNnSFpHWXlYUUZWWHRSS29mYmhSM0N0dzhnMjVFM1BLUUZ3MDBN?= =?utf-8?B?VExlS25lbzJJbmZSZUN3UlJtNXdvajcvVFhTcGZmaHV3SGNsZXBxTUFQL05B?= =?utf-8?B?b0p1b3MrSEJ5OG12dXBEMFRZdk80R0lvOWl1SmdNbzYxcHFUSVo3NDYwcm5I?= =?utf-8?B?dDhmSFhtOU1UMWIrb3NLMldiQ2hxNURoT3h2M052Vy9pbDE1elQ4VnRMQmZs?= =?utf-8?B?MHM5NUJSVVV6ZTA3NDJqQnJDZzZpNkErOSs5d09LbldWZjdvY1htaUVMYmd6?= =?utf-8?B?K1k0Tkd0V2tlMG1FanhzMVRrenIxMjN1VWsyQVVkZVpPOUh0MlUzbWRiUFky?= =?utf-8?B?bHVYaXducEZPbHlKYW1jdnBGa0RhaEkyMUlMSVdDY1djOVRKeFVJTVE3aDhY?= =?utf-8?B?MS92RDJLOFhMR1JOZ1hwbEE4ZXlCbnFsd0h3c0lSdWFSa1l6NVpMZUpPTE9o?= =?utf-8?B?Qjg2SlBVMWIzZlBVRkprTTJXTlRCMTFNYzFGNW43QWJqNHE1OCtnMFNDRFkw?= =?utf-8?B?UnNXQlJReTRGU0lCK051TjlxT0JlREJaZmhQVmViWkZJTWJTL0w3Y21xZDFi?= =?utf-8?B?Y3F6SDZVY1JmT01sdk5pNEJQTmVLMExUc3hjT3hGcVkvM3NxZ0M2NVUxMzVm?= =?utf-8?B?VWpMQ2cyUnVQQ3BKUjVRVVpNbEJqTmNVRXJmeGJ0dXYyNWJMdUczWk1rSWJ3?= =?utf-8?B?bFQraEhBY1NJb0thdGtSSm9jMEZtS1hwNkljdUFvYmlLWlJMQnVwWTh4dDFj?= =?utf-8?B?OHFxQ2ZUU1dpWldtT0w5OGxabkJKQXhmZlFWeUxJOThSZHVuN3gwMU5sYzls?= =?utf-8?B?dkNFa3RsOXhyVGoyeERyMUR1WGFNNkkwTEcvQllINXdVVXJLVlBwVkNlY3hO?= =?utf-8?B?bUs0ZkE3cUZkR3d3QVo5cU1CdnFqendTZUd6anBmcHdoNTVwU2dkZEd3bmtP?= =?utf-8?B?NFRaZndTVUEyRHAxU3lFRWVoSWxFZmJDN1hwL1RkSWE2VnJiOFZBc2d3cHJi?= =?utf-8?B?UDV3TXBlMnVPTnMvUTQ5VFErNXpxdERGaDRkWlVibUhIc3BJMElEZnNkd0J0?= =?utf-8?B?ZGdtRDRKVXpxWHdqQlpid0tmNWlDdW9teUt6OHQ3R1RRb0RFYVRvY2JWalM0?= =?utf-8?B?L25wdzZJbFlGUGdZMmFJRTFkeG9JTGFpYVZUeXR5U3JpSm1IeTBjaWdjS1lO?= =?utf-8?B?VUlOOEFwVDlWWjFIQ1JHWTlwRUhrbTJHTWpDb0NHU3NDSGJHZkxBRDFvbS9F?= =?utf-8?B?WkVIUGJUNzZoZkdpeG5FaENDRzF0dmppMlFOdk84YVdTVkFub2xQTHNaOGFK?= =?utf-8?B?OTJqbG5kMWlWZGp0QitIUzNmeVFjb2IyYnZlRXRPZHd0UStLT0dKVUphQmo1?= =?utf-8?B?dUdoMDNOc2J5QW15SVkvd1FTcnJNNytrRjVnYmdTUVMwalZxVU54d2gyTEo0?= =?utf-8?B?RGxFWm5YMm1WQ1hueFJyUklyT29KMC9YQUQ0VkIwLzh5R3Q3aTRrR2grYWVp?= =?utf-8?B?ZFE2aXpHUUVhclFNU2hDL2NQM3RFSUJoWkxaSUUzeVA4aXpxR1UrRHZnV3ZI?= =?utf-8?Q?lwcg=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa3635f7-6fe2-4d05-1bbe-08de39cd5249 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:14.6028 (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: E2+msoJzEM1r+5qiJkqL3igweO4e7o0xWPUoylG+27/gaH6BgeG9Vfv2CxpYFRCg/rn63WgKXR5G/1JjEbM4qw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 F3B0B30F927; Fri, 12 Dec 2025 22:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578387; cv=fail; b=X/0XbNmJuati1EP1D3kArLJBeRxQiaptEfcSqKModg6yqutqh25QBbI1nzSS//pyJZ9Cl1GdGl8k92hM6SbzVSP82wzRKgohePPgESsQPaEgzY6iEwEnEI0TmuIAHkyvs/vfOwfcNTVH5+EtmE6weT63K5eQexrgQf/0LF3ND+s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578387; c=relaxed/simple; bh=u7fTulRfZLwNK7ZgvfmFeAzMaJKinGgg4N76uOfzuY8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=V9eIOIvqQvSW2RhI4iE4HuzjQmtU5yDPiW3aBVagKMzYEh3teOc9uZU4Rb+xft5uftQAATyKAK/qfTgxUHjeo3VlokassHc+xcPL3qnqo/fOKw/0PSxBfY51MOmIlYAzQ0dxSo+GM//IFAocP5+VcV6Q4XNXUhW1NvJRWiMBRMo= 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=SHLqP7BQ; arc=fail smtp.client-ip=40.107.162.60 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="SHLqP7BQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eTrqkaZvQ6vSavb9VaacnPqpHWQDcbmT6YW5kXcOHk6f+OWSpeb0Wm1N7abFwAmDxlqQWyHZMwpg0EZGE50DDzlIN/KM4qLdDOygjzLS/GSC1PqrRYjwF15bQ4/El+q3XUUS3AolKuUexPFT3wV/WTVDVLL/1Pex0zudwIAHva5davzwjtUKXDE8Im8nb3GMfJJ5gzMj9yU0co5i+lOQ6ZQaRfD0YjNJfMnAEMGUs1OZEgOq+pYSktPtMC4uiFMQUur2A5byG2HqgIO2PqHNJyrJlG0Zhg/VnrjhdZBJy0DjdQB4dxi894XuC259GSueIjmvZP1MaDb/N13CEurGBQ== 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=Gz6ATqEsQo0ArZOH4rZb8256ts5xyxB+fSq86mTSmT5ucLufpLWrJDy7djt4O6S0n6CKy0Iln+lEcuj/27aLn7g0eqwjOp5MAg5yR7wSBt2AnioeJaeBhYrcxxlWE9yKfZVUhGYIfQWCkDaqsSRFE1rsWOOHhsogXFiYwZGn7ZQaZO6a86QS0tZNLhKe7hFmu3x0vZ9u7/p5rlV7YtWIzEGAwSBHVuGQeQY4pnGHiw5ULW3DpkIEjMAZnGT5caxu3Ejj62So+jOhVAn/E+5gIiMZ7xBHSzoi58YKy3FQ4sGL0p3yZFPwGrNEISqKOrqJXG5uFnyFdNP3xSglWWSETA== 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=SHLqP7BQ9C5QGQouEdTH5rLoV+IlSDuYQhsAQqxkEr4lUjrCdYpMp8N1fTS9/am2vmaR4YClpDwW0YOH1e9we/UpG2hBUKeIQVuuAfOxsyL6lRRNiVrF5Li1GiPVwXihU+xNZlUsf0G4UguReG9fu0P4i6+mRs0ggAgiuZlR7tQK/kIwK5MVvXsLPkByIge63kWjcQTX9SP/6NMBGrpLIdcSw+RPTZQyXaywoN0lmqD8FTo0JCQ0lSKMByfKV6t9TLAJlmbb4ldEPJjrMwtxn2/Qvq/j8kbTSYuMfJMM6A/NjJlAY1EhhjzS58Vv4QQjHSEBMg/4KScdp0+ZLUFPXg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:19 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:19 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:43 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-4-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=1428; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=u7fTulRfZLwNK7ZgvfmFeAzMaJKinGgg4N76uOfzuY8=; b=aCMiS+oVmdZLMK+hpyWUheeU3gu9xf4xtKr4BuQ0TOPIUx7FHRkLHRNkX+HzF02oca5II3d0G GGaFG/7kZrPBcojVtGALUUunwwGVcA1Xdr6K/fEQazmZiW+03hhfvmd X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 6172f0f1-f9d6-4bc9-b1b8-08de39cd54af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?T29pdVRPTHpqRDFBanBNOGZqaFQ4QzhsZzJjYUM2V3NNblJCYURDTDBFcGJh?= =?utf-8?B?NUVTTzA3ai9MYUgyVzdsZWV0cGZaU0hRVkRkeGdkcWc3eW4xTkhvWElRS0Nt?= =?utf-8?B?dGcwcjB4U1NNSGxLU2laOEc5dGZ4TXh6U3hqRjErb2xPRWgzd3p6QVFkOFFx?= =?utf-8?B?K0ZoUTJSdkZQMW9YZE1GRVo5ZTlXTWtYeGg5V1NJREd5T0RwUEJGM3NVVGkw?= =?utf-8?B?dGY5b2dvSzVHdjEzR0xPelRxK1FxZmswTkw4eHMwSFRPYnZwWU5oZFNxM3g2?= =?utf-8?B?akp2TEh0bjRjSlJjb0FZRFFBbm5sMzcxakNzYnUyTkw3bW1TSTZpMDJ6LzBX?= =?utf-8?B?VTVwTjZFVmdqTHlQRkRsK0I3empyMDFzN256V3hZcGZKb1dLcDRNd3BKbTBH?= =?utf-8?B?MEtUdXNWbHNwV0RRZ3pqU0lLR3dpeGpmQ2l1cWRXQUZCY1BjZjdjOGQrdFR2?= =?utf-8?B?Mmgvd3l2SklDWC8zcjJ0Y1hQWW9pK0lkRWdubVhvd0YvUjVzSGUwYXE5bGkr?= =?utf-8?B?SjZkL0w4aHlmN05yazNESHpteDBBVzg1QVgzVGlMRk82ZlExSjlsNVljdnRt?= =?utf-8?B?UjNHSHRpYmNsOE5ET2VsQnRLcTBGaU9rdWo1dU45MG0rOU5SdnNHdXcvQ0hS?= =?utf-8?B?SW51aTQyeCtxWCswQmdmZ3IzTWhzQVNYU2RrZUlLL0VDcGJ0dXVxcVk1UHhx?= =?utf-8?B?M0l1bUlud25JWHRYTk42a2FoZUxlRnZSMm5ZSHN5eG5nY2xTcjZFTWFNU2Rv?= =?utf-8?B?MjhDYzlkTEVSalJSaDNFaHJFc1ZQcXZEMWYyZHh6a0gva1VBODlPeXdqTGFx?= =?utf-8?B?c2FDa05mUlQxeUpuSVE4aFdPdmFIOEJKRURMWExGalM3Nnh6UlhHOC9jeVNS?= =?utf-8?B?eEJzMUE2akxvbkVRWkZoejBCVE82M2dIRWU4OVNRUmFSVkFLQ3BPUkUwV3BJ?= =?utf-8?B?dS8yOG0rNGk5Y1NxYitwQ1d4N29BU3o3T1dST1FORVR3M2dZR0FMamFURndR?= =?utf-8?B?cjl6UmRacmJrZnAwM1ZDUllmaFFNZlN4dTcvTXV4VTB0cHp1amlnNi8vTWUr?= =?utf-8?B?MDJqRFduUXErODR0NDN6Y3BTaUN2QS8vMm5HVDJBN01yWUI4VlI3QWhYUEN6?= =?utf-8?B?NkkvVlNBcjd5clFZNGZaZHl2T05UamxJR2JsckdzZWNEVlpGRllDT0QzN1Rh?= =?utf-8?B?bWI2bjRMRUlHQVhIb3NqVXFRUFE0VnJYdUxXc21FNFprNVdianZJNThoT2lV?= =?utf-8?B?ZGlaYzByc1kreERaWjQ0elZjTnVYUG1ncnVzRTUwNDJQSEZZZFlaamc0azJU?= =?utf-8?B?Zk1rOUc2ZlNMQzJzRVJtTDRZRGMreFllNXpsV2N2V3R1aTJJN1pEeUlQb1JY?= =?utf-8?B?V0VxMlppTStXNFZ6Q3U4MWhsTXlkdE1DZHRrZ000ZlBpeS90MHdaQWhXYWF1?= =?utf-8?B?a1pmV3QzRlU5azM2TGlKOUk3MWRvT2xmVUthbVdkM29mT0cyTElmOUVpb0RI?= =?utf-8?B?dlVCbTJMY3VLVVZDR3JJbzdid3VKY3NHM0h2bllQQ0RzT0lINVo4cDBzc1Bo?= =?utf-8?B?Qlk0V2JmU1JVa0doNGM1ZUV2YVZGak1mQ2tyb1lyYlIzK0dyYnBnQzR3alBh?= =?utf-8?B?M1ZCQ0orMmovbHMreFB4NU5NNzNUM1B3dTdBbXVteUZ1NUFJZjdMTmVoUEFk?= =?utf-8?B?dzZjMVc4S0txemdnTGZQL3J6N2RiMW0vTjRrcnI0NDYwMko5RzZpZUlSZ3Bk?= =?utf-8?B?aWlxMlB5VG1SRFBxaW5hdDZrWFM5MW5pU1FJeHVVWWY2cDVldTh3YXNlVGkr?= =?utf-8?B?SDlVTjEyMVdGbUVwVEN3ZSs3RXhHVjgrZUorNXlBYXZLNDRUQ3R4UTY4MG9q?= =?utf-8?B?WmhCOVVuZU5DeG9kT2M0eGFJcGhtM3Fibm9GTFpKSHMyYURHS2FhZXBkS245?= =?utf-8?B?RjdiR2FPbEU3di9MNUR4MUJ2c00rakVYdWtYUDNsZkxRQU5rRXNld2taejVJ?= =?utf-8?B?TENyRUNic0ZTYU0xQjR3UXhNTXpHRlFCR3dUSGhiWlNEZXJvY2tBU2s2VDVF?= =?utf-8?B?Tll3V0pGSGtyMzl2V3hLVFhSN2xxZHFycWIzdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WWsvL3RPQmdURTNyeXQvSEtrb25Ma3lZaFZ2OEplcHlqd3JUN0E1SGtpMDRU?= =?utf-8?B?cUpMcktaN2lNL3pLbFltQzV3dDNBeERLOENpVzZjVkw2bWNEcHM2MVM2QXpm?= =?utf-8?B?Sjl3cEs3ZnU2dEt5eTBaNis5ZVhIQ3FHNnl3a0orejZwazRRaFJ0Z05XZk9x?= =?utf-8?B?bmRzN1R1RjRDTU5rRXZPcmhaV0w1MDJmN3VFQTM3eDYvdTZUejliR2d1UU9R?= =?utf-8?B?K3lWNG4zWVlFRzVJM2huT1BTeHRMRnFqMnlUWmxVWDF3YndtbWY3QnM3NXA5?= =?utf-8?B?NXdZbm9HQ1FYNmdzTXI1QUJoUlo0SEwrK1ZxWWFxcWhIWEN1RzZHSWYzYnhK?= =?utf-8?B?SnkzK3FPV2k4U0R1dUF1aVNFakJCSG42QkpEWEFqVC9YYmdZQkJYVUtEUTRV?= =?utf-8?B?VG10TnJROU5qZmRJYVpDQ1hhcHM3Sllkd1JMNW11bWJiMVFqc3ZRZ3Q4Z2dL?= =?utf-8?B?WmhmbzN4Zi9CbmJwUEYxS29teThuU1Y3VExySkRJRVVrV016OEpOTlh6Tm1n?= =?utf-8?B?SEpPMDFnSjlOcDE3Y0w0V3NQU1FKRzJaejRaRnlBSUlaS08zZ2F0M3lLb1pX?= =?utf-8?B?eXVPcURSb0daTnRrbWtCYnJaa2c1N2tqSzF2dVRuZ2pTM0hDRm8xS1NiZDF4?= =?utf-8?B?VFFwTFE5cnVDYkZ2bC9XVGIrOCtzc2t0RTVtZE80WUlHSVF5aU8xSHluajhm?= =?utf-8?B?UzdWNzFPWjVPN01uQ1dSTG1sdUdQd0tHZ0Q5ZkRYa1k2d1lseWg3WTFweXlF?= =?utf-8?B?VmFtOFVMcG5YRFBLVkFCNU5uZk1qRWwzWG91d0Z1aE1Ic2lNRWVWOVgwaElv?= =?utf-8?B?MmZYcmZvcnF3Um43QTM4dFFjNVNmbmF4RXJIRUFwRlhZSnhQOW1qR291anUv?= =?utf-8?B?UkhBaW9BWTZ4WGtOSFlOUzlwQzdNc1JtVCtWUDY1d0RJalJGN2lPMllXZHdU?= =?utf-8?B?ZlFySVE5RTdpTEJDRWNlVDg0OGRFckQvd1ROdFZJWUI1dStwa0REbG5lSkkx?= =?utf-8?B?NjRKdDQ4aSt0djREQzREallMNk1tYTQrS2JVV1Y1Q2o1ZERGREVxVmpOaUpB?= =?utf-8?B?NHNYck04Z0lrTWRzaUhUcjMxdkhuZjNFNFNyZ1loeUpVT0xZVUZRelRSYUZl?= =?utf-8?B?ZUtCbFJBdTRLNVprUnVXQ3plSXBlYU9MVUpFcDlVcmhpWFh5ZjBadlp6SXc1?= =?utf-8?B?ZjZybXJXa0NRVHhjTkx6TEh1UlVVUHd2RU5kZWtWZWlNMTVieGFneUYzK3RS?= =?utf-8?B?cXdLN242Z2R2YTBRcjI0eTZzN1l0Zm9IMmVDTUJ0d1ZabFFXVy90bFREQ0lQ?= =?utf-8?B?Ykc3UzFrWGUrVEpGdDk0UG04U051c2taTnhrajJyYzR2bnY0RThEaHVJOEZk?= =?utf-8?B?azBYNHk4UllZTmI2R1czTk14eFlGRVk4K1E4Y0NPOWVTMlYrclFJckFDK3Jv?= =?utf-8?B?eGllWHZzSUlYakRjcjI0SkN5N2UyNittMnA4M3BHNTVObnlJeXp5L1JSemdB?= =?utf-8?B?bE1Lek5ZanpWaFBvUnlobmlEYTB4OEIrNCtPaGhzS1JSVWg4TFREMTJLUXVu?= =?utf-8?B?d3htVWphbk5PL0RKTWZ3VVVUWkRIZEVyRWNUYmRQTkJLT05jVGdOYm1iOEpL?= =?utf-8?B?bmV2c0lPeDZEdDZURWphelBCRWVXdnc2NnhnY1FKUU81Z2ZOVGVKMjJXSkNL?= =?utf-8?B?VXhPNG9MdFJmMk5qSkZZSEdITlUxOEwyTWM1WUlMcEtLQW9yQWtEazd4bDQ0?= =?utf-8?B?R2s2dUQ1U0NSYUxMUDdRUitBVGhuQVFmSWRqS3JSSUxxY0EwQ3oxcmlJdlNI?= =?utf-8?B?Z0hlbThzRG1aSU1vYU1UZ2IyL0xOUFJVUDVoRXRIc2VkSm13VlVXb3hWNEpW?= =?utf-8?B?WVhQTmtqYU1sT1owL3MwUFlsS1hIU1VHNjRlSFBxVDB2ZUJtSzBlQ3dBK2s3?= =?utf-8?B?YmxSdENlWU9vNVJWdGxrdUVOWWlnb2NzancxMzdLSlhTTFNJcUZJanI5dXdm?= =?utf-8?B?WC9aQ3Z1RUtiWFJBaGM3ck0vQXhlNjdISjY1bGNLWU5EMlhzYmIyaitlb0FL?= =?utf-8?B?L0JkMTFrSHdMNzdCTEgrUkRzWmRzRmQzSWlraW1HRmY1dFM3NXJkWXdjdmFk?= =?utf-8?Q?XF2E=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6172f0f1-f9d6-4bc9-b1b8-08de39cd54af X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:18.6097 (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: KBVUY2SRCz8igzFHPrGuGgl0V5UakjlXeRDrq73UGCvtJzMCB4Xb5krz/ifN+dLsR2SRcVzycAAJbNg6CTe+Wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 Dec 14 06:37:37 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013044.outbound.protection.outlook.com [52.101.72.44]) (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 8B5303101C7; Fri, 12 Dec 2025 22:26:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578388; cv=fail; b=GFXTHz4y+BSy7wFYa9G4R3KeZeZpNOtHmv6Q3hmEgljakDdUJA5vxi9HpN8NMobLpFBIG1nEiEMF/yjS7sMvwadYmYMFkienXd4KuYJwm7kbbfjhuLdB8NO6D53MGbDMXG4mMLYNvCQu2zpf0NPiSQVM4077sWPzn8T3zQLXWsw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578388; c=relaxed/simple; bh=BVei9oaxixdZN/1lIiuFf7ag2w89A7PX0bp9V32XQPg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Yelfc2A8qyX8bQ2nYJg6pCdqp5o6rhGb9RF41JF1CtCied+oaUWbjva9m6H5e/5OEIiCszXsg/SWhdh/x9Z/RDXLxS2SKG/6lKxoZOXAVRPkVX812xhg67zGLgbRDcfYdWsO/lFVH8iNDIJgTQsH36dtC7lPk3tjqKifpmMgyAM= 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=HXwH6O/X; arc=fail smtp.client-ip=52.101.72.44 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="HXwH6O/X" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RPEipdQkSaurSMqKGWP1lgJrKVnEzVQFAsYuYvFxnGxQV/9nABnHwbhtqNqHONl9Qush9mTPuK7xThlWkWyUTedwcvF+BfFq5CttqdlkWB50aMmHHUwgchCV5kXRp8gqzip3jvTDSNNs5q0K9WXWh5NQQWqP258QdT/a7R2TY7ZKgeg2ipI2E4OCl97e6GPWRUkxCjrscBbZg/FeTL2N1VND/rqqnQddcMo6MQfl6Nc0Zl4gGuiZ/DkXJgzGeJdrYYopV7zoHRhyVMCJSSz3Fc2Q2CMleeSRlcULSE/TrACuZUaeKikm1xYjtSUQgq79t8M/6pseiUmdJny49TEXcQ== 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=bgBhChqBRU+q3+jTw8NMkYY2/VZ+GrKEopFyPVBjQlRLv1ipt/dHps1AWwm8/BfeHGqVaq7hL9FZqnFN7e6k6B2Qh/RcDKteQ02NdTlTJevahNfUnFdvnm8ns1siFA4l8eP4UOij1veWeY2w3ZX5IKbAqQsao1t0YJJbktQj/qxdySs0UoWecxI7Jg6vD6uZcmXwCUFb/gCZ67B2m2UNYEVIV3iTWGLAgE4oqBOmoTWrs1QyX2yRmG3Rq5zRDqyeojNM2saJD5T1e7FojszckCItJjbZkHUR7UNWst8sYJqsHoOsnsWurzFnw0a4jG2ZFLAmcakXZ/8lD5X9miubTQ== 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=HXwH6O/XB4qMwXvCefnrLwVWSdRs+ArgukHwqflhiAEuh7f/8OMybe20ijGCx5AjJzvgkJOPg3iPu8q726C7hN1685z19sa4aDpzXhYc+nRG3wmiH84LBvGxKOqfQ9BIcII/+deKGvvCetgu420M+SLMUPUlPAIdrdttY2ZVwKypsAS41QWDi5Eo6W53/m5zu8GKJsXYxC49tqmAsVfQdiskPSn8ZTwEUpAB2s/XDZllta1DLMPus4K4WOawVEwhEy9abeB0GJrXZWUL6v4Gd/z3ojX1+Mda/k1fQk1gPtRF5draShCpN3EyvSbEgURocNZ2+yQEOgAq07t2Bhoong== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:26 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:26 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:44 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-5-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=9173; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=BVei9oaxixdZN/1lIiuFf7ag2w89A7PX0bp9V32XQPg=; b=UYUsN+T4lgu7ygjsLGwoMr2cz53ExW7WfrlirY0K4BWgX8QmQlVFNzWr/jArEUzmCiTfM4reP FPhudQEHk4OBQ1MkCDCg/NCXSWiA7OQtCExgtbJkI14WpeKpAbnReKE X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 87f05d56-361a-48f3-acee-08de39cd5700 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MktJWEhMbktNbURBODdyemkxcUF3SHpvNFNRSy9waHRzM1FBTlY0ZDdzdWpy?= =?utf-8?B?aDkxSkt2MFNyMjJKemI1VlBrK2JPUndnMDVZeFZDRTUzSW1NQTIyWUg4aDFu?= =?utf-8?B?NDFKRm8veTJmY3plQnhxVlp5VDRnejQ1SHpXUXlVMllKSGV0Q0h2OWJqdmUx?= =?utf-8?B?WXQwb1VMTmZqVkJmUURIUzNxeVVyajhURDEyT0tUcWhEOERXcytFbGtnTTVk?= =?utf-8?B?c3NDR01zYjBvMnVPWnpoL1psbTZYanFORDVyUHo4TWFuZmZEYndNMDduRVVJ?= =?utf-8?B?dE1ZZmhPNEpETTlyaGNTTk5wdXpmVmlJSGNKc3dYN0NHMzMxUE9JWUFMa2ps?= =?utf-8?B?ckJCR21yQzI4MHE4d2ROT1V1QWg0V0JxZlhESzZpWWR1WGlSNnpJTFVuaTIy?= =?utf-8?B?WnhRTDNwckVRM0F3eXY1bEVzak1yYlM1Zy85WWgxWFo4K0QzenFvcFdUOGY2?= =?utf-8?B?OGxoM255Y1U3ZGh4c1JhQ0ZQTG1RZVczRnRSQzU5ZzRvZGR3b1l5aFJFUTdK?= =?utf-8?B?cHA1c0p1QkdlblorQWhLOTcrZkRYc2JEYkdNY1BxN2k5Y1lHT083RDdzTzVE?= =?utf-8?B?eUlKaU80Y1BnUzV1M3c5eG5uOUFDVnFheVdheE9tMU1mMUJrT2RvTm5DZHRq?= =?utf-8?B?b3lMYzZWZ212ckk1a1BPK3lPRDRuY2FGRmZhL25QMDg3NEM2dldGc0NseVN3?= =?utf-8?B?VUVZWmxESkVndHZFeS9RVytKYXJPT1RHUW5wOUxRdEoxSHF1SDNkam0yb05z?= =?utf-8?B?TnVBNzFKZVZkSUNqTlRGUlRtNEUwbzhZT3JmVUJlbEtXQzBvK3p3NjFBVXNB?= =?utf-8?B?SXUzZXdMei8vRnpEL0lveEMraHhBdkExL1Q5USt5b093VWtvTXJZR1ZoS2Qx?= =?utf-8?B?aXF3MTV2VU9tZlR5bUhIdmhjK2k1c1A4YlVIRFVEaWw2RkZkQXdpVHh3M1kz?= =?utf-8?B?bnd2VTlEQ3RoNUJBRVkxaklrZ0lvNDlQTlZKQjh2eGRNMGdGNjFGbWc4SUFX?= =?utf-8?B?K3hobmRnWGVMVnZYblBocVIyUVppNyt1MW9KbFBKTGRqRUVTclY0T2wySkVj?= =?utf-8?B?Ri8zSDNhcVAzQllwalJOdTFNL1BqTHhZOTBaaE1XOWEwSC83VzE2Y1ZLN0pm?= =?utf-8?B?TUtnSXZkMXdhVEp2S1MyK0R0RXUySy9ubHZuQmU0NFM2OExDKzhUclJzaDRE?= =?utf-8?B?TWxmc0Y3VUxuNkFFRmc2V2RycUxmcDd0UldUcnB6TWswdVBZdUVQKzl5ZW5v?= =?utf-8?B?eWNwenNZTVM5UjRZRnNUYzBGYjMvbGUwb0FBMy9mRzFCc3NsNGlHT0M2TklB?= =?utf-8?B?Smx4TkliMUZEMXJ2NkxadHlBMzNwNm10TUZlQ1RRTzlRcnFLaWZCSlVuM09B?= =?utf-8?B?Vm9WSll0Q2xCWEVjdXlTaERwTmNrcStweStYczNpUG92ZFVSb1ZvRDZvYzEw?= =?utf-8?B?cVZnalI0amEwYm0xNW5uZDdFQU05d25FWWIvQzRrVms2Ync2S1lDdlpobS90?= =?utf-8?B?MHUrVXptVk13YVdkUWk4REFxVzRvcGp3Zk9ERHVZUmRBRTRxU3NsNFB1MTBv?= =?utf-8?B?c1MrQmpqSUYvczNDVkRuYXZsaHRrUVZRaUM2UjErVGlvMitLTFU4Rkoyd1J5?= =?utf-8?B?ZnAxSmM5SWdBSTZKMnUraWVYY2hsRk5mMG0xYVlkUGtHV09GdDVWQ2lwQnQx?= =?utf-8?B?K3A4TmF3U3hVVVpSM3lMd25hZ2pCUUVCa1lQbEtPd0NlWEZwMjhiY2w0a0N0?= =?utf-8?B?RUtCb1JQaVoxeHZpdmRQVnpDN1B5WEJyUGl2Z29DclIyOE5wcE1NaFdhalZI?= =?utf-8?B?VmhqdDQ0MHAwcUdiZUs5Z3Rkd2xzbjJrUnFvQzlTaGdCRmVJY1MrN3ZqNW1H?= =?utf-8?B?Yzg1UHZ6WldBcmpSUmZlQVlVdkVVVm1DOVlHZ3JhS1RhSnh5YzVqVThmNUJQ?= =?utf-8?B?NDEvOUxNY3R2NkJuZ2lLNmxJUUlJK0Q5SlU2TnorMUMzTVNaQ0ttSjVMQ1NH?= =?utf-8?B?dnhhdWszand5SkZjRmJIMnFkaHNpRno1SDNNN1d4ZFZGRkoxQXdXQ2JwVnRN?= =?utf-8?B?N3FzU1JYclppTys0SHliZElPa3VvSi8vdlZqQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MW5reHQ5TjVYY01JZHVkTy81R0dvbjc4blVwaCt1VWg1V01KNkNtNDFuMlZ0?= =?utf-8?B?cWxaQ2ltb2g5ZllWem1Xa0QvUUE3dy9YV1pVVGs4QjBtMDhoWG9KZktaaktL?= =?utf-8?B?T3VYQ0VIY1ZET2o5Ymw1S1lkVm0ySFJ0TVJ4VkxUYUdkNmp5d0RpZTVuNG5L?= =?utf-8?B?aGpJcFlFWk1QK3pJUEFua0xDRzl5YnFEeTh6MVVINmpkUFJOOTNLM2hReVh4?= =?utf-8?B?eldQRzBPRGdDMi93YkJYMy9rY3JxdndYdlBIY1dZUFk2dVFqVXpQWmprNmN0?= =?utf-8?B?VVdWRWtQakJrdTBJK0xiUlRlKzV4VVM3VEszcDEyS3Q1WVNOcHgydnhqWEZZ?= =?utf-8?B?b2U0NHZnMVpjMU1nK1prZUxGYXV6K011RzBoVTNhWTMxS0k2elIzUU13L21O?= =?utf-8?B?dkI5cjBkVVViU0g2YktQb3l6TVp2bVcvdWxHVzZFek1SZTFWOHd6OFB3ZHBk?= =?utf-8?B?Sk96aG80N1BWdGhOSHArcTdybHRXKzRkYjNDb2pIbVlqejRzWjNlZGlPakp4?= =?utf-8?B?RmxzS3BMd2J5QWpnSlNueGFrTVVxRm4ydEdJejYvUVdtSkJKUTIrNHZMdzRX?= =?utf-8?B?WGc3YzJqZlVQMmp0Q2cvZkJ4ZTdjU0xHYitmWjlydExwelBUS3c3cjFZbVJa?= =?utf-8?B?WXQrdlNxRHN4bnBTVUN4RFcwK3JPVWhYSFA3dWs1NEkraGJDYVlQSHdKa1di?= =?utf-8?B?eHBWSWNxSVhIUi83MnFydkpXSGFNVnhGYVJzUENIcU5qMVhqUlYzd3lhSjlY?= =?utf-8?B?bHJ5T3IxK0JzMkJ5SWVWZlE2aUMydlhMZ2kveHlJbTFuK2Rrdm95WlZSZktw?= =?utf-8?B?aW9IT2FzL2dLdzBDNE8ra1g1Si93V1FSeC9LejhyajU2Tit5L2ZGSmFTZHly?= =?utf-8?B?OWU1R012T25rakNPNHkzZnBHSGhzM09qeVNPZ3J2b051YlAzcDVhOHpWT3Z6?= =?utf-8?B?SWxZSEl0eGRsMmFBOXd0UHV4MVlkSnlEUDhRbndtb2Evb1ZGbFBMdXRjc0s3?= =?utf-8?B?M2VUdnhrWEJNN3BBUnBkaEhUYjVqWmFSRkptcXNMTDY0blJVRUlmYndMR1My?= =?utf-8?B?NXFPK1loRFEyNFhQRmNtcTJTYm10OHhFekhGc2JZUGt6ZFI5RWVxYkprWkpQ?= =?utf-8?B?cUFoRVNmVWpnM2MzR3A0U0ZnRDBTdStlTnBxOER0VXEvb2hTSlM3ZzEzSUtK?= =?utf-8?B?dFJGTVBNYkhBd2NFMFB5Z0lQU0tSc0luZ1Npak5rc1QwUFlmMFMrcVhJa0Za?= =?utf-8?B?SXlZWC9jTkYwODFiV0RjV3NaUGJJZk5qUC9WQlNWQVg1aTFIem1VOGVXZVJN?= =?utf-8?B?cmFHWU1lWDh5V1E3MnZpdUhPZ0JPRDN2SEhIVGZxSW51MURYNE9zU0UrTEF5?= =?utf-8?B?eTJ6Sk5mQkxlUEJiTXVJR2VpV0ZlcnBZOGg1U0szOWlrV1d5Qi84aEdBalgv?= =?utf-8?B?aVIwZGZ4N1BraGJZcTBFeERUMk5RcHdSMEIyWUVwVDhmclV6VW1ySVBBbHcz?= =?utf-8?B?dXJkMEFtcWNvNlVqckRUWmJnS2l6TEo3anBMYXRONDFaN2lUZzNXR3JLU3FZ?= =?utf-8?B?Sit0VWFFY2xsekxUbUhDUGJIQTR2UXczVCsxRDVQVHl6b2c2cDBNd2NhajlQ?= =?utf-8?B?cDNNQnFwaFhxaU1aL20xWnBzUms5a0ZQWDdmRWNoci9nd0VTOVp0OUdKMjBJ?= =?utf-8?B?NWdmb09YYVFqN2NtVGZaTEZBbW5mb0JyZ2pvbmVOckQzcyt4T0Z2dnBBaVJS?= =?utf-8?B?bEs2Um5HSHVERHR1RUJrVkU1QWdxTUJFUW84MGdldnU0WTFKY1k1QTFMVzg2?= =?utf-8?B?WnNwNi96MHhpL25jSkhjZjVKM3RURXBOTExyMUhNNE1wU2VqL1BNYjdxRXpu?= =?utf-8?B?UHBiak1MRVJ6eWRZRWExMGFKeTMybkdHZzA3L2hkTFFmbGRVeDluTE1DUWUr?= =?utf-8?B?SVRSVnFGOTlZcDA1MEV5bm0wTHVyTkQybjd0bVBxUG05cnVrTzdzNW9rRlpM?= =?utf-8?B?YkxnWUMrSkJoOHY0RXJHY25WVTJaV3ZuZS9ZMXdTNlhPMlFqOE12cVRSWFZW?= =?utf-8?B?aWQyeWNMSHVqenhGWUE0S1phb2hJQmU5SFdFbzJUdlgwc3J3UlhoYmxzTmxS?= =?utf-8?Q?oEaw=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87f05d56-361a-48f3-acee-08de39cd5700 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:22.4941 (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: IUhe20FHEw+cAB8bR9Sj+lWVhFIA4aPjf2rMqQtMZxj3LsNEck+G1SGSILzG6qjSG6RguLiRuCTpM08qmfVAYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 B0C70311C05; Fri, 12 Dec 2025 22:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578391; cv=fail; b=jbZ1AbW/51OUHsnLlsHXtP8y75WhJjWVp1LeXPY3xYk0C8Ku76eu/cGjqMd82Hf5EJmsHdJBhrFZKXmVDrSWbzEO1xtixP8ri3KdipxrXxdAjNRwsFaDDu3oqofGwOONknKrPR+JVGIqprxs8cF/is/IY0ZdM924qiv4RCdJdwk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578391; c=relaxed/simple; bh=aOAaA7jThMYTLvhiPxxVJZNwV14iX6s7QyAVIfn6T48=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Rofrt8dZh74jEtehxuTSvRQpSF4oCmAzKcxJ0u1l1T9WFwWp+eTgscmurCs/DRkw+zUCfpKakFGlTruq4mjHk217EvJQ6Igpjd4y5pbjOTeeVN86AZqoO0EnJRH7Fx3M9JOkSdAH959SiVCb4GR1MUe1m774KRKaiokJVyrTm68= 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=LChgevis; arc=fail smtp.client-ip=40.107.162.60 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="LChgevis" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jGE/t/oB60HuHhovshvdf5fHX7oy3MAv/CqftC14YFZo8mRRKbQyn5OOaDTkoqG52B50HYwiUKR7P0+dZ54HkedbZIRCgExDmprZXk9IOae6C51rh+7KCAFaBz1JXkvHIFT2BIz0v7F4cEk8VZSwjsMoNM/eOoj+C1F2zFWN8bwFrwsfxSYiMwjQJPXZh5OYUuUwvaW2BDK2qiuYz8RV5OQ4fKiuK7UqNIXQZBy2aOqMLQViZOCIME3H9YCmaGYkEb/w3+TTHpGXQiqGSbFXzVXH5zFPoDGjgrWNk93Gpiyf1jeH4D/61HJ4OJ6GP9nNxyDzPcckjYQhfMf/DvfClA== 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=cXSZaHxzNHrbWQ5Fb1I6HfJe3XNdlA/lK5Vs9h4vMr7/ElOp2Bv10r/KiurPJPPyoS++amUCAZYskzX5HyOy720UOWspMy/MsRyBHDuNN3BDaN4RAvmbxKoLgchNLPjX1odp2H2PWv0jDwDY+CITVwRfHeqzobY6jDuqABpZjMz1FkXG1IaVXezsgW+nyraGiK3BzA4qNgg0uiEacH4VOI0LHIkcnaEKoSQ7O/tfZYF/t5uA2+cEo6J4snIyct33wELNwIeZtybDUNeXpetwT9NlkzAupTnwg1ZmXhFtwO7K29rfDrwIiVQ1mGZlhr2zu9jwesXtakA57wNv0oeCrw== 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=LChgevisEOSDqWinkDebl+lyIo+HJhVh12wkuH6G23qgJ10IQ3Il4C+yu8eoCKo9N7eJIusKWYzzJjnA2wu4wNnOWqSemObVcxnOIqFbrynJ73L99k2EoBpWbYVoWCQeM0BD0CI+FW/dDj+YkeHU8dQeO+LKYoQWd0AKfnAPxGn1xKXrk3O+Qcci52X1Itw0jfyE213PSxhPMRKl1rdNYOMgfMCKkmViK8XU5AnFsEKKcEWyDAG/j3FF7jEl89KYh5R/piuZftKpjWPi/yO34drwTFaqY8KtnYZ5oRYLKR/zYsdNiD4/2egWcIyLiLnbYhhO6f/t9im1++XtSfcIKA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:27 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:27 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:45 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-6-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=6978; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=aOAaA7jThMYTLvhiPxxVJZNwV14iX6s7QyAVIfn6T48=; b=oTMullFnRvcgDCn4UrodMjw1gEabZ6PgOExdR0Tchd/aF6I/s2sl46Muk/XAXNjXt9+RW3gkg BM4cvgr8qaGB+t923c7fSpyztuEw101Fy7d9BWcDQ1FzJ5VwOScF3HS X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 453be186-359b-4b65-0697-08de39cd5952 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RnV0d1E1RVdWZWwzYWdvZXJwb01pTlA3dW8yZzRXaXE3UnRKczM3Uk5kaGZz?= =?utf-8?B?S0lBZUN4NXk3RXNCZFJqTDZzc2JkR2RURTJUR21obEpqNytoL1hGZVVzRnhJ?= =?utf-8?B?ekRJR01tbEhyR2tUbmlYby9IQnVRQ1JwNElwbC9lcmpTT3YyK2hDS3hZWEI2?= =?utf-8?B?Z1ZwRzBGWEcrK1JuZXNibGdxMmFySVZ0WTJIOERmQmw0NHhlcXNXQ1FxZHpT?= =?utf-8?B?RW5idVBWaUtVY1N2TzlSQzZWZk9JMExINnpiSVBqTFJ3Nm5XTmJ6MUc0Z3po?= =?utf-8?B?YVB4RFVIcms2b2dXZ01Uclg0TjFJUlovTUx4VmdIT09UYXFKSWtRUkY3N1pB?= =?utf-8?B?NTBKYXhoMFZ2QUU0NHdwMjJHWDVOMGdGRWFpL0s1UFJvVERlbTBZSTk4aDIy?= =?utf-8?B?d0xGL0V5UDZXaHUydHp6cjM0cDFCUGN0RC9BSTFvdndTT3V6aXppU3JHUHRz?= =?utf-8?B?VHhRLytLUmE0QWtaM1pWVklqdlV3MFdtV245UFY2aHloblpscGtveDkvdWd2?= =?utf-8?B?dngzcDlUcVkvUldmSDJhQk9wd0F6TEZYbkZjamFRNnduUkpvNU80cmdjWjlq?= =?utf-8?B?QXJjK1JaQUljaTFaczJMVU93ZEUzVHB2em92M0ZEeDZuTWgyakYwc3pPbVVU?= =?utf-8?B?NWdqZnVQeHJiMDFiK3NyVzNQZTFIa2JvT3Fac3BPTnd2ZExLcmJqZUw1anFT?= =?utf-8?B?QkUxRDlRS21ES2dhcTVDdzg2bzZZU2ttNmJ1KzBiQ2xyWW5XdTJFWmJ1SWow?= =?utf-8?B?U1hqcU0rWlFKWnY2ZDFRZll4cjM2Wm9KU0p2b1hvN3krbHB6TDNmV05iWEFX?= =?utf-8?B?MGlhdytTVlVrMWRjQ2wwMlExRlcwVXVrb0lYanBuVE94SjlSUUlGM21rQ29a?= =?utf-8?B?dWF2eUVFWUM3bGt4aXlVdmkrOEdvUnE4eUFUdVRrdzZmT0xORStKbitWVTl0?= =?utf-8?B?UkJVZTBQTEFFbGxHR0JTdGpXbHdrTWlGWE5leFVGM1hQZjFLQXBKcDZrcVBJ?= =?utf-8?B?NE5EOFAwTFhSanZMUXh5Z2taOTQ2OTkzQi8xb2I4eUpzOGQ4My91Vm9iTTNT?= =?utf-8?B?Rlo0YnAvRDZpTGdhYUFnQjNzOFhNeXVWS0ZRWXE2UE1LSUFuUncvQ2kyN0cx?= =?utf-8?B?d3dlWE45bDBoZld6TE5QS0xkSWhYQkFZcDEyK3pUSGpuSTdSNzNDYjYxN0Rw?= =?utf-8?B?RDZIRTNPSUl0T3J3Y09JZURVNG5UWUpHWFVSL3hlWGpQU0QxOGNaZTRMNGY5?= =?utf-8?B?ZjZQaHhDYXRjZURuZFpTbStqREJjbjFwdCtZYUtCWGdxM3ZWOU5MMjZ0N1Uz?= =?utf-8?B?VVZWVDAxY0RZaUlFaFRtMFhqZWZKcDJSWTcveUZaQlAxYW9LVEJEdmVsZ01m?= =?utf-8?B?a2JLQnNvemJ5ejd3T3JnMGdyeEpzQjEyS0tVNGxGVnFjTWcrRTEzYThNNXRK?= =?utf-8?B?TWR3dnpidzBUc3FZeTNTdVRaUnMwUHdPT0NrWGZMb2JqbHExUXhCSHlycW1V?= =?utf-8?B?MmN0Y0g1T3dkeG8vU1hzdHovRURiRWFIc3FKVW94d0FkaGpiU1l4dGZyeEh4?= =?utf-8?B?UkwxWnY5SEQ0UTNtSWxuclEyMWVZL2pYSXhHUlRpREJDRklncnlvSHIrUHBQ?= =?utf-8?B?NDhOSzVOT1ovcE0xMENKNjlnUW1OTU8xWVVWZFB2TFMvZG9TN24wVlB5eUFR?= =?utf-8?B?TFBYT0w5b3BhVEFXeVAxMHcxNTM1YnFaV1p0YW15RFhhWmI5YXZMME5ueGZT?= =?utf-8?B?aTZQUDEwTXFmZ2xuV2ZqdC8vL0EzN2t5SE9UNkpIeEpmUlF4QjM5RmpMa1dj?= =?utf-8?B?Y3NESk5SQ3ZPcE1iU01WQkwzZnBPL0RNR1pVTUYrUDIyUVk1NHlLUml4b3Rm?= =?utf-8?B?RXFnYUNUdkNrTFF1cDJ0c093bGcyZ1dkNS9HVERkU21Sekgra1d2R1NNNFNn?= =?utf-8?B?SnY3UXFpbzQzUVcxU2Y4VUFSaEk1UG10SXJGNkNpK1d5NVFSSG56SURwdzlo?= =?utf-8?B?T2p2WVdYbTM0M0crQVFHUVozU1lnY3FwbGlvcnNScEZ2aE4rQ0dacytRU2Jw?= =?utf-8?B?bkpuOUIrWjhFMG83RGswcEY4cGNpeURST0F5dz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OUVnMy9nMUcyT2xTU2VDeVdyZERhRjVmZ2tyS25EeFd5OUt5Q29PTXJ4OFp4?= =?utf-8?B?Y1FGRW55MW1HRnMyTWhjVld3d3F5M2ZaR2svOEU0OUphME14UmlmVjVWS3N1?= =?utf-8?B?amFUTnFUR0l3dWlmaWFJYkhYZXNBSUw2NUUzM1gwNGVjNFRpU3ZVci80T1Mr?= =?utf-8?B?SnpVTVdoZllTM2xxWEFvVU9HVjVRYTNyYXk0RllaVWsva3RGTXEvcUNVSDNU?= =?utf-8?B?bC9GQzJaMmhJSEZvQzRHSTkxVkJZOThUblVTVFFRT1MxckV5a094aTFyUmd2?= =?utf-8?B?dWcxdHd1RTVIYlhaaE96TFNSaFcveC9KMTRUSnhlOENGTE4vVnJwb3RMWERx?= =?utf-8?B?c2dPTVh1OVNJWjVOdEh5T0JnajBHQ1ZMMDVlZmpabjlSVlhHN1dtNUNvVWxt?= =?utf-8?B?V2cyNDUxVW9iNW1MdnljdGE2ajVjV0E1MEtGVXRrTWFkbTdQbUtwZk9tUUpG?= =?utf-8?B?VXJ3NzlQbDhhbE85RGtabEU5YnZuSHQ4NFExUkptUklORUUyWXArWDFKM1JZ?= =?utf-8?B?dWFqVUpPM0JYNkxON21MSEdjVGxHOW9JWHh6R3A5dXd4WjdCeUVyMUd4V1Ur?= =?utf-8?B?RlVsU1R4S2JDcnVjQTI2MitObyttR2JNZFo3MTJQQ1ZRa1EwbnB2T3N3dmdC?= =?utf-8?B?S2NuMG1nVStEWjhzcVFlWElya3RxNXFjYW1nK1FhN1JoL24vb1V4TGpPdjl1?= =?utf-8?B?RW5YNVIzbXRwN0d2M2dCZHF2U01CMDZ2K3M0bG11cHdKamRHOU91ZmJiOHpE?= =?utf-8?B?SElKZEl6NkJmM1FVVVhVMHZxbW5hUXhsdFFqVG1IZlpZbm81TXRwQ0ZZZjFM?= =?utf-8?B?RVM3U2FtN0E4V29JbnRQNEFCS0pDdTkvcjkrY0JjQWQvK1Z0OU1ON1BnUGlS?= =?utf-8?B?aE9uekdiYmtwamt6L2pKSk9VV0hIU25yOWY5R1lZZEtoSExVZnFrdXdIczdJ?= =?utf-8?B?NnB1dTBDMXllNXR1WnB2ZDE4Z21qUlk5enAxbkNFVytDVGZkU3hXSDhkVUY2?= =?utf-8?B?ZjIzaXBDdUdyallTK1FOaGxsQ2cyanRaNFZQbVoxbXZTOW1FUWxVTzd1M3Nq?= =?utf-8?B?QzdxVjBXUk1zaWRCOVBOeWluVjlQVGdFQ2ZrUmV4UUxzUnVHaFhScnB2K0ds?= =?utf-8?B?c1RpUkVyYUVNWUlabEQrOHNrMVhLbjEvTGhFUmswN2ExelBLRjQ5c1BZekhn?= =?utf-8?B?UWZtaFJvSWV5cXp5RHRjQnlFUmx4V3dHUUR3bzZETXJVWEU2RmJCNG42UTJn?= =?utf-8?B?TXBTY2doRkxlUlNUMGtuWXkwTXdnUDZEZkVRV0RYeXNlbExTVmVCWjVEOGho?= =?utf-8?B?ZTBENS84ZjFxVnNvZGZSK2l2VUpmVExNN0R1OVZwRVQ5YnNjajB5NU9jcytK?= =?utf-8?B?Z2N1M1d2U2ZZSXF2cThSUTlZWEZUbDFrUGdwK1Iwc3lsWlBGRHBzYzltdSsr?= =?utf-8?B?V3B5M3NXZGV3bWZPMnI3U3pPdTVFMmhlUFJTNmhhOFBETGgvWXMzd014KzVK?= =?utf-8?B?alErbGxiaVZWZ2tvbWRhUFBpcSt1M280WFNWYWh6MWhnTWdhVS9ISFJXandQ?= =?utf-8?B?ZU9odDZpNzBBcmpQSkorclpWSFYrancrWk11aGRGZ0ZlcXdldTBlWFJIM3Av?= =?utf-8?B?WHViQmJIWGwxdVpuNzIxZFllS1BhOXBGREFZNEEzMisyTXlWc002YXRVSnNq?= =?utf-8?B?RkI2d0pmbUl2YzhES3BvY2dRaVZHek8xdUVjdTNhU1hPRGM0R3lGQTk4MlBM?= =?utf-8?B?Q2xveDJQb0Y2cVNUQzVDV0x3YzJmQ092cUtEQ04vVHAwT05QK3hnVGVPbC9P?= =?utf-8?B?bGF5bWUyYjRVaEdqUFl6VENaS1JUUUdYOTlUUUhHeEVLdStESjVWKzMxNER5?= =?utf-8?B?Y3c4cGw1aDEzTU5xUUhWV0prMnJGVzNlb3VSUE1PaTVHRlA1QkVCMGRIRGdW?= =?utf-8?B?RXlUdmdqRjA2bmVOeTFFdXJQa0NoUDA0UXh5L3B2QWtnc211ZS8xckllN0tL?= =?utf-8?B?YkFjdUdpd25iTitPRU9FOTh2UE9oaHpCSmgzYmV2QzVocEdlT05pek1jR1pV?= =?utf-8?B?NzFXT0NqczlBOC90anhQbG82eFJPYnJSOHYwZjBvQXRRM1UrWGl4WG5ZdTBr?= =?utf-8?Q?5rCw=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 453be186-359b-4b65-0697-08de39cd5952 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:26.4654 (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: /EAOiEPaUCVRgu8RaTgnMUeqwQNbjoUsV0fnmGRZFNJSbMp0CCw6Lh0VEc6FSZzs9+yAtiDZ0anUJLfJA2uzGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 Dec 14 06:37:37 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013044.outbound.protection.outlook.com [52.101.72.44]) (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 934023126A8; Fri, 12 Dec 2025 22:26:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578391; cv=fail; b=bZGh2TVBp3EQwddRQpJHd7NQkCnE6k7viRcCATnFsqSJqAGddCs8pzqUuwe/pmSu5rEGauLqoJc9xm9vplQ8vXORJSQY69n3lXKjnBj4TtK63H20yoI7XGX0wz3SLW7D2SHuMXZ0I1q37LwhHch8JOG7b9A8rTqfQSWp5/RMaGk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578391; c=relaxed/simple; bh=mxkkeUkhqdBRaLfd5eE7eoKCRi/hPytS40oGEpFcgt4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=jqUXA2/jF2z6GlyUn2xapyiSbziDX3JHFbXtbt+fcYBbZBnhzFoI3ATVOVMtz2g6d2sUHtcJmLEYYKdOKRm3aOgvz5CwR3e9SGB3f6Qzo5+YYYE532QhJ3302uhCk4m4LkYmcjPcL271z84tXeCkiva87M1r7f8AQWrdDNL49nk= 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=PiiS0xYN; arc=fail smtp.client-ip=52.101.72.44 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="PiiS0xYN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cymosCBVukmTXmrfsJhde5bSpCQWkgnxrCzjuXrpA+aUUe7u9s9XMJ4OGYtu/7qNxMN6CFKjGFPc2XjJpTzLCcO1AQfjMKd1R/SNZXffYZwLG89lDIQGra86AfBiO9drDMPpWgDOyERGBc5kb3wJxd2j3obFWTPm0IWPooQSJEpg4Y3ZhAnrDCRt5yPxoVqGIQC5sRKX9kammDW5nqzNXkNnyOQuecBRyfO0OZp5r+QY3Zb+6ajwUHdOev6WiiTTadPoh+ZbwyPlXx2Ha1zy+dtZUwESnmTdqZDk/24xi8EJhzv1k2PU0QLqTmucj7cA05e4r5IdkC9QnYBU4gk4YQ== 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=MwvHUP0/AfESvT8ZcTUWPFOVFvTZ/aN1cB047T/aRzk=; b=kILvBMBoz9ASFAN5nfYt9TyZatevuw1mSW8pfTSkjxkJSTWpmwj5zUZWbnjNSNbf9WDYCRfKnUmwA5SPHzxlywXyIIF164Mruf/3BL6IAxeHj8PrDNzHC/30Qy99Dmg43XDYmfQoUJ6oemKeYitqKBlApFs1IlkOgfZonB4DLId95yHxFTjvLN5AxaM4WNzM+bmWXnc6GiOAhHOWYmvhlBlCH2zqZFYWeG7VUh9l2gsEcxIMKM59rJuGjt0I5wN4zBB/YUP7oDVK6ExuWtlSWZxPDFoj7vcfYi1cqUhEDbMb8ZYKCjfUuYvIwWwg9qnDr9JNJeq4KCFyEi/mQ1FTvg== 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=MwvHUP0/AfESvT8ZcTUWPFOVFvTZ/aN1cB047T/aRzk=; b=PiiS0xYNYFO97iGrRQsw+HcU6EgPWYDuo1fiwpdYzrIhFMocV+q+oG8GCBG34KzOpMl6JD1KZQ3BS4BB+fnK4T5XrF6xzZtkXyxCGLcbG7sf400XoTxgJPQhxWtYTtBIybBXJH/4je2dKMe3O9l4u5t1MCgCul0rodBr02oC+fjNfpLI3QqodJxJblL/MgU+qFH2Lp2K2q38xV1MMMuUvKYZCemZG9POln65vXiE3RsH5dl62D2pIaZt4gV8b7igh1ZG9eHRKizebefUAElIn0cEBxfEH+TLL8TL5tU0NX7hUOgQt5fHu4ad1nVmHxyTEFytc/JKiblqTGP2s1BmMg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:30 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:30 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:46 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-7-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=7899; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=mxkkeUkhqdBRaLfd5eE7eoKCRi/hPytS40oGEpFcgt4=; b=vkUsLkUkA9KI+uoM4Rb5iZgBwhwdplo0N61sh+WT6NwmcHMeV98m6F5lX0WO/OOR7N5RI5CZc /rxiXEEwCfOB2RYu7UEmrG1aAW8e0HqW6/Mo1D9v9kwYnIFrQmUMPOp X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 8feeca90-e3d4-463a-8c33-08de39cd5bc6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VmNQTmpTSWx6VmtZRFN5b25pTlFuaHE0S0FpQSt4bjM2NGc4UjB2aU1QUldI?= =?utf-8?B?NDc1YkJrZUI2VlJWYUpMZ0JEWldSdFdTOEJBUWZsSno3QnpsdEdPOWVPL1Qw?= =?utf-8?B?N0hwbWlxVGpnZDRhRlk5dzJQdjRpZ2gyd0ZhemhzMXlCMEhTa2V3VzFrZFoz?= =?utf-8?B?NHBOK3IyS2FrVkFZSWxoUnlQR1hsSFVWTVVadFJ1RUY1Q0tkZ3M2RXNEWWFU?= =?utf-8?B?Z1M1MzdtMlFuc09qaFNCRHBuc1ZEcTBYeE1zTEsrTGU4aU4ySmo5endQOHJZ?= =?utf-8?B?V3hRRHphcmxVdEhsRUl3MjZ6NnVaSjlLZWxyYVkwKzhxN0ppdHA3bzdpMlV3?= =?utf-8?B?Z0drbmZWOVhjSEt5ZU1WZjlDVmdjejBpL3p4Y0dlUUtMb0JySkhZRi9aQ1FO?= =?utf-8?B?Um5WU1p0VllmUGYwNGExL25jT3daNFFsVHdOK0JBdXRaOGtHdDFsS0xxQXhB?= =?utf-8?B?SnBhTlpOYWx2dS9wQlVHY2N5Mm9yN09TNjQxRk1WcFFjbUxTMm05VkRjSDF3?= =?utf-8?B?ejZoaE51OGFXWCtsRm5XeTRUbGpZQVljdm5nV3hSOXExOUw1YkduQ1lNWFNT?= =?utf-8?B?NERtR2VWdFhnNTd5emlXQVF6Sk10T3d0ZzZXMXZrOU9rQnVudVJ0ZkNETkVU?= =?utf-8?B?NjRWbHdWVE5xRzNhMTdnRnV0MDk4VEpWQ2ZCbThJajVvTEp0b2YxVmNhNEU5?= =?utf-8?B?N2swTHhPOVJKajFkRFo4VE5LNG85NnJuaDh2bWw4dlRINVF1L0RaNTFXeVF6?= =?utf-8?B?RW5aelpFd0tQNFIxRysvcjFBeHJkTzFHeTNmdVFPQm9PdVB1UFBhbWpYZUNV?= =?utf-8?B?ekxEQy9uYXNVbDVjWFZJZTRXZkQ5dll1VXBVOWF1b1JMS2tDUFhyWXY0d2w2?= =?utf-8?B?OFg2Tmcrb0JGVEY3WHVwYjF3V1BaUG5NU0hHeVlZZTFaQlo0cUZQK3dwQnhV?= =?utf-8?B?cFVaWjlkaHExdStzUjJHZlQrUUd3OWJjWU9SVWhjZ2NUa0lLZ2NYaEVrMEoy?= =?utf-8?B?S0VMUXorVGhrTlZpUWtBa3JKV1E1MUwycXMzWlZ0T2N4dXZhNlRlcHgrSVdV?= =?utf-8?B?R1piQm1yd2VVNGVXNy9MVFVFaDVTVkFwc3BpdE1qUXNMQTFyV2xBaVpFVDNR?= =?utf-8?B?clpwMW5HRW1GL0Fra2dwUVhmZ0VTS0NDL0J2eGtXMDdvMnpUa3VNaHk2Y0ZT?= =?utf-8?B?TTJJdHlDQzhxSno3VVJKdlMrRkpicUJrZzJsWmlHWXptb0JtWUgwbDZlVnlY?= =?utf-8?B?UnJuWjJlRXdBZitQODhzL3Bod3NsbWNNbUVUODU4dXFoS05TM0JTZlh5TXk5?= =?utf-8?B?RXNKU0V4dHdiQ2pxbGdOc3JRNEt4VU9iOUN5Rms0amFrUzNDZHRuaWlwc3lI?= =?utf-8?B?YzBFMmVxQlU5SzZCYUlidFhoWmZQK1FrSWJvZWl1SkdwK24xUzVpN216eHIr?= =?utf-8?B?YTNYaWhTVlplVGtwbEtKNndlSFVheGtiWE1qaHZBeTJmdHJmZzVRc3ZDdFcx?= =?utf-8?B?dHFJV2UxMmlyQTQrelZpNE9UeVZScTA1ZmZYNWcvTXU5dDVxWHNSUlF4V3hM?= =?utf-8?B?Q3BiL295Y2J4MFczUFlSaStRZ2tjSmFzbXl6MHpuL3VWc0NzdDVzOVpVR0Ro?= =?utf-8?B?YzNMUUwrYkt1NHRhbTNzQlhsb0V0OU1yTkF3clRLMGxCTnBSVXNGTml4VnlD?= =?utf-8?B?RUNTaWZ4eXVObDFaL1dqMzdwTXMwWWhxV1NaUVNqRFhOZjBjKzV5VmYxMzNE?= =?utf-8?B?Uk9XMFp1VHdzK01lNlVVd28xL25FRWtpeFgwZWVGSVJjRjRJN0ZtTThxQWZP?= =?utf-8?B?ai8zbytwcDlRdnM0Y3NINlU3clZlMU16SE5vSUpGTlBBeFZxM1FtUzI2TTFD?= =?utf-8?B?ZThZOHVqQndkOUJ1UUJoTTFvZTE4NG03cFIzMUd1NERpYVpBM0JzZktUYm9D?= =?utf-8?B?bHJSTjJ6QTRtUm5iTVJ5eFhNNk1xYmZEU1RGNERYUmI4UHB0WVRaN25wRlhB?= =?utf-8?B?VGVkTGRtQkJOU1VKUytWZ2FvdTV3VWcyUHpvZnQ1TTNYbmtRRjVBelF4WUwx?= =?utf-8?B?SzZnUE9aSmYyTk5MaHY2dEkrYWZ5S1c4VjNSUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UUtOcnpGSTRSM0xBZWxYUkdDdE5MMDN2QU50dVNQWWx3b1V2R0p2N0JyMmdP?= =?utf-8?B?SWZDNDZOUzRDbmRFY2F5dG91WjRGbEw3cHVvSDNhSllZTktITy9UbS9uV2lw?= =?utf-8?B?ZGRtZzl4MDlobW9LSndqN3pTMHdwK1hzRTZwQitDUVhDNjVwaVJHbUN1QkM1?= =?utf-8?B?anlCWVJmM2pXTmxTQyttWjBsVXJHVzlwb1B3dTRiZmtXajZwWXRnUVFTQnV4?= =?utf-8?B?ZjBaTkpBZzBpUGphWXNNYkNRTFZVeEpCMWlPbm0yUVpWV004NzZ5K0tYSGFI?= =?utf-8?B?NFNaZmN3VWxRWlJOa1YrMkpWUFJEMXBEQkJjdXNaOHo0TWJEdkY1VmU1RUpX?= =?utf-8?B?dk1DKysxT0Y5UEVHQ2lOQ3ozaXc5TUtSeE9XWXh4c3ozZDVGZ0RLdmdkMmNw?= =?utf-8?B?R1BycW42SDhMbENQTXkrMEpTbTlFY3c3cTlzR3RiTlhlMEllZktzNmRZdCtq?= =?utf-8?B?d2cyQUxNSXBLZGpEVVdQaVZYVGlHa01vcnIwaDhiTjVFbDYydkZUdTJ4bS9T?= =?utf-8?B?aVRrdW1WNTJuTmFEdmpUZUtuQlpkNmQxQ3VwcnNCOWFkcHpGN2lYSUJRdE8v?= =?utf-8?B?aXlMbGJCR2ttbnEzcFUrV3BnNDZQVDJhT1U3RTcwV1JqbG53S2w0dmxXa21i?= =?utf-8?B?UVhydGFWd1ZtcXZkZGJVQ3h4bnVDWUpXT0MrR3gvRXFnN2R3NDYzYlpRT2dJ?= =?utf-8?B?YnI0bUVFNGJkbWsrQmtnTjV2SmtEZDJaci80OEJMT2wydkxKUFhobk1SSytz?= =?utf-8?B?UXphOFlEdHh1WFZlL09ja0ViZzArZGdoK0ZxU0pCaVJoeTJRMzR4cXowK0lw?= =?utf-8?B?QTFob1NNWE9QdkttVHhVeTRMMkQ3NHRqbUlINit2MWFSWjR3K3FwVkFLSU9C?= =?utf-8?B?QmFYTFJjRGk1WS96TTRvL2ttMHFwYlhXeWh2N05raGpZYStpTHp4WFlKVytO?= =?utf-8?B?Tzk1aFVxVng2anp1Um4zUlYzanAxa296aXJ2K3I0YXZlVEFxNnkzb2luamE3?= =?utf-8?B?TTlNT0FVcEcvVWNyM1RXOHdxZkN1UUgzNHZiZUpRUzhHVGVXd1pqMkc1cG9G?= =?utf-8?B?RVhodkt1ejNkdklqLytzTmNtWFBBZmhwWVNoNTV2VDIrcXlGY3JaWDQxaTZn?= =?utf-8?B?NjVPYiswL0JOMHBQK0F6VWVNa0xlVERSTnRtUTFIOWcxdStFN2FXS2pVZldr?= =?utf-8?B?OHkzbVZsUnJFRm43dUZnQXUzcWhWdmZRK0dIZVNSS1lwL2dQS2ptcnJYRWdq?= =?utf-8?B?cG44YUluZEtPT3VDT0lHR2kweVlqMnc5VmMzMGRNd1RTUytmdU0xdE9tT2s0?= =?utf-8?B?aENuT3VoUHlhcnFZTStseVdpTHlEUWswbGQ4bUZja1J6R01CdE56c1VxQUp5?= =?utf-8?B?WDNDYnRSSEhuUHcxemV0ekdTQmtVeWRad1BVWkg2bnNkRUNHVFg3MGJjemVt?= =?utf-8?B?dUtoc09JU2dVVjR5SDZiQStFWHp6VUliRXhmeDdTc01nTTNSOWsvbzNDRXJO?= =?utf-8?B?YXd4S3U0dXFadjlFVTNoU21sMFFoT3h2bWduTzNsMU1saVBiUnF5bmpTK3dn?= =?utf-8?B?cUZ2ZW04aU9zNWxZWGsvOVRVMlI2KzYxQ201VGFwVy90a0M4bUhEVE0vWWJw?= =?utf-8?B?bC8yNTZhOVA3Vkk3Nk9Kdzk2d3VJaVVCNjg3VU5GeEp1VGlnc2tndVVzQndS?= =?utf-8?B?ZkFJV3ZjSXFVcVFZNnhRREc0Y3pxaHdOd1NiUTRHL0h5UElYQ1dVNHF4Sk5x?= =?utf-8?B?VFAwU2g5UUUrVWhtM1ZSdHlOM1lrR2htS204RjcwRkdhMkVLb3lWYjlFdEFx?= =?utf-8?B?OTdYTlVocVp4eFlnUmMwZURaZ0VKUGxDbVcxWU1PT0k0aVBIaUdPWGNKdTNy?= =?utf-8?B?emdTMUh5RmJxc0ZPcE5LV242c1kwQjVoUUNtQ29xUml6SXV0TE1HeWFPQmtS?= =?utf-8?B?QTNJQjZqUUN3ZXdDUWxiNVZCQTlBYURPY3N6TTZLWDUzMVlXaERWSk9ldWpn?= =?utf-8?B?TmR1a2ovcndFTjZWc2phWlBub1BTY0x1YVYvME95VlA3cTJKVzZ6VGpCTEt3?= =?utf-8?B?WDduWkZ0L00rckVENXU4ZjlYekJ6RFd4MTdZOGxBTS9SZzFNU3hyOWRzeFFV?= =?utf-8?Q?tXog=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8feeca90-e3d4-463a-8c33-08de39cd5bc6 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:30.5130 (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: YEY17UKMksAshModkrRo9oGOppdw+Ti2FREN1TjIJUpzEiOHPuVNiZN4NpWyrw9ETFq90EkL2Mgro9D+X264jA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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..cd99bb34452d19eb9fd04b23760= 9545ab1092eaa 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 int 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 Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 A2CCD312821; Fri, 12 Dec 2025 22:26:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578396; cv=fail; b=hhkh0KFwfwsaYs2FhHEgAwyQmFAOQjUiNnUqjFcioavxDgZxNIDEAFv+4j47zocQ9hO8Sp6G8+0YqCOiK6CMBZyhGaM1DqiHn3l5UOaHlYRCFXdZeCQr6s1MBpy5n+RSlGwaX3PHLKwbY6Vh4u2x1Yw6q/3HVFY2YiWvYdmAEIo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578396; c=relaxed/simple; bh=Sn/GabRX7BNWFcJWwGbQB+v4PtaxhlGTzNFSiUMk1y0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=o0fM/6JpQGXo5GC2OtxHDBRy0CF/3l4VsqXw7guH1JH745HHt7qlU3qscRP3T7q9jsY/6VdbXBzxiieF1WAMqc0GkPdoVhnlsFIl2cb9yyLi8l/wRKKXbtJTS7twq+ykNVla4zIUdcS5WtSPyXp2zAEri5LKXi2dOFUfeAMI+X0= 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=CB4K9HfI; arc=fail smtp.client-ip=40.107.162.60 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="CB4K9HfI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HtErbvgqUva9R9PgI295pwCQWmwbwean9eQI/1liwh5V0LY5Ls/9i/34zz2yCph0f8OGiBdf0j3nWZOOiPJrTqpZgi4qxan597qhlbxAK2xyjLjhEN1IoKdxmFDgPW6IUaYDRwemseoSg8tL1HtB+R8PVAVmUgvtArvf9kas307xqcmU134/e2FN8mp1VBqxTMJD97kVY+ruXNeyHxlnDB6TphzpTQ+3oX8h+PvVSW7KAUcNCgbNXVljUwWFhIfg/IziUw3pbPff5Gfs5L1vVZOe90NkIkU/w+3XqbAvOlC/avTt6pHWJ9qIDwRDm9SxNLYAj0NNMikcaGbhMR8HOA== 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=jdHF1bJHb2SnhhFi/q3JvimqVgVenpa/dEP9w08caNM=; b=Z05+AZiYMO5kUKQKqvjb/vOfqfkuju6DURZomYdla/Ux35y6WOb/QLxnXtkvu6sK07bM3c/ooLvuVaKB4MceJjHYJoA6ZWqiZY0ZH5wqK0LINb+ZbeTt6zxwnUrQJoa/O/sF2rd0ZWY48cCpCcGfZe/u6LJPf0GgtuGp8RXMmjbhiWNVfoF3CgwakuvxaBQpRLM9zgdFFdkWhr5S9eLeU6niBGKzajExFMvN3sKEHHeq3q/et6f5kq3YF/N27sBQ1kMyndgGuKLpqgIXc65pCracPjS/gWuQ8IT0ACa3XdJFutooIsORMTPlEHuxRZN0lXoezC9bH4+1/rIXyuHGkg== 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=jdHF1bJHb2SnhhFi/q3JvimqVgVenpa/dEP9w08caNM=; b=CB4K9HfIxp6QxJBx9rqhYOe+FaXosAC9N3LlkqeXN+ic2sroaotlNlrli2A61oSROzU1bjXIo0w99G5+8/IOyW0cKx1k8SEym7BY0jojcrArEfDbZpIAXNjKd3V7N1Cw4Wjvw48jK2a+IuHw8C5nNC1PA5CaQHpltMnCYnrk7IHIIaTM77OXHcD3oIThKVbUZxXTnaZkpbx9+1zOONdpf17TLVrmtpx86KZ8R5KV//sHvz0KiPxfAanDOCMJDW0JuB3Jh6mLms7QxPWGLjOkNYHP+ltKfixbgXQy2pMLxTYh+cuAwW5Wkl07X3nUHMX8lUJ+CxBBTJNIrSEut+1/3Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:34 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:34 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:47 -0500 Subject: [PATCH 08/11] dmaengine: dw-edma: Add new callback to fill link list entry Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251212-edma_ll-v1-8-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=6121; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Sn/GabRX7BNWFcJWwGbQB+v4PtaxhlGTzNFSiUMk1y0=; b=a2YUmB4WwA+skM1MwjYhlVEUgTbmNMsMmi0aZoRULqtqxc6XeKW2g8oHi2epHKUTa+j6x2z2e 2x86xCwKso/AN2Kt7JJ6JtGq8m58oMPXIL/Vymdvt+4iCNp748jNPio X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 076597ac-708d-46d7-3746-08de39cd5e22 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cmtBSGZFOGVSYVZuc2RCaXpVakJITVVsVCt2K2g3c2NLRjZOSTJBbDB4ZnFo?= =?utf-8?B?c2tvM3phdFpjeXJidjM4aWJRZXZrODF5NVlzdVhTZ2VFakxNRVJNcjU2cnFL?= =?utf-8?B?MWdxZWd5azRzSDNhcXN6TkZ5MHlSZVRybHllSzdZbStXWHJVS1doTEt0V2Zk?= =?utf-8?B?MVhLZkVhbElsUFd5ZGhGa1dhUkQvQzJ0emVFMHFFY2dhOXlPN3MvVEpreFZ6?= =?utf-8?B?ZjltZE5MQXU4czhmV3QzRFMyVDZsMk5DWFdSTGtabFJ1eHYrOXU5WEhNS2w1?= =?utf-8?B?Mkhia2p6a25oVFlmeXFsSkJ6ZjhkODV5L1dBK3Zqd25aN1l5ZGhHSHF5MXpi?= =?utf-8?B?ck1SMVRUT21CeGV5Q1VSc1JrZGdoZHJ5eDByZzVmVmpHQVBiQTVuVjhQVnVk?= =?utf-8?B?dnQyazJsMnZkdlYxMTkwNi9lbS9TcFRSd29VUFlDSGVkZXByRHQzbHp2bHFt?= =?utf-8?B?RWU4S1dTTFp0V0lUOEF6c1hBT0ZCQmkvMXoySkhmU1Q5UU9URGtSd1VLZHVX?= =?utf-8?B?cno4cnZYU2ZpTE1QQUJ4dE1JR1djRUZtZzRkNEZlckpRRy9vRm5UWCtXSTlH?= =?utf-8?B?YTlsODlib0xZeW5NdktJMlhQT0VSUXN1WE9kL3VXTlpsd0dxdWJEczc2L1Vr?= =?utf-8?B?RE9UN09jamVub1RoQk4xNkRwUGRIb056M05kUjNsdTVwZS8rVERDN2xiL0ZJ?= =?utf-8?B?MFpNRzlNUHE2enJEbmxCTVF3Tk5VaGlSejNzVVFmeVRDcHIvTWpUUkpINHBY?= =?utf-8?B?UWFiWFJpeGg1VkxsZXFNKzJibXpKN2diTEVncXV3c21HMHJ1UlRqL0JEVWds?= =?utf-8?B?VHVvRXNqTUxlV25KbTU3S3dlTVgyVjJUVEVTY05tRzlXQ3FlZ21aeTNCTG1w?= =?utf-8?B?ZHlzZG5hNmE5MlJQblRhZHIwL0tRSU9GL1J2Skh6RExtcC9sb0kyZFdSQmo0?= =?utf-8?B?VHYyMFNTM1YzVzRVS3BLZmo3clRjcWNBMDUwN0g3ZUp2MWpWd21Cc3BUN1Z0?= =?utf-8?B?WFUvVzFFUTBkTGtudDVta1RzMG5XcmVjVDlya1hMbVp4Ymg3aFpURTl5U3lB?= =?utf-8?B?cTlzaGNtOCtVT2kyOXp1T20yd2ZDTjdadWJGOVlFOExybkg5enV3ejJmUVRw?= =?utf-8?B?VjRsRUhRMkd6elhKSytRTS9MOVpDdkFVMlNFOW93S055cEtacnM2ZmlmTWth?= =?utf-8?B?RjlvTG5ra0ZCR1pCQmIvZzIvWWZTQmk3RnV6M0N0WEtTVXhNc1hPenZ5SUdy?= =?utf-8?B?bmtkMldLcTVFZ1EzUDd6R0FsWTIvVlpVVGY3T0h5bHZyaWlPSzJkMlROQUIv?= =?utf-8?B?L1dKYzhicnozSGNMNTU5Y0p0K25pTlNMbU1STy9JYnkwLy84OWtNNThOYmhX?= =?utf-8?B?aTlnYWhMd09IL0VMb1VNWnFiQnRKUmYzQ3lLbkcxTmdoUXVnY1REbFh5RVps?= =?utf-8?B?SStERW5Celc4WUw1emtLQk1yaDVFa2FLYjB4eWtha0dvSnh3MTNjd3c0UkFt?= =?utf-8?B?ejZvREVWNHNZSEh0cW9ZVkdNRXVPZ1NMSXZ0bTBsZFZpNDgyV0Vzc1doeHNX?= =?utf-8?B?NE1XWHhWVEx5aFFabWR0eDdCa3pSLzhHb2t5cVJ4UWZiMkkwMGFqU2F2T3VE?= =?utf-8?B?MXhoejkzcnU3WklSd2VPcmV3MHVaU3dhLzJTc3lJNi95TldvNTdLcXJYRHI4?= =?utf-8?B?MXdQTkF3eFNjTUVMZFZGR0cyZThFbW95ZTZPMkVBUDFGQlY4T0EyWVNDN3V6?= =?utf-8?B?YTFWT2ptV01xS213Z095NW5KK25KR0tyRk9FNDRUdE84eUpiNnNWc2dORVZW?= =?utf-8?B?b2hKYms2bjduSHpsME1HcDN2UVRaU2JVcy8ySVo0ODZQQTVjOHR4OE0zVHNO?= =?utf-8?B?YUNLc0Y2WkR4ZUhObjl4SUpRK01zYXl6Y0xxQU11RXBWUk1CUERsd0IzcmFT?= =?utf-8?B?RU1yMnJ6SnJLVUFLM0xobk1HekVIZGhQWms3T2tJbnRiMlB0U3NkRS8wMWpi?= =?utf-8?B?cXNNcVhHckZoVHVCS2pYUENycXVRT08xb3BJTDV2MzBuaGF0aGFYRjZuNEZC?= =?utf-8?B?QmJwaEc3V2IxTlJhL1BpdnFVWHZ4N2xDdUY0QT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WS84SDhMRWxPRWZOeWR6S0srOC9GVG9SbW9PU1orKzJDVkJKdUNTaERIUS9i?= =?utf-8?B?TkVQSWdPNkRrd1ZtWTFhck0zczBzaTJBZ3h4RGVQTENxakJub3laODNIRnoz?= =?utf-8?B?ZFFId2g5anBad0MrRE13RG05eGFzOWRQZ1Z2ckNQR05GZWVyNi9xT3pCL0lN?= =?utf-8?B?empVR3pQcFlQQVQ3MGN5VlkzR2JXK2pZaC94ZWdhalJkdmw3RWtoWHk1bkdO?= =?utf-8?B?OTFybkhwYWtVTllqb0lHRjMxdUFmakZGYlZ5WlllYUhaODBiM1NIV0hZYVdn?= =?utf-8?B?b2syU1IzTUk0VlphdlZhRy9MSTBEUFpCcUxnMTZnNGVxSGpMZFUzamdTWlFa?= =?utf-8?B?bWtydjhXSmp5Mzdmb1ZseXhkaWF0Zm52KzNLQktCS0R2NXI0VCt3S2xQUXhH?= =?utf-8?B?ektnSnc4Tkl0V0picGhhL2JIZHVwaWl3Ri9pSWV5azZqNElUWDd2OENFbzV3?= =?utf-8?B?blU3eUtYREh2UDN1WGJneVZtUEtIeVZpM3cyUjRDZXJQOVBIYU01dGh6bS9Q?= =?utf-8?B?U3N2T1JKdFBKa05DY2IvdklRNDJudmordXIvYjBuaU5GRld3bk1vdndhRkZE?= =?utf-8?B?U0hvUTk5V2RRelBsYWRFMVlJRm5OYmpONVh4RXZIVzhMVmkyUUNLb2ZDK3BX?= =?utf-8?B?OVExeHFWZ0N1RmF3blNydDhIWkY0czlpdktUajc3QjlQOFl3NzZmM0hGNTdS?= =?utf-8?B?SGp5eTNGeFlLZWJEYWJhSEJSSTA3Mnc0emd0dHE3S1BpbjR4c25sRG1CblpO?= =?utf-8?B?S3U4RTJxUWhab3JrS0dFdXlmRUZldFdnL1BGd1gwUUhhQUN4Q01uMHVVVG9K?= =?utf-8?B?dWJUMnlaa3B6VkNpZFhiaFlCZ25acEo0SUxOVmgwbGsrNEtXMHJHVFV1L3Rn?= =?utf-8?B?TlZsUEwyK1lFdm5yQzZpOTZtbFdRSENjUG1PYm9GVU5QSis1OW5QVFNxRTZH?= =?utf-8?B?RUpoQ3JtemhUTzhrdm1oNGQ2T0FZNWd0eGRuc0Fsei9pK0t1T3c3TzBYT0hU?= =?utf-8?B?eVdPQy9mdGNhRGovSXJLQzBxQU5CUVZkK1Fac2JsZ1FwNGlpUks2NU1Ndkxh?= =?utf-8?B?VEZLVXFFRTFnc2ROMlNIcEZLZ09LcVo3WWNVUklqeE8zYVllRWx6VU1PdWwx?= =?utf-8?B?V2tkZFZSb1RjdXVoN25yaC9DUHJTdy93M2ZYazU2aklQcTg0bCtUWjQ0blBp?= =?utf-8?B?ZzUrTUwvc1Y1cnNHSW1wZStiam8zcFpad3hUVTJVYjczbWhGZFVsMHgxS05C?= =?utf-8?B?aWtpdFhka1dRYVhIeDEyYSs5eTZLZjIrREVudVhRczVCalloZ1UzSTd0WEhV?= =?utf-8?B?TEdtZHZZZGZwZ3YzV0V4TTVkbTJCZTA1TjNwYlVJVDdhRndhWXhUTS80aTdK?= =?utf-8?B?VFZPcTNWRzV1S09LWThoZmxoZlozM0FnVEFRcU9WaG5aTnJMYWlHNW5zNGxR?= =?utf-8?B?Wm40WlJjNU1PTElzMlJxUjVGSlFlMlVwK1lSaU1jcG5FM0NtTHY3ai9rZitm?= =?utf-8?B?MmxmYkdTME9WTFErVjN1ZHpXTm9Fam56bCs1b1YwSDlVWnV0Wk9odmYzRFFz?= =?utf-8?B?cjJEa3ZLaVMyVWhIbHB4YlBCUHY4VmJrZldwbHN1bHBMdmdxVGJnMkplcFVK?= =?utf-8?B?MkdaSlVxbXdOWnBWckU1SVBycnlQaGtDUE5jUGF5R0tPVkt6Qmdxc2owa05q?= =?utf-8?B?VkFMUUYxMkNqdG41RkJ6SVNqeTJyN3JKZ2tZRW5SajdxQ1BuenZhNzNlZWZN?= =?utf-8?B?TE82L1Y2S0E2Skl3NUVIRFVXR3Q5MUR1M2p3Y2FYY2VaeUZ1QzFJYzVJMisv?= =?utf-8?B?SEJoUVppU1lqSFM1WlppRlZwdTYyb2loOGo0VnZNRzVPdkFKUFBlUXljd1l2?= =?utf-8?B?WXF4QUJxTkVKcDQxb0F3L0tXOUVBVldmMzcwYmc5Z3VjQjg1dXE5RVJ1TjUv?= =?utf-8?B?TFVlalVtTmhUUmpmVDlwemY2RzVmeUZVOTNlcHpKbTZ1K2ZOQjNmQmVqdll3?= =?utf-8?B?V0lhbmVOYWJ1eFVrejA5dXlJQ1U5YUQ5RldOYTRMcGZrREpNeWpXdHczTUwz?= =?utf-8?B?OVB4d3I0MUsyc2dacXRBTTYyczJvM0JORWd2UDJ3Z2ZHczRUS2NxM0pZeWUy?= =?utf-8?Q?ciL0=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 076597ac-708d-46d7-3746-08de39cd5e22 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:34.4748 (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: eesT8mEQT5c4Cm1sKUBqUklKonb41ErcXexAp/BE3oTBhpU8wBL7zb1ItLle1qTqVpPXe9EvBHaSPxj47rzoXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 Introduce a new callback to fill a link list entry, preparing for the future replacement of dw_(edma|hdma)_v0_core_start(). Filling link entries will become more complex, and both the EDMA and HDMA paths would otherwise need to duplicate the same logic. Add a fill-entry callback so that common code can be moved into dw-edma-core.c and shared cleanly. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.h | 31 +++++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-v0-core.c | 46 +++++++++++++++++++++++++++++++= ++++ drivers/dma/dw-edma/dw-hdma-v0-core.c | 38 +++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index e074a6375f8a6853c212e65d2d54cb3e614b1483..2b5defae133c360f142394f9fab= 35c4748a893da 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,31 @@ 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 cd99bb34452d19eb9fd04b237609545ab1092eaa..59ee219f1abddd48806dec953ce= 96afdc87ffdab 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 Dec 14 06:37:37 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013044.outbound.protection.outlook.com [52.101.72.44]) (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 4E9813128BA; Fri, 12 Dec 2025 22:26:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578395; cv=fail; b=IQHw/0JnmYEZdxoGlIcTxkFq2nKJFXi9EzImXOlFGoQqZDBiO7N4lI4O5FQVu+8gCZX8sDHpdXahoQscMOy9tACbHRkHemb5Gl3V5SC83XAYDDCVZZiOp7oKS3/EQ1NhsNrrKEWYBze407e42yto5QIVS6u2xFEas7cUw1aZUDk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578395; c=relaxed/simple; bh=y6Uq9Bg4Xe6dbOedWWACzpCyNK2pRTm/Lx8Uk7Dfiu0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=BIPrhDfXyXyDDyAYi8H1gjNEA4RuraWLAlBkxtk7sU1fiWVfMBzH4QUSMQ2ll7zrtTQD5I3azrW8R6OgAori7mbnxC0L4unOBE+4tLwEjg3s+vZ3Ezn/lUTPciXcLkf9NwOXnlboeKQIezXvKtlsRygyun9+kpeKJ+V2BXO968g= 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=NHvUre2S; arc=fail smtp.client-ip=52.101.72.44 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="NHvUre2S" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wFJVCb2MIdQbQY8vrK3DnHlF0z8ejmkCXkwe8twDprm8lMxp2O2pvQitrJCduqxjlyt3mwijd++GnvxEHUShN263kX3eE19PCszR4DVGaCtmWiVcK851ZjhP1U3aUcsjrxH3chYSVgogWBVdOLc4NPZWT2rL/9J31iQonESvnsjm1AVFn+EwVeyb3dcd95TNfUIWIGzEqp3+cuCADOJKRZLQaGL5NZaYkP9q15j6NShDVqhQ+VC35HFEmVF6CSAh6I2aK+woGY6kpqDHWlBjz5e6uh4zdmSwvcyIP3Ps0bhGZc03Tcv4N5hxn8LqREetYIHgGzPX2fnCnAo9tQMkWQ== 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=weoozgR8Q9caQC7Tqr96ledYb6mW1MxU9Yf2hcUyoh4=; b=ioI2oQkbhK0gtsXL+KM0Uoof73zvznLoK+5v4CJtFr3Y4ZbjDHNBsOVXwuyI6LoyvJJJg2D2RuvGDpqATn1QzTpp36BeiTwU9UxZehA/Mj7lAEspOL2y58aJ/2kzvzy6FGqvarSmuB8NdY1kNvtxOyzdP1tsWarA+tmaY0k+xGQMD3n+Qu1oR8RxedRxlbWPmqLkz3cq3dWY3kdkdBxc3pRtZilO4nKaeiLMaryqSlHv1uif3BPdVCnVZqnvcSx7lnlMrv7nAEUooUCXSLf1j0LTsf/wZ8qehBqbubpUKIVr1fJU4c99GScDVntp/ipa1TrUYq5P0MtPwZUlc9r4iw== 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=weoozgR8Q9caQC7Tqr96ledYb6mW1MxU9Yf2hcUyoh4=; b=NHvUre2SIG6kzDm53LAVzgleg9yGARzn5bXqp91hv8z1xreurR8EvNEXdTyvIkMV8/XD4nW+ECoTZPdZYpwWro6nYp0TeBFIS198wezQsi+VoilErfF5UI084rdQw3iVoSmDUZDuOBiXaS9kwzwsQ8tqiXO0V01aQBKzavbcFlYN9dewnReCXMhzsqNuVf5puECY3NIlixyPJZ9zdcE/bfs43Lwmgb2xzhHXsUOomsx06U061j1ddcwqZKdxKixYCFGlev5U7u1yTXnu1ebrhjxw+a/e4bJfSN2u2kyw1jLgm090SMlgIfzBASs/eD3lrcqlRRLqqktTM9WJxk4msg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:38 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:38 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:48 -0500 Subject: [PATCH 09/11] dmaengine: dw-edma: Use common dw_edma_core_start() for both edma and hdmi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251212-edma_ll-v1-9-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=7897; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=y6Uq9Bg4Xe6dbOedWWACzpCyNK2pRTm/Lx8Uk7Dfiu0=; b=gDi17abJx2W9s2C/mCLMVXAJhfVcqLxE7x19o0s1Q+q5fqAkUeBd7c467O40AowTfy8aUn4vS UqXGhve4ilUB4eACckzs6QpnUPRUUw1F8E5tcPRra7F/Vtrk/1FilTM X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 9cc658ef-951e-49fd-0b67-08de39cd607d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MTIwa2I4aXBwcFhpM0E2TGhxYWpTMFI5UmcxVUVhZExJaWFDWUNxZU42V0F5?= =?utf-8?B?N20vZGtnMkxPcDVic2xlU3E5b1lkMlpQZFhteVVCZDlXQVpJYTBtVG1Kdkhy?= =?utf-8?B?UEhNZXNhT096d2tUL3p0MUFQTHNZUVhEdzc3ZHIrSHdWRSt5TnlQMUlTRG8w?= =?utf-8?B?d3pTN2Q3TlZ4cElMS25HamswUkcwS0lCd2hMZjlTZytkMGFDODVuaEtaMyto?= =?utf-8?B?QityOERDb1R3OUNKU3phWEJGazFGQmNmR2RSY0xqdU04OVF3Ry8zaVVvY2F2?= =?utf-8?B?WmVMYjNESGl1Z3BTSUJYcUExQWtUQUZkWHV2VlZHQXY2L2JONkhGR3pPUEI2?= =?utf-8?B?SHQzQkNqWjZMT3dMWDhKRlUzS0RXeHFzS2QwQy9JZ2RSVU1QVjFVTUVJK29x?= =?utf-8?B?MkNxVnpyVjVBT09xVDRKV0pLWmthb2FJejV3VE9PeUpOdWZLMEthNDlZM0Fs?= =?utf-8?B?YlNzYUpwZHdaTktoL1I5OUJvOFF1cXdTMTdWTWpRRU5rM2oxa2ZvbEd2Wmtk?= =?utf-8?B?VWhTQjFKaURUTGF5L0NoTUhNZklvU3NRek5Ta1NadUNpYjN2dFNQbzJUTVJN?= =?utf-8?B?NWNFeEdaQUdYSmQ4dTZLQ1lHbFdtZEYxRzE3UEIvSjZsZy9UbndXY1ZUY1Ny?= =?utf-8?B?enJUTnRtdmlES0RnQlpZejl2Uk5jK3l6akxIZGoyTnNZeVV0MmhoSmhKY3Mr?= =?utf-8?B?K1IwZVJOZlR5NDBuQnZoRGpHZEhwb2Z6ajlYa2wybzYrc0Q4U0JJRWF6TlBI?= =?utf-8?B?TnNpMUt4ZGtmd3VLMkdVMVYvZFR6dWRjUDJEbXNrOC9HTGNKRnIvY1VCTWM5?= =?utf-8?B?YnZTei84ZkFsV1ZVMWRhVFNhcEV3TWttQ0VOcEVCWVpGOHhjRmh1ME13dkJR?= =?utf-8?B?OFRZMzJaT29jMkxOTlMrb21xakpvclRjK3dIbktIUng3S1JwaFJHSjZYUlly?= =?utf-8?B?ekViNkk5d1ZqVTI0SDhDOWY0NkZPMUE5TmZIRndhY04vK2lyQ0tBemtqTEhF?= =?utf-8?B?b2pUUmZoV0JQaFBVRDlYbndyL2pIRFdFdHVzVjdpU2ZFOThzMFFHaXYrSDZQ?= =?utf-8?B?NDdZZVppM0ovdUZuOWFYZ1g2UnhJKy9IbG90eVY5UlpnRXl6QVJPV1Z0YW9B?= =?utf-8?B?T0FSVk5uSnh1K2oxR2IyY0ZSV09HTGZwSFhtbkFScCsvb3lNUWw0aTd3R2d0?= =?utf-8?B?eEZMWnRwNnBoYzNsWXFUQzJ2UHJWZlhFMVhDQ2d3QnlpVDBpeXBMVnVkWnFQ?= =?utf-8?B?OVVGTFRFU3g4MDY1d1dJYkZweHQyZ05qVUY5RmZJNlRrL3NmOUw1SzNzamRr?= =?utf-8?B?ajE4MVJzdzJ0Ym9PdUthZDJpemlQRXBuV20vZGR2V21NT0p3ekJGWklUekto?= =?utf-8?B?MjE0Wm1NZVFnTmY3MW5sS2RhWWZITERxdm1yckkwL0JIeWpwMnNBcTNPcTVz?= =?utf-8?B?a0VoYzVqQkFJcmFJS05CWFE5K3dVM1V1MWEwYzZRM2lkSEl5SWt4THJQNUZS?= =?utf-8?B?MisrRDgvSXhZZ054SHc2TGt0dnlId0kydHpKYUxZOTdVL2JMVUN0V3daUUdt?= =?utf-8?B?cXZGSE1KZXJCTkxQMHhLVVhqeDJmODJjeHJvUmZhSnA0RUJkOXAybElwazJx?= =?utf-8?B?djhWRC9TblFrcThXRG1BZGFhYTNqUU1oREZQeVphenF0ZTF1NVZFZEhSaytX?= =?utf-8?B?dU1RWjM1dXpRSTRCVDc4ZjBrMWU5emZ5VXhFejBnR0wzamlrRHJ4cmVzMVda?= =?utf-8?B?QUNNRytrTi9RZUx4VFA3aEczY3gvd0pXdThtUnBCeFFrTTZnbUYvV3huUUFr?= =?utf-8?B?Vmw4RWlvK1Jlc09La2o4RlpQVE1TVmVOTnpGY01oaUtLRnhlQXptMmJUdGwv?= =?utf-8?B?Y3o4d0tOemZETEd0RHVzZWt1WnFtMkJnaUp3a1phR054TEJITy9lWW5ielZr?= =?utf-8?B?NFVDZGVvem5Sc3BYb0daUWt6TzlzUzFBL0s3MHROK21iM0Fkb2NKMS93dkJ5?= =?utf-8?B?ZkdwUUdNR3d1clFROTBSa2VNSTBraW1uY2dVQTFnUDlmYzVGOWoxVlU2Vlgy?= =?utf-8?B?QnpMNEtJM1plTWc3OXNNQVJ5K29iZ0VFM3FBZz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WUlNVXpKSjk5a0NEeEtrWU8wNTZTQjlabS9KY0ZOQmxsdjQxTzZHNmN4UkRn?= =?utf-8?B?anBpVGRYQmRNbkZ1eTZqYXJ3K1dRQk9GVkJTUDNVaDd5Y3hZQ1lheGJMOGdK?= =?utf-8?B?K3RNUENRbU1DRlBET3k5V3pla1ZxTFBYc1J3Z2ZWMlVEYytNN2ZrS1pYdUMx?= =?utf-8?B?TmQzZ3lXY09HQXJ6Rk8xK3NZeHJQN2ZhTGpmWWpNUlg3cmliSEkwSlpWOTZY?= =?utf-8?B?cEVvQzB0NWI1SUpJVE40c2JCOHNCNTdCMlJDREpsV1VQRE9YQXhvbnJRaEh0?= =?utf-8?B?eHpycDh1azA3bGc1a1RVR0lEaUJLS2w2SXBEbWVnZy9WUldjdEtxMmpoNHh1?= =?utf-8?B?UFo4VnNHOXpUYkk0eDVKR2JBaFluRVFsZzRBeE1ET1JCMGZhYkZQUldvY1V0?= =?utf-8?B?dXVadVZXRGRpODhtTE04T2JBZEpqcXdXTStZWU9PUHByelBxdzNLUWJoRjNn?= =?utf-8?B?eHV1UGJzODVkcmo0OHd3d1hRUjIxVUZMWE5reEU2OXlLZjVXaHUzMlpFT3Nh?= =?utf-8?B?Z1dvZVl1aU1BQXh5K0lBOFpPaG5BMm1NdEd0VHAwcGRwSDJHR0xva1c2ZkRa?= =?utf-8?B?MEZtdCtYUFRGVm10amVVRU9iWXVJOSs0My82Ui9uWHAxREY2endkK3VUY3d2?= =?utf-8?B?dG1yeFdybFlKeHV3OFE3RUNNZ2J2YWN1VC90Wm5EdUJ5UHVTWjNUelVGSGtz?= =?utf-8?B?L0tuTnUvV3lwOU9NdWtpQU9McjdpVGxoUnRKVjlpUFJoeE9xMnYvbGxiZmtO?= =?utf-8?B?MkhleW5JdzhMS0dXUDJYQTVsT1R3a0ZvT3l3Z09FS2JTZ3hOOXJHTmU1Ym93?= =?utf-8?B?T0UwSVdld25yc0V4cmd4d0kxcFczODlmZ2NtbmRlT3dyc21lSkxyRy91MDdn?= =?utf-8?B?RjhBYWpsdDNXMW9zakZTaDJ0QnJBc0hnSVdadWZXajZBU1B5SGtDRjExaEJy?= =?utf-8?B?cE45cjZjVmlWUXVPbWpkR3pvQWFQVlhpNkJiU2JudzdSNC9HYVBvZ1NiYUM5?= =?utf-8?B?cjlpUlRpYmczTVVTTTNibzZOWU8vOTFzTlJnVVUvbjIwUE9QZWpnZEVxWGpy?= =?utf-8?B?SU9aZUthL1dySFNpaXZyUEk1VW9PbU1kVW9UNGlKRElsVjlYTEN4NkQyRzJp?= =?utf-8?B?eXR4VXoxeStvcTl1YzRKUkNOYm9PZUZ3dUF6emt1dE4zeEMwdnNlVWdsemtt?= =?utf-8?B?dzBPUnM0SVcrUGtNUlIzZXJhcUdnRFVlOW1YUThsYTZFLytqM1UzdUVGMXdj?= =?utf-8?B?aWV4ZmQ1NXlTZnFZT04vSzRESVBCZGNmNll1QmtQQWNPYzIrZkJEdndCZU80?= =?utf-8?B?cTdzc1hQc2xjZzFJMGZZbUpoWUtVcUZ5UDVMUFZiSGo0akZGVmZqS1BZNGpj?= =?utf-8?B?c3ZnTDRLYVFFMGgrbmRjUGZ1dWZVL1lhSTV2d1lPOC9tSmtBQ2ZWTkg0STZS?= =?utf-8?B?OVA2eEZlMFJWRlNBNnFEYmp5bzVGSi93YXphQnlPc2ZDeVpCbmhoMGZXSDBp?= =?utf-8?B?NXBqVElvcGdleE9ubDQ0U2xxZVVaUUcrUWxlZ0RaUEdVR1FNUGIyVFZHVXpD?= =?utf-8?B?Ulp1YW1wMDVldkZoK1grbElscm5TbGZoS3ZIUXZhR2hrUzJ5NmNzZ0FUM3J6?= =?utf-8?B?UGk5UVFhQXpHaWYycHZJa2JVSW1CejV0cHkwZlB5QUU2Si8yVFp5clMvZkZo?= =?utf-8?B?cGNOMC9JZ3lndmd4NU1OdnVWeU96K0hXUjhzR0E0SS9lSTE1ZFJSMGtZNXN0?= =?utf-8?B?M2FrRGZoUGg3WHR2MHRDTlk4MGp3V1ZJT3JFUHM3d1NocjZySVNnZlNuZHht?= =?utf-8?B?N25uZFZPU1hZOFJtQmVadWZJaUhyUytFTkRPWmNwM3RpSU9pbVo2Mm9qN2NM?= =?utf-8?B?eUQ5a1VSMnRLSnkzemljZkVHajkwR1BTNUpEdGl2Q0QvYlNZczhrUnRvM2Rm?= =?utf-8?B?MmRKRGlqcUt0bWt6RGM4djBRZzJ1dFc0L2hWRWRPYWJrSWFDZ2dQQXB4VGF2?= =?utf-8?B?MC91VmRHaGgxdVB4c1hCK3g3bU1tR2tyWWZrenpnRTBpa2M5Y3RZazZ4TXhm?= =?utf-8?B?TzZDYmE5dnZrN3d5RnNsTytSeUVpVWt4djE3alA5c3lyWS9NMEc4emtNR21q?= =?utf-8?Q?uvUw=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cc658ef-951e-49fd-0b67-08de39cd607d X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:38.4026 (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: 9tWuXNBHovvLk8xiGMFgY0bmOPCipGdzrx6RhtsbelrlNrqKa+VZ7VgEX4zNmiUBdeqFW9CNyN9ARI/aWl7kzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 Use common dw_edma_core_start() for both edma and hdmi. Remove .start() callback functions at edma and hdmi. HDMI set CYCLE_BIT for each chunk. Now only set it when first is true. The logic is the same because previous ll_max is -1, so first is always true. Signed-off-by: Frank Li --- 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 2b5defae133c360f142394f9fab35c4748a893da..7a0d8405eb7feaedf4b19fd83bb= eb5d24781bb7b 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 59ee219f1abddd48806dec953ce96afdc87ffdab..c5f381d00b9773e52c1134cfea3= ac3a04c7bef52 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 Dec 14 06:37:37 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013044.outbound.protection.outlook.com [52.101.72.44]) (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 E1C0030E837; Fri, 12 Dec 2025 22:26:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578399; cv=fail; b=EeFQMIPO9iso7A7GNwfJG8t0TMsMyq/dIGHZXwnyBm4QMEZMXqj2+CoysbLKH77Pm0qJ8MsfN+GIr5d8QQ9MZIXWN1BatOKuR0b4+lMIJTXQD7FIYQnEwnDG6j0Fnq4cK0T5rPd++rl84xAu3aNHh4tB+3dEQXxH2GvBqH5Xxfw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578399; c=relaxed/simple; bh=fBnDw+EYXXwidHZp+qpRCDOlLUT7tA11elPIfsFmgOI=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=s23mD3pHCz68lQRE/eemjyhwBiT9bACgn12CrzIfV1EYA+QWrCr8THMkPxu5wG239R0OmWTNtW42K6AdG6k90IFaNr8byT2/6QqECEwT8XymZv+NQAeqLINocXvi1RFuPVHZ2uiqsJYgEH51dgfX5n7Lg6hVBTczBV9ENihwklw= 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=R7CjMmQ2; arc=fail smtp.client-ip=52.101.72.44 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="R7CjMmQ2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ccYfR679rMm2M62f1DFPIsBWMeV3qQMM3oNRhyiBGPmk6y9qCvb85xqcXQKQgPr1ki9e6BEPr4+vCdyw+Dcf2MVhPq3lVZLc9p40CqmbCTOiJuXB/B18GZoKGE81dCUga5fUjYaTgnWq0+E+af/+2IdWC4308Bu3XXny+hHaDiXSZf4s/JI1DCrWs2NNwB6UJzC/J2dJ1bgbJAg4GL/HTgjEbtKZKk23iOwIp1HE6F4HGbgkeIT+Qqot+F6Q3i145531daYgryDdPtUljZ6rsn6x3rErcVHO2mTlm4xehQM9Jesph5kZa22V7Hha6p9timHxcsIwK/sZyX8/lOEUZg== 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=2aaTcnBPbk1/yznMwK2s0xZBU4acTu94pWz9k0dT5Lw=; b=Ny2aBRGho2JbgmOoYCz49WGpL4GmLqnJGj/rw3uACV9sbgOEUZQPNGsivFrdhubAvN8gX+9yMhnoCf1g3EWXHP51yOB+LUI7EyyTdpCSnPCt4+0TDQI++hRR03BWKZReM0qoTEqa9YINl10+D09me+yalVit/8Gt8UjyYj9OxYCR3ZKil+ReglF7cprEjN5rpBeM0XpevgqJXZkjTqio2YyKqA5h7eK/krGCbVFwRrll1g/D41r2jg0MQt9abkkrW7Dyfzn02Eefw8k7iRaBdiKwKhNHS/vUz1Y4z90ZF3zEMY+iFhiyzqsDPrk+NxJaflu7EjGDQhdLTXBkplUnYg== 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=2aaTcnBPbk1/yznMwK2s0xZBU4acTu94pWz9k0dT5Lw=; b=R7CjMmQ2X+8AL5ZfTljBytCseMruQdZzTpDod1ibRL0gMcyr2B4kEFxkWuY664h+0Ci33V5SvyUOGYcQdDTw71jAa6vXM4g5TWKyssBaLTuNTXmyCL3IBF/zmeTB3dDFwin/Cf9TvTuicIpsfBo924/6poCQvz6VcASgaCbeH5+qh/3AeRT5YG6R7px9nbBHCNAVysHaHqSgHFxVoMvbYCav6aN1JDeTx8DytkQC7BOPbtvlbXPXgF062UvWpUunW7OKCsUseDfBtSOCmcxYffmLVbRzUYCi+MlM1LTfdJnAwTmzYaYsWzynv88ubAMIPXNBrCHGfnuYUvQByBNxxA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:42 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:42 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:49 -0500 Subject: [PATCH 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: <20251212-edma_ll-v1-10-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=7729; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=fBnDw+EYXXwidHZp+qpRCDOlLUT7tA11elPIfsFmgOI=; b=59ClHemqGAxN3jGQmNRzPhXp2YFJJaFaK9Cy1+ZLd27N0XiYIVwTkzN4MQnYGMnzKelMknIcA cnipDLtYtF0AEwxKR/XazcHFq80uqonC3mWNeq7kVHOx5Ee1dvZmg5r X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: ea324ba9-39e6-4551-7256-08de39cd62ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z0xldnNPUldHT2ZrT3RjMlFBUTNyZzVuNjR0OWZYVDVJU3VtOUg0azNiUU1m?= =?utf-8?B?d1VHMlBqNE9SeHM4WU9rRkFrMFlOcHhjSWhpRDMwMXZTNmlyNHZpTFZjNjc3?= =?utf-8?B?Smh5bStWRUxPQWJLK3RxTjBUZ2hvOVUzM0V1VzE3V0dSNkJFcmVVaElsVUpL?= =?utf-8?B?TjB5Y3BLYjMyS3hiNzhBWTFjVExrVzc3YWY2SlB2MnVhVDhxenJ1dTVlSm5z?= =?utf-8?B?NXBQSjd4TTFlbmQ5cXJqTFczd0lVL1NWd3gyRVRweUJDQ1NlNGYrSyttd0xY?= =?utf-8?B?NlBwams3MVprbzc0cEI3ZmV6azdlQUpoQ0lyVVI0SlZNVlN5NGhXNTJaVjVS?= =?utf-8?B?dUhBOE1NNERjWHFSTXZNMFkrL2MvcGYvcFNjTkRHRkV3UTIybkNpUXVxN0ND?= =?utf-8?B?bk5HRjBTalBIZjdrN3hXUDRIanovY2dlY1RXbmZIUTZ2eUZlM0Z0YURMUEVi?= =?utf-8?B?dmxmczVRL3JkR3djcXJobERnNE00ZEh3dWN4ZktKelcxSUxIUkVESmpTN0ZL?= =?utf-8?B?a2RHR1NoSk8zMDZQU2NZRDF4a0Q2aTA3a2ZuSzV4NFQ3K2JJcEVCdWQ1a25o?= =?utf-8?B?clkrbFpZalFndmhkdVpYRzViMlZudjdPbktVOEdDV1FQV2tLRGc4bzBtM1Z2?= =?utf-8?B?MXpuTlZ6dS83aTFKVTJwUWpNRWtjTWxIMyt3cUhyUzcwd3l4aEpSL3FzVW13?= =?utf-8?B?SkE4aDM5MSs0dTNNUURzS1pRa09WVmc5U3AwYjBUZjhmK295aG1neFp3UlQ1?= =?utf-8?B?Nm5BTFRnY0dsdUNFWmhCWnhkU1NsQThyckpiN1ZDdmU2QmNVZVl3RmJTSUNo?= =?utf-8?B?dGFmWUc3dzQwcW4ybC9JWVZzWUdGSEU2WU4rZU4vVHpWdDN5c3VLYi8vT1RK?= =?utf-8?B?bmszV3lKM0pIOCtnUTNrb3dFMTVwUjkvOTFtT3VQZmhPd2JJQUxKakpOWGNw?= =?utf-8?B?czQybkYxR1p4L3VkeWxYeFFTUW5LS1cway9GSnpFcE9BTmlCd3ZQekZHR2I5?= =?utf-8?B?ZUdqY2FieDZ3V3JlekFOYUFXcENzcGV2VnFzV2VieWFLTmFSbXA1a0dnS3FP?= =?utf-8?B?TGlYY2s5QTNueC9Ld0toSmF1TU1rZDJEZzdiTGJGbnNuUm5aeVhxeEgzbTFS?= =?utf-8?B?YXhEQ3RMQ1kyeDRNNkkxZWl2QUZTNHBTL3pRc25KemR1Z0pxQVpmVVhGY24x?= =?utf-8?B?cmNUY25hRkQ4Um1RVDlzVm9kM2tCdmQydEgwMUl3aW9LWDZYODdtUytDc25z?= =?utf-8?B?V2FsbE9NcTA0eGZPbXo2dURVOHIzbE4xUE1HanRaY2xtL2lyMW9yN1J3ak9C?= =?utf-8?B?Mi9iQkZMRGJXNUI3UmorcFZvNVhRMUJlR0llcXlLdEdYSEVieFVpZis0RVFW?= =?utf-8?B?N1IvRjhHUExMZnQwelNGU3RQYWY5enRkaTFFb2F5US9RYUdKTndMNUpYT3py?= =?utf-8?B?VGFvcml5YnRWT01zem1uWWd3K0V0bEIxTjZSK0YveklOdUovMkV2dnA4Yko3?= =?utf-8?B?Uzk5azQzQk1rUklnR2pKNjM4dis2YjFSMG5ueU9sMFNyckhMbVNGRFkxeHJH?= =?utf-8?B?elRENk5oVmFQdTIyZWJhdDU1UEE1UmRaZkpCczd4QzZwcGRnVVRDTzBhQ3hh?= =?utf-8?B?VXR0WTNCQzNDa3UyWEQyazYyMlFDbzZjc29ZTW4zVkM2RDBEc1ZHUy9vT3p0?= =?utf-8?B?OXRiQWVuODlFcVRwSkVER2lWaEp1Y1pRSGlBK1BGWlhGZTU1TjVlcHJwTVM4?= =?utf-8?B?elliZ3BtWWc4MlFyd0hSaEpNVGl1SGVKSlhpc0FQOURxcU8wZGJWV2lKbUxx?= =?utf-8?B?VnNZeVR1MHhKV2xWbzRCRXFPMFlrbDk4SkZ1WWpXZmhrK1lNME1JY2p2OTdC?= =?utf-8?B?Vk5oZ2hoR3FGN0JjRGtFNnZXYVNFZVc0OW5ORjRiY1NPZDZPOG53R0x4cTNG?= =?utf-8?B?NXdGTUtnL0xrdDZWQS9nSHBaTWlpRHBkaUZ1Q0NEQVlZSmVzL3pPaSs0Ukcv?= =?utf-8?B?Wm04UTJqWVNoc2VIZWlNUG1oSDRYN1p1b0s1WW9YQzV0MDlnaW9IV1p3c1JT?= =?utf-8?B?aE05TG1nVUkvclpKTGJuVlR6enhSaENwK2FYUT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OVNxb0h5aWFjeU5KT1A1MHRpL010bTEwZG5zd21IZHNDUHF2WEs0clIrTG55?= =?utf-8?B?NStWVHppc3JyY1NxRFZpYzVWc04vZy9VMjl6b3pBd2J0aVdDenBHejlvYXZn?= =?utf-8?B?bXlrVjJOWkR2akhWZXRNSjVGZDhxcEZNdFlLNmhJR293UlE4Z3QvWmNmU0hp?= =?utf-8?B?RjB1RzFxdGRNTUxkSThJaUU3UGNDQktIdXFlT1p2Tk05SmhxZHVCUi9Pb0J6?= =?utf-8?B?UUZvdTBFa3BsYWRsQWxxQ1BHUk41dDZDL3dZeDR2UU5jTUhqVjNZRDlpRmcx?= =?utf-8?B?TFN1YkVDMEZRKzhRZHh6YWQ0TVJaWSs3ZzZaU3FXWWo1SXRIT01kN04vRU9E?= =?utf-8?B?anU1K1VsbCtPK00rVGtvb1l0R1dNamh2ZFBQNzJselNpN0VBN1YveWhoN2FL?= =?utf-8?B?dEhsQ0QyUVVHU3pBcUxGL1drcThwdnpkNlkvT3pFejFreUdxT216UGxTaHFR?= =?utf-8?B?aXMxYVNlcXBmZUUyczhlQ0JPRXhqTFdGYlZibXRXT3cwQlVsWWRnYW1VYm00?= =?utf-8?B?eFk0WW9Ccjk5b0dZaWZIQkFyZDRaWHRnQVBhTXVDMHlLNVpOemJGNkN2OTA0?= =?utf-8?B?U1F4RmhIQlA0WVpQZmVZZW9sOXNaMnRhbWdTeWVCMUhTRVpUMXp1UjRTenVE?= =?utf-8?B?Y202T0I1ODNCL25qYXhHViswaXRqaGgxL0hRWkdsYTl3RGdKaGxESVBrVDJG?= =?utf-8?B?SEs1K2dackxGQ2l6UUhpeU00TjlEbmtqeUNzNzl6SXdHeGZkaHJxcCtEWmZm?= =?utf-8?B?dnd5cHc5aHYrZDlHckVGb2pDcWg2dFY3V2VmVktZdFcxT1Jqays5VHlMZzFW?= =?utf-8?B?QldROFFkTDlQVjQ4NlV4aytjSmxWYm9xam0rYk5PMVJmY212TEdxeEVZbjlu?= =?utf-8?B?OHdZNTM4OEZUTFovVEUvWHRPQnlEd01RWTkvZDJXQXg4VnRIRnB6MjlleHVT?= =?utf-8?B?dkduZS9uYjd6cDBPeHNYMGZWbEw4VWVmKzFhQ2JFVlcxZEptL21hM1dqcGZQ?= =?utf-8?B?S2pWSkhkQnZKNFdEamVrTDlqaFIycVhLSmpxK01mWmdsM2ltNVVNSFZyRFlq?= =?utf-8?B?SHJ3Q3pTSTA3aThhNUpzU0oxbHEydlFMVk1QQ0NrejVzNlNFZ2E1b2tQMGhK?= =?utf-8?B?cUxURms0UkptaWdxREdaWnl4QlhwU09GUUNYcUdRWTRmYUNOSHIxY2NpWjRO?= =?utf-8?B?RXB4M2FUczZWKzB6UUY3VVA2R0JJY0x5OUlhZzJ2ZnpVQmFnclpxRC9QejEy?= =?utf-8?B?UzAyZXpjZkVnSmFqNXI1YlFjek95YVJ3V1RZdGd5WnVya0lReWhJZ1lwd1I3?= =?utf-8?B?cWo5bCt5eUM3OXdycDlaWGRZWUtnejFnMWVGd0ZmS0Y1aVZad3Q5N21EdWhp?= =?utf-8?B?TGxuWWU3aDlJMEZIbTlrNlljNkR0WnF2VnRXVXVjcmhLQUVFMFVFYm9mWkYv?= =?utf-8?B?cmo5TG02NDMxQklCcVFhTXFic0pNM0xOMnFBU1dUQ3E4ejBhTnkwTlB6ZUJ6?= =?utf-8?B?Qkk5eGpnbktGd1YzTkhTWGgzT2FVZHI5SWxjN1MrRGhxSk9QYlBCZkEzc3Rs?= =?utf-8?B?MFZieXpNUG8vVGNJRUM4YmV1ajM5U05kcVNFckdnVVVob085eFVDMElUZ0g2?= =?utf-8?B?emR1K0Y3S25kNXJxOXd1YU5xVytVa1MzT0Vqcml4Q0t0d0tUU2U0QU1BUDZk?= =?utf-8?B?Y2liTzh4dFMzTnV5S1c5U2xQQVg2dVpadkFNZTMxNVgvZnJGNHg5NlRad2Fj?= =?utf-8?B?SnBseVkrcmtDYSs2RU9yK3ZXWThtVDJQZGdkdjFUL2sxbmMwRFp0dk1scmJW?= =?utf-8?B?dXAvN012UkpXSnZ6Mk5BbU5sRUlsS1UxN2FqL0oybytsY2REYXRZSk4xdlN5?= =?utf-8?B?QzN5NHZiMWlBbS96ZUdvTWdsc3VBSE8xaktQb011Wk1wVEQxYUJUaWVtTzJj?= =?utf-8?B?M2ttUWVVT2tibFJTWkhiT3daeE9UNE5XM0VxbGpWZVVEMjJ2b09Hb0JRSGFG?= =?utf-8?B?dVluRDh2MDhJNFpYa2VYNlNoR2x6RFdwRnFjVmd1S2NyM3F2UU5Gb1NVNmNh?= =?utf-8?B?VnRZS3J4L0RNOENoaXBzZVR5OXhaZ3MwRlhTSjFiK2F6aGlEVC9oRm1Bb0tF?= =?utf-8?Q?/maA=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea324ba9-39e6-4551-7256-08de39cd62ed X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:42.5824 (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: D/zTaA4J/7pWu8ry82jksiOVRMri+5hSZhB5OSXfmuf2wjuowvR+SUGHbpGuo+Vu8pMN49z/VTakOSj0Zu3Gfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 7a0d8405eb7feaedf4b19fd83bbeb5d24781bb7b..1930c3bce2bf33fdfbf4e8d9900= 2483a4565faed 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 Dec 14 06:37:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013060.outbound.protection.outlook.com [40.107.162.60]) (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 EA86531354C; Fri, 12 Dec 2025 22:26:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578400; cv=fail; b=okticBPGoemdsGMsh93K/mM35v7Cv/Pxa/hSWfd9TrIvkBlyq23O9vceUzNYmoyzijezBUagc9ya3kaJeWbUUiXUWoJTh39B4YGW9npyVzthKWdxGEjjs7KSDGQadYicS1N0+heCWB+3bVESfWLB8umruYMLMeJhTYvFhHj5Mv0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765578400; c=relaxed/simple; bh=grgZWDePbKHYJWs6lWhByzYgpraNSyzEXJBhc1iz1ug=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=i9VdSpG55WxIAeusI1YhJpYfJJaca7gohvuMKrC6gfRBx3qho9ZHtXNW2bh3l5uCTf4CaHj867IRoeVSaLh99Vbv4I+VvJ5HFEcqXvb7YiyCJVifW7u4KPVa1YBl7MAAI/F6DhK5koSoirXx62z6SVIyjTi5wVs7twsnAYYLPGs= 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=BcnCyThX; arc=fail smtp.client-ip=40.107.162.60 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="BcnCyThX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lUzgpbmQZM/Wf+L1JhdDt4fg4vFqUqtZpDk12na6CCOdMbo0b/F6rVMh1QIpr4j1X3a73okCB/ysx9zwUzficBmlV439QqaDq76Q91REEoZVgv6acpGiaMxGgHa0i2V/ZRtDvt0v8ALvBU533PhQOryr27sQyuylSmfU6ud02MkSVUnGIJ3BKf2Zffb0QGSWjJiomZx4SUVwAfQVohoxYTG/KpWbL+dv577oPl0i4CA17EOssE5XcFS2Aj2RZ5MUW5pVbQpdoU8Uq6j5g4NoE+0zKY4lg1CjQX6Emg+NOMcRxaYXi5lwWhqNN+k15MU8tzA09fgKVSKpv2M0sAullg== 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=yjg6gd+Z27nl4MszKT1BenNo2vwOSfKobBs5JAcLtVc=; b=eojDHvMry+mmZFgiSmQwvRL763BxZrfR3q5IR+8LNOB0K73nRqPc0NcLenXVr9qBLO8AtFrl9OUmL+VG7OMAmnB5i6yT0SAdp26bvYVG/XSFvaiOQV7fjjeCyl20lG6bSTnze6qNuhHYWOVsDf6FpEE/yaQQ5lmJmSKaUQ4BoIAOBb3HYPTEEmdk9pjF5NF042KXOdkSkexVRHavTLWaSrXisxrlLZ44jS5qZUpOpTpXlgkoWWywmwkMBZ0NfRM+iG2jV6tTVUuLik36zsMmr8pn5LHNbozeFsYTL0EGKORLgHHJ2/sjwupzVPQbrm60215DdeoDOr/cjE4NMM5c7Q== 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=yjg6gd+Z27nl4MszKT1BenNo2vwOSfKobBs5JAcLtVc=; b=BcnCyThXXs60xs7bs1ZzfuAkhFqIteorKGrV7fpxx8CnsP6fL4hF0nPHi09y7fzdd4QQrA5sLKjXnI0HGAL7qt/Dk0QFUKBFuMBZA8z/YY3B/ORtD6yjAG9giZax4xmMdFtmjip7I7R4E/eygOVq76u1Xt6yr9GWDVFNYyOgokQxwxvUHJwRqN0WrA7c8b4OUrihmbkuioxI1Pz4jFMCyaPyQGYnferUCNVlt69n4IuwDPnsFaqXpCYvYNFE4qqIWMv6islDg7zS+zTIpfeY1anyvcGdvCrM1GtmKiJ5fPiana3xNi8cTAnmUVQa/O/1YB5HDSBmoAHfq+fcIPn8NA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) by GV1PR04MB9053.eurprd04.prod.outlook.com (2603:10a6:150:1c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.12; Fri, 12 Dec 2025 22:25:46 +0000 Received: from DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196]) by DU2PR04MB8951.eurprd04.prod.outlook.com ([fe80::753c:468d:266:196%4]) with mapi id 15.20.9412.011; Fri, 12 Dec 2025 22:25:46 +0000 From: Frank Li Date: Fri, 12 Dec 2025 17:24:50 -0500 Subject: [PATCH 11/11] dmaengine: dw-edma: Remove struct dw_edma_chunk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251212-edma_ll-v1-11-fc863d9f5ca3@nxp.com> References: <20251212-edma_ll-v1-0-fc863d9f5ca3@nxp.com> In-Reply-To: <20251212-edma_ll-v1-0-fc863d9f5ca3@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=1765578298; l=9633; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=grgZWDePbKHYJWs6lWhByzYgpraNSyzEXJBhc1iz1ug=; b=Osa5lYF1WTBGxM+iJW5jF6x0Jodbd+Pcd0M6owWzcqD97tloqU15eI4bJaIWA3wjjpARUZfH3 0NsljCPckvsAzUOo7h1pGkwCaAdU9y76qsWKMTYGPr4c3flCvkpE3vg X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR20CA0025.namprd20.prod.outlook.com (2603:10b6:a03:1f4::38) To DU2PR04MB8951.eurprd04.prod.outlook.com (2603:10a6:10:2e2::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8951:EE_|GV1PR04MB9053:EE_ X-MS-Office365-Filtering-Correlation-Id: 06c36bc6-fda0-4f60-4e8d-08de39cd6550 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SlZVbUVrb2ZJTTE0ckd3akVRY2h0SXlnaVJkU1RRMGlwUVFYTXRyUkRHaERE?= =?utf-8?B?L3ZaV2oxTncxSE9nd3Izb1ZTUGR5cnpKNHd4WkNDdzJ6ZnR6ZlFlNGJia29x?= =?utf-8?B?Vnh4N3hpdTZLOER5RmNJcTBQaldqa3FBV2xJNTJiMjk5dmRKNzBSWGtLNlJv?= =?utf-8?B?cWUxTjJ1MmgyMGc4ZHBaK1NpbFVKLzVuNnJhUnZ3SkJlV2JkaGZlV3UzZFgw?= =?utf-8?B?dmQ5NWVkcmxhUkVkQWlyNzk0TVNyampicFZKbjEyYzJzaTVodTZsR2MvbHVj?= =?utf-8?B?dDZ1MzFPQmhYYUFQd1FTbHBmV1FpeFcrbEowNWZxTEdNMHk5YnJOZ2JwRE9j?= =?utf-8?B?UGNkSFlxa1Zpd0RMb2NZeWJXZ1YwR05sV1dvV1dsYk0waWdZQjhxRktYa25R?= =?utf-8?B?bTdzM256TkVKUHFSczM5VEo2cGc3VU5sNjBPVmF4czFRUUdMbDJkWEU2bkpL?= =?utf-8?B?ZzdURXVGNisrcmE3RlRyVmJkQ3gwR0tlNm1hcnNKQTN1Ti9lblJlY25nbGpu?= =?utf-8?B?bXQrTlFRckRwakxQQ2hjNG5CY0lKdXVpNStXeGJoNzgvNS9CenlYdk1NSjBK?= =?utf-8?B?cFFRaE05NzIzbE94S05BNjZjVlhISkxTSzZMajdNWnRJeWtoWTZhNlg2Mnpy?= =?utf-8?B?dm9rUkVnZWRMTWE3RDYxb09MRUplTXBTVDN2WWR0VWFuN01Jc0VaQ05IZHFM?= =?utf-8?B?NTM2Wk45a1FaODBTQTMxc0ZTNVViSGt6WTBqWWw2OVlLd2owaGJRSmFLSGxR?= =?utf-8?B?aWtNRjliVkVoc0ZncVBpenlmeU1jaFViQnliNHBFVHN0Qm5QSDBZZzRzeVQw?= =?utf-8?B?UjhtTUNRVkZUOFVzbVJWejZCUTVVRUgxdTVhaW9CZDgwWWIrbUc5Y3NYb3ly?= =?utf-8?B?MEJhS1dmbTFsZEJuVzhXSDEvWDJwRk12Z1U0S3BWMEJSNlM2SUlBRmlDWWMx?= =?utf-8?B?VWExYUdDbGtwT2hoTExIVG0vblNRZnp0ZVhLYXliaWpDS0x2NjBtS1paV3A0?= =?utf-8?B?SzVlcDRRWi9JZFhxeFlVVFR2blNibFJ2MjFUSHBzZzdKR0Jma2NoNzBrdTVl?= =?utf-8?B?MGZ4UDEwMWo0R3pUaTNtdC9jdjZsbzdacThJZUMwenQ1c1hFRmp5R085bDVn?= =?utf-8?B?RXNudEVvMGhSY2tIQS95MlNCR0UwekhyWWpNUVVJb09HUHV3dktZY0RWVGkv?= =?utf-8?B?TFBGcnNMdHMvSmZIVTNkcEoyTUc3eDBoM25yYi9iL2hrcisxN3VaZ3U2aWVV?= =?utf-8?B?WnNQdDVYVWZoSWxCa2hmRlVBcW9XZ1hOaTVuT05hRTFXY3BhK1dsZXJubWZi?= =?utf-8?B?Q2Q2Mi92dEpzREdzR3M2WnRrb2YrSE9LYmVXYk90b1lqMlRqVDZ3R0Q4cklZ?= =?utf-8?B?UlF3NzE1eDNkUTZnd3dDNWNocXlDTkJWWGl6anhpOGpnQjhpRWlxTzRoUnVh?= =?utf-8?B?YnAzL0ZuNUZqSSt1d0RFY2dNK0dQZnJUSWh1RUpPSlNYaFVmcmZ1SDNxa0Nl?= =?utf-8?B?UG5JTmVVZ2lSbCtldGFPQ3ZhM0wxRGFtQ2RKZS9LdU1Cby9GZlE1TGVpeW9P?= =?utf-8?B?aURjQm1nSm9xenkrYUY3Z2tSeHo1czZxd1N0RWdlTXZlU2tyYXZJbmY0dStu?= =?utf-8?B?NmJSQmYyeldhdkVSNjdMYjNhV2xUVGV3dndzTjFwMm9WYWdScGw2dGtxN09a?= =?utf-8?B?T2htT05BRzcxWWU5WFpjc1hNdnM1SUVUZFlSSnNDZ3FWaEwwSVlrNGZnQUZC?= =?utf-8?B?RXkxWG13eWxKdy8vN3poWnVyd3g1WXF6TWNkNnh2Y3NzS3JjTDRUNkV3bTZr?= =?utf-8?B?amJhN1F4OG42cHl0Sm53SHdRZWFhb3Y3Zko4UFNpTnhsQXJ0bVltT0F1dmtJ?= =?utf-8?B?L0FoeU03dDIydDNYZGRTTHBQa1JGMlQydld4MnVDRldSMEZqREtjaC9ZNzNy?= =?utf-8?B?UDV2QWVwWWhjaFpUcmhpeWtpNmw0MGwwczVwTkZ5Mkg1enVKSHBFMDZRemQz?= =?utf-8?B?NURBRzc2Tzdadk1aYkFiczRiNFBNR3JYRklkcUZTOFJweUE2UHI4UW1Dc3dR?= =?utf-8?B?THoybnJWT1ZIZmEwM0t6dytpS3htc2MySGs5dz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8951.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZThyMkRIM1VtaFcrRldXZ0pZZ0xVTEtoSnUyUlZxRVlOanlxL0NqRUMvcisx?= =?utf-8?B?WmlvaTJJem1mQWZnYW8zVXpheTYxUi93dGowb1JNYVBpSEhBeWY3NFB3RHdw?= =?utf-8?B?R1hLN1JXcnovRUw3emE3bTNIUWlzVWFweDJubnArUWcrQy9HZmFpU0Q4WXd6?= =?utf-8?B?VlZDNXpJWURLSkJ2a1BKOGJXb1Exd2JXVi9MeWxGc2k1L1Q1bDI2d0Uwei9h?= =?utf-8?B?ZlFGVWErQ1k2b0pXRVlYYW9ERlRoUjErVFF2UHRBUy85dkNNc2VlNmRSMmpn?= =?utf-8?B?MHV4UVVISzRQSHVIUjdjb2F6YWRTeU1oYU9QaCtTdzA1aDQ1V1lsYisxTHJR?= =?utf-8?B?aytkdGlub1JYV1JES0lBMEd6WERVMVI3OVJQNmdFcUlhU1VTbmhRT2tXT3li?= =?utf-8?B?ZmlrQXRhTEpYUFFBUVk5SGk4dzVUUHlKNUY4WTVXVGtscUdpeTFtNkFRaS84?= =?utf-8?B?dXp3ZUU4eHo3cllZdUxwalNlR09JcTY2TmFwNU1wbllMdlNURkd1bWpMM3o2?= =?utf-8?B?Wmh2bXpoWVc1S0tjOWY1RC9ZYlVjSGJjemJkdlJpcndqY3pqc3dnQWRGUlp5?= =?utf-8?B?RnZTKzhkUVRZbDNGZ1NsdXlWUnJmcTFzUzdneWxyaU92SzBLdkZaaE5weTNH?= =?utf-8?B?SlExMzdsTHZSRE56c3lYbFhrOGY1SWZvYXJqcHJuMzdwQkltT1VXaUxSbTBJ?= =?utf-8?B?SUF1VzJmV2NJZTcrUFFDem85UkdtVGVvZHIwaUN6NTltMVJQWVNaSklnWEk4?= =?utf-8?B?cXIxcEFIRHlkbTFqM2VteEtacWxzako2bW5saFJTbnlVYkg3K05vWUxTbjdi?= =?utf-8?B?eVVXZVRXbGtvVU1aaW5VZDJ3cURWbzY5cmQxMWRzcmVWTFVCMmt3K2FnODQx?= =?utf-8?B?L2dBcVRoQ2d0aEVoelQ2T1FjNENKUzlJZSt4UGRYL25WNGtwTzQ4dE4xRFlR?= =?utf-8?B?Z3dGbDMxZGlxSjI0eXN6L3VkYm5TT0xxdWZHRTd2MVRZbUVucWxzTVA3UDQv?= =?utf-8?B?VWQzdGkvU0hvaXNINVNVUjZ3TnQ5M0lScTV4OUEzcW8zRG9sUDN3NmR1TS96?= =?utf-8?B?Snd2alVjRHdwVWd6TjNwUlFyaHRpaHM1bUJDY29YSHBKODR5NnVDKzFHSGJs?= =?utf-8?B?Y2dKUkxsZms5WUkzN1BLYjlQRDk2SWRpREZpMjhPNFNGVzhUY1AreUtwMzlP?= =?utf-8?B?SG55bFUrVGxMcmI1REtYQ2xkSXp4RkxubUVWSFR5TjFPOHN0UFBia1M2Sm82?= =?utf-8?B?dSt2cE01bTJsWHZyYWl1eEFKN1hGaXI4akJjdWRuTjZTdThkb2lvdnlZWTJm?= =?utf-8?B?S2krbmw3bVFFYXlUcTIxOUpOZGpTajdFOUdqMktucThTbFo0RWxJYWtteEFK?= =?utf-8?B?RHdtZzV3VEd0cVRaU2lKaTNMN2JWR09HQ29UN2xLNDQrM2tsRmVFYU5oTWZ4?= =?utf-8?B?clNicG9uYUk5ZWs4b1B1d25VNE5LRnNjWXVzQ1BmYmhBa2gzampvMEVBWVlW?= =?utf-8?B?QWRRb01OcG05V2R2WFBGaFdXK2xxSVNsY0lzSlN6VERnY0lMVUVFVkdNUitC?= =?utf-8?B?ckNHZFlGaGVTdHM2bHUvUndXeW1LRkVGWlVsYzE3WVI0Mk1sVVFpZmNHTXVP?= =?utf-8?B?cjRsdFZEVHh0SkdtVTUyeWlPZzFpUllZdUJaZjNPSW5nNUZ0QkdzaW55WmJU?= =?utf-8?B?dUZwWlQrSmdTcnhrV1pKOFBzays2Y25aeG1iNEhWa0tsaUdOUENZMVIxNUJF?= =?utf-8?B?dU5sNkpiRTJEZUpmWVcvbm90U3lWTURVRWxJcDJPSmEwMW9QV1hiVVRESzZD?= =?utf-8?B?MkxaK0EwM0tlMm13RHNsNm1aYiszOVhQS1FsRnpNTzFDbHpKS0R5Q2pLZXNp?= =?utf-8?B?NkVuSTk5S3hzNVNOanNHaitkUEtGc0licS9pNjVvWmFPWDczT0N1NUpvYTRZ?= =?utf-8?B?aWJaTTFuZ21iVWJ2aE92U3F1NXgweHBEdEFtT3NjdnZOWWVEZXRrZE1sQjZN?= =?utf-8?B?MTljNnI0YVNpTkxUV2ZCMUFqOGh5WHlXelg4OEswRUk2Z0o2ZXlvNWdPMHZF?= =?utf-8?B?Vkh0bkViblBTdGxzcHNvZnA1YVVmbVo2YWh0dDczVFUrZ1o4dGVqcnR3ZXhC?= =?utf-8?Q?SxSs=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06c36bc6-fda0-4f60-4e8d-08de39cd6550 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 22:25:46.5376 (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: /jthNLHyNSz89ySV0WPcjVPODMQMXo7AgCPNoq4W8FOAJSLKeZ4zQVzgwBsP8Nv6JhbsopLu4EZN+IivtIw2oQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9053 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 --- drivers/dma/dw-edma/dw-edma-core.c | 130 ++++++++++++---------------------= ---- drivers/dma/dw-edma/dw-edma-core.h | 24 ++++--- 2 files changed, 57 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 9e65155fd93d69ddbc8235fad671fad4dc120979..6e7b7ee99aaf6e1c3e354d36ca0= 58813dc95b8dd 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; + residue =3D desc->alloc_sz; + + if (desc) { + 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); @@ -936,7 +890,7 @@ int dw_edma_probe(struct dw_edma_chip *chip) goto err_irq_free; =20 /* Turn debugfs on */ - dw_edma_core_debugfs_on(dw); + //dw_edma_core_debugfs_on(dw); =20 chip->dw =3D dw; =20 diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 1930c3bce2bf33fdfbf4e8d99002483a4565faed..ba83c42dee5224dccdf34cec648= 1e9404a607702 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