From nobody Sun Feb 8 18:24:07 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010045.outbound.protection.outlook.com [52.101.69.45]) (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 74A862E6CD3; Fri, 9 Jan 2026 20:13:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989635; cv=fail; b=n8I+w/0LvfFGb4KnEv0qlpBHRbfg6Gq13y/FueZ4KXiQmMLfwO77pDWG6Rf31R6dddnCpPNEKGIw4raOiLVs8bQ5e58bEwwgOggjK3ApJtx7ETqZGvgtWFFbsrcDpABEhNAWmjIFTLdR+yM36zUabgh2lELXqVo4mNYZAAf3IPQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989635; c=relaxed/simple; bh=4ZVUajLNstFx2H3uRPcCy+DiRplt4onopXgt5uMOmBE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=kWuGncNVMwc577x/6qtNMJy+2Xaa22kU6xymx+0jJebVt8w+PZBEh4Wz/mzbQ6R/NRdBvpilSfPKY1R8XojDiYq53xDwx583E8vLpeWOYLgPVn+1JntKUaXVKn7IeFwkDZ7OjRFBBwbKIKf/LbKdB/WZC9a1Cp5yrJVTeoXBWx0= 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=DYLmDw0s; arc=fail smtp.client-ip=52.101.69.45 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="DYLmDw0s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P56h6M1bE6KpFncBnzK9SK6usgsJKvzGIE7TCBK17XJOfhp4DTURTrIAqRaDr3T5t8ZKesStd73o/WRB0v5yfzzI6lTBLaFGHtZAcybG4zIlHf/h/M63uMIVOwB7HqraP6VL40sfRidk+Tjqh5xpybvROHvDkTSgSodkwXaZKp8Z4Bv78wfqVYMsHxcKSBoUhNVkCc8ZlM1RGXv95eZgkAfUHNFrBlFtq3gky2Th7tl4F2AmyolaTnscyQKYumEyUtb8vx+CakDfQBXHHbSbxhUZ8cTl2LGnDrARM7VpC5Da5uFNt3DkOsCOqLKHKQntQxfr5AFwKO382tTexfjL4w== 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=ebyJ6iiOfs17P0AfxB06Nwo3X1VoAbPdKBiUh2PhQTY=; b=kOILy0EaI3zpKwNVMsROCxCmapHA/Ss66sOTJpkpmLbRRj2y1tcOePfZVdUXyfrTgtWIa51q9GvG8DjH8g/dSv2jKjamGqRurDker5Rk4NBvVhJNXTozQOFtUDrw8p9TdxRNByBpQpDQ7d7+OYTCQ1R6IC6qKqD6kemkkirzS3V2Yy+QqxBdGb+peCUmCCyn9Qy0fH+XpCdgIOXBKZKlQaDSRR1BHbg9a6Zdy2xBnKWgd/Rp3wnFX8zzKUkjkvn4627HDYsbQFfIHAuMrJNZWHuFVw0aFBGvwTVfxWW5T4bOPkGf7RjWgVLiebK5B5qClspnYN5NoWoz9azb8620RA== 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=ebyJ6iiOfs17P0AfxB06Nwo3X1VoAbPdKBiUh2PhQTY=; b=DYLmDw0sdGyIdO07NrpXLa6ESJpRmivxBV48mSq07N+/6ns5bKlowG7og3pGj8/Lv/UVXQXhDwvcTTYmgrtODXrBLpF1UqWIlDRSNUnQMQMtEQVbVhcF60SWBeHi6LwXjnmjP3tUaG+Up4JPFlsW8BtCmV9FcOoR1iTw2iFQXbw/PMY4ODgO+eaHWXbTML17/eLQR7rN+Ih1WSR07nDeX0n5OTSgu9w4Gs4VEP5E8MMFa8b7Bvj3FOBdP6Pj38Z0335eRqVlZzeBrQNbh+HPYRm74BXRhUQViVi+y2uIGtCglVSfji2B/Hjl1ks0HHkqBm2ErHP/f+pJIt0y1zCMlA== 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 PAXPR04MB9106.eurprd04.prod.outlook.com (2603:10a6:102:227::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.5; Fri, 9 Jan 2026 20:13:51 +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.9478.004; Fri, 9 Jan 2026 20:13:51 +0000 From: Frank Li Date: Fri, 09 Jan 2026 15:13:25 -0500 Subject: [PATCH RFT 1/5] dmaengine: dw-edma: Add dw_edma_core_ll_cur_idx() to get completed link entry pos Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_dymatic-v1-1-9a98c9c98536@nxp.com> References: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> In-Reply-To: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , Manivannan Sadhasivam , =?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, Damien Le Moal , imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767989623; l=4348; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=4ZVUajLNstFx2H3uRPcCy+DiRplt4onopXgt5uMOmBE=; b=Asy/pkjoBW3Af1g+na56/i0tgc/u/SzUSDj5xGO6bYDx8Coq0A3C7xI8uw1w9ItFmMhFMgfH9 dv660R6mBNFBKgUtuXyfN/mP3txnKqjMEVbrXVRHzJMsZLq3rKs7vGU X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) 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_|PAXPR04MB9106:EE_ X-MS-Office365-Filtering-Correlation-Id: 346ac84f-bbc5-4bfc-746e-08de4fbb9b4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|19092799006|7416014|376014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cktmdFRnSTlXVXZLVHh3Y3p6Ykp6Uk5LUWo5NXlNWUJmTTdtZEk4SkJieVlQ?= =?utf-8?B?aXFKM2N6UHhOQTNPbnFIdzJBdWQvYWlWKzRXU0VyR1VBdHd4Q2lpVDFTUDJx?= =?utf-8?B?Uzcva2JvZDhSaHRnYnh2OVppc0R2UlhqMzlLK3FIS2pGTEk0eG5leUJsaFE1?= =?utf-8?B?ZmZQWnFYaDZvekRIMlhxcHNKZ3RaczhBWm1wODI5RTdNR2cwdi9ObmZnYWZ5?= =?utf-8?B?YzB1SkJETElydExlcjl5K0dZdU1wNkQwZGxjQ0Q0ZlNOMFl4aG9LYVIxd3lk?= =?utf-8?B?RDM4YlJ4MUpqem5LakxQbHZNZThSemhaWlZSN1hYWVhENEcxcmFqR2FtaXEy?= =?utf-8?B?K0pIcnNGT2M1ZEN5T2lLcWZIRVVQU0wxVUlQcEtMcUVVUGNoM2dPRlU0Uzl1?= =?utf-8?B?S3VlaDNNWStLWVNnMFAwaWdlTUJNTVhaZVFaUHFDUWNHWWIwWmwvVHZBbm1w?= =?utf-8?B?M2JtSG5wRzlHTWxIY2l6TVlzUEluNlpDbExVU1hkVlBRaHNkM2NrM0oycTZW?= =?utf-8?B?blV3UTFISW84OFVBV1dybm1mVHZ4a3lGVlNjZlA4OXl1cTAxUlJsWUk3VjA3?= =?utf-8?B?S0llbUQ3N2grc3F4Qng3YlB5YzhsbE5PeHZKYXFINHg4SHpSaUJJbEZodWxC?= =?utf-8?B?NWtqa05UREJVZHVHdXFwUlh2T2Y0eWxadTVrbjEzZzF1VnZyaWxyNlhUa2U0?= =?utf-8?B?RGtoT3JZNkhUWFNNWUZSNjkrN1NmaWxEU05HUEJ4ajMyMHc2UWtaMjdvcXFS?= =?utf-8?B?YmsxUTN1djA1aTc3UlpIMzFOcGdvQXVQTENkT3g1V050VndHbUZOeHJhTGhR?= =?utf-8?B?MlRtdm9UdUtDRjVvVVlYb0FSKzRqTXhVL1ZVWlE2Rk00V09mMXg1b1Z1ckdO?= =?utf-8?B?eUc1cjAycVNGdXRKOFVadndodGxHZ0V3bUdRQ1N1QzRsWFJYTndaQndrVTJS?= =?utf-8?B?WkNsOWhxQ2toZlpOSUVQQnlQTXd4RkkrV2xmSThKUTRWNnNvNlJST1FaQ1Zj?= =?utf-8?B?cUVLYW82TWVzMENReWxoQ2xqVzlmcmFSQmczS2d0cjE4R1JnQzlCNmMrQTZD?= =?utf-8?B?R01zQ0F1cEVuWTdkV0NKeFVrb1puRVIrTlh6SHdPNHRacUd6bDNhLzgwZFNE?= =?utf-8?B?UHNyOVd5Y2NTQTFmdjVBNTU5TGdRUmk5dGc0eTErVFF2NnppWGM1UWxoeXB6?= =?utf-8?B?TlVySDNjb1JnOVlFMjFraDlzUTJtQ0JPL0pKTVc0VVhHRmxyNCsyWkE0MldS?= =?utf-8?B?TGU3aUU1b0l0MDAydnR0SmtKalEzUGkvazFycG1lb2JjNGFLdVQzZGtROCtj?= =?utf-8?B?V1JiK0dFamNjb2RoVUlrWlk3b0ZTSlNHc0xFVE81dXEzMVBiOThtbUtNK3Nw?= =?utf-8?B?WHdPR1dqSklpZHVIVWJkeUtNeG1sOElOeFVpbnFCaERITkxFZUJtNWNUck02?= =?utf-8?B?S3RHYTN2bmwvTVJzK1Z0SFg1RHJxT09vb3NiQkljZEFpbmUxczhRanpMcitM?= =?utf-8?B?WGJUQXlpamFxejJScy90c3E5azU0cW5Od1h5QjU2VDVNREYwSXNSRWUrZUUx?= =?utf-8?B?RnN5MU1saGFPN2hCeURWb0ZzblFKeGVaVGsySHgrMnY4azdEL1VKUkxrd3Q0?= =?utf-8?B?am1lKzBuU0tpZ2tMa0g4SjdxWlM5WnJTSDVIY0lXVkdMZklGYUt2S0pndXNz?= =?utf-8?B?eExaKzIwTTZzd3FpbHFRSGxnV2o1bUo4NUhiNHFQNnVBd0RwUlpQdUIvR3Zl?= =?utf-8?B?bFRDOElnc3pCS3p2N1k3MktkWTQ2aVZCM05qSnpHTkJRTmZhbTBWTWs3Mm1N?= =?utf-8?B?ekNURFZHeEZIUDk4SGVnUmRnQ0VPdmZGUk5jUzBYYlZCcXQzQ3VMcUlubXhK?= =?utf-8?B?ZU9rTmNaMmlIZVRyUXduOWlIWS9xeWdIa3lsRkdOZHJJMHBWbDN4NjhmZjFv?= =?utf-8?B?aVVuM0RvaElSYzZpY3NLQjQxQWtBVTR5TnFuZUNwSlp2T2hoN1BUUW9nNHQv?= =?utf-8?B?RXZRdmROR3lMWE9IL2xlaWVROWdPTm5kZUdUcVBsbmNBcGlQUytVR0JoUktQ?= =?utf-8?B?YUdSd0ZlVWlVUTJVd1pLcS9tV1hhRXpPMSs3dz09?= 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)(52116014)(19092799006)(7416014)(376014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aVVTUENDUlI1Ungza3FEeXBRK1lTZWdYMUZ3S3gvQnpCcUlHRmgxUmdyVXRF?= =?utf-8?B?VHNLRGpibWhNSmxHanRvbDIvZjIxUWdNUnJScXZEdTlYaXhkUVBuNWU5Um44?= =?utf-8?B?dGpEQTFmSTFMaVNySkxCcjJUeEsrTEJ5SmNSWFlJdW1PTTYzM1lZS2tpM01z?= =?utf-8?B?WTNiUVhoQ2ZJUW1TbG1pMFUzTk9tZGlMU04ybmVhTlQzYXVRRkwxeDZRN3Z5?= =?utf-8?B?T3ZqMUR1MlVzbDFPYXdNTEhlRVpCVytiR3pWRVN5elN3UU43MlRaQ3JFRHJk?= =?utf-8?B?a2RWVHdzOTFYUEFGY3JiVkNJSHQrSFdvRm00VmxGNmNJUnFqWjRTQWZLWVZU?= =?utf-8?B?SWEvZUxzcFQ2SXZHQjlMYVlXMkt3R2dPL3VTS012RzgwWUVYZ21TT0hXelpp?= =?utf-8?B?WjZ5UVpJbkRPdXgzUDB4eU9ObGRvcHpsTndmVnAzeFVmUFZGMVRtcTRnL0ZO?= =?utf-8?B?WlpTZXRTa3I3S1NPV00xQmRLYlh0M0Y3dCtsN1ZiaHIxWHJxRmZHaERKTTcy?= =?utf-8?B?TGVhb1k4Y3N4SG1Od09kVE9QU21vNGNqbWpHYkhuWGkxK0hXenF3dFlUWml0?= =?utf-8?B?bkNQem9hTTcrcHVKd0JyUlM3anZaN09qRXhrK1NicDdSbDd6Z3ViRlRtVi8y?= =?utf-8?B?UUFkMXZJdDEwWGNQWC9UUXVSeTdlYnRiTXFHdDc2bDZkYVQ0OHVGV2FSMVl1?= =?utf-8?B?dU1lYWo5YjBuMHRZUm01eUFBZVVWZ3U5SE9JY0tndGlldHRNU2ZLdjlWbWhO?= =?utf-8?B?c3NpdUNzYytVZ1Jzb3dsWitabUFhT20rQWVnQ1ZjUkc5RnYzSFowQ0w3TURE?= =?utf-8?B?UU0vSTJHMHd2SnNMUzV6WUI5emNVSERLL3BnM1IvSXM4eFZ3VnFKT0ZyM3p4?= =?utf-8?B?OU9QREU2SmVMWVpITkhJV0ZSd3dzQmgwdHByN29QUFhjcXF6bmorUkNZa1JT?= =?utf-8?B?eTF1OE1SMUYzbkJnUzZlM2dIaEtXR3J4a3lJNXprK1BTbFpJU1A2R25QNTkz?= =?utf-8?B?QkFHTTBweUJZVmlTa1BsaURHekFqOHVKcU4vb2Yyak9MWURoRU5oVi9PdlJL?= =?utf-8?B?V2EvUTJBcjZ2MGt4Nm1JZE1IdkFRUER0eDBxeStQeTJmMDUyY2J6Y1ZuUXFs?= =?utf-8?B?NlI2WllBc3RWVWI1dTNsQUI2SFkrTloxOWxHc2RXU3cwRHpQYS83bFVGTG5i?= =?utf-8?B?VWp5Vy8wbHZVbFhIQjRwWEJMK014eU9zYURFaXFmSkNSYlJ5MDE0MXVCL1dK?= =?utf-8?B?STM5K2k0QmdLOVRhNWtadlUvVDV3QWlBUHBTRFArNzdmM015RldSVVNTNHY2?= =?utf-8?B?UFJ6c3RKMkdQSGlRNXYvckxLN1JxdEpYWEFyKzlQS3B3cUVWcDlCTGtFNmRH?= =?utf-8?B?dmlMNUpQYlpSUE1DckI1aG9kYVk1eFhUWFVwanp3YUI5TzgxTHZKUTJSK3c0?= =?utf-8?B?SkdoN1R4SWtIdFhIRG5SY1VIV2t5Ny9OYVkrQTJRbEdWd2JGOEYzQlFEdFFK?= =?utf-8?B?bE9tdTBGRTdCR2x2V3pKa1pha2IyRjQ2S2FvMkw0bHlRd2lWWFdoaXQ5d2Vl?= =?utf-8?B?aFdzZUp3YW9uTzZLbjRJeGFNTW5ya0FNTGlZUGZpZHArdE0wTm9MY1ROQVhz?= =?utf-8?B?U0Y0N241MGV1Z1ZPODZ5SytnNE5YTlh4SlZDTndpN3hFOWxRMzVoMTlBSEww?= =?utf-8?B?UzhITWVySlRKVG5uSnFlWkFUTHFMVFB2N1NxWVBqeXJNYmFQUFltL05SNHNt?= =?utf-8?B?T3FWUHRlR2tWTjNjM1JyMlZLeW8rTWtvNUtTakVJTHVua1lSNWhweFNnV0tx?= =?utf-8?B?OFRDaXJOTjZCQnlxSzNnelI1T3FkYnhFWDV2aU5mUVJsMGxsenRqU1ZoMFhC?= =?utf-8?B?UjJXNzI1b0hEV1pQRnNIYXVaa0ljeEwvSjdnb3dOeVUvN3BZYnZTVFRDS3ll?= =?utf-8?B?b0RvTE13ak9xUjhuWVIyY3pIM2pwZDl3bnJ3QWlOdi9aUkhBcGFSakZ5TmlQ?= =?utf-8?B?eWNPcEVMWm5JVUVnOTRMT1hSckpScUpHRlQrbEhVQUJBNXREcjFSNWswblNr?= =?utf-8?B?Q0w1bE1HTU9tdnVtZW5hQlNnODU3RlhjOEVsMW8zdkRldXlIQ1FqYWJ2M215?= =?utf-8?B?ZWIzMjk0bHBTeDJ6WEhUWjlpaHBOQ25CVnpTQTBjd1c3eDF6Mml1V0lWWjFJ?= =?utf-8?B?S3hOR2duL2UvWCtVSHNZckMvUjhFK1d4cG1SelNjTFphem1nUnFxTFVhZm5H?= =?utf-8?B?bEdscGJ4U1NYam5hbU5ieUtoS2NQalFtbGhPR2p1akVrUUFaTHhTYXFmTWZk?= =?utf-8?Q?kshareBZgXMN5W+XdU?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 346ac84f-bbc5-4bfc-746e-08de4fbb9b4a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 20:13:51.7036 (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: GvPttzHkels1SX2xGs92Gs1UkZOodbQBIAM+WAK6F5Uoj/B760gr/ut1m3IFaAl9f7a2R7ANUQzIdV58dcOqDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9106 Add dw_edma_core_ll_cur_idx() to get completed DMA link entry position to prepare support dymatic add DMA request during DMA running. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.h | 10 ++++++++++ drivers/dma/dw-edma/dw-edma-v0-core.c | 17 +++++++++++++++++ drivers/dma/dw-edma/dw-hdma-v0-core.c | 17 +++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 31039eb85079cbbd38a90d249091113ad646c6f9..d68c4592c6177e4fe2a2ae8a645= bb065279ac45d 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -123,6 +123,7 @@ struct dw_edma_core_ops { 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); + int (*ll_cur_idx)(struct dw_edma_chan *chan); void (*ch_doorbell)(struct dw_edma_chan *chan); void (*ch_enable)(struct dw_edma_chan *chan); void (*ch_config)(struct dw_edma_chan *chan); @@ -164,6 +165,15 @@ struct dw_edma_chan *dchan2dw_edma_chan(struct dma_cha= n *dchan) return vc2dw_edma_chan(to_virt_chan(dchan)); } =20 +/* + * Get current DMA running idx. + * < 0 means channel have not initialized or hardware reset by PCI link lo= st + */ +static inline int dw_edma_core_ll_cur_idx(struct dw_edma_chan *chan) +{ + return chan->dw->core->ll_cur_idx(chan); +} + static inline u64 dw_edma_core_get_ll_paddr(struct dw_edma_chan *chan) { if (chan->dir =3D=3D EDMA_DIR_WRITE) diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index 7b4591f984ad8b6f9909db16775368ff471db2b8..edc71a4dbc798386508e15f44e8= 5c23e7e50f2ee 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -504,6 +504,22 @@ static void dw_edma_v0_core_ch_doorbell(struct dw_edma= _chan *chan) FIELD_PREP(EDMA_V0_DOORBELL_CH_MASK, chan->id)); } =20 +static int dw_edma_v0_core_ll_cur_idx(struct dw_edma_chan *chan) +{ + u64 paddr; + u32 val; + + /* LL region never cross 4G memory boundary, so only check low 32bit */ + val =3D GET_CH_32(chan->dw, chan->dir, chan->id, llp.lsb); + paddr =3D dw_edma_core_get_ll_paddr(chan); + + /* DMA have not setup or DMA engine reset because PCIe link lost */ + if (!val) + return -EINVAL; + + return (val - (paddr & 0xFFFFFFFF)) / EDMA_LL_SZ; +} + /* eDMA debugfs callbacks */ static void dw_edma_v0_core_debugfs_on(struct dw_edma *dw) { @@ -517,6 +533,7 @@ static const struct dw_edma_core_ops dw_edma_v0_core = =3D { .handle_int =3D dw_edma_v0_core_handle_int, .ll_data =3D dw_edma_v0_core_ll_data, .ll_link =3D dw_edma_v0_core_ll_link, + .ll_cur_idx =3D dw_edma_v0_core_ll_cur_idx, .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, diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw= -hdma-v0-core.c index 7f9fe3a6edd94583fd09c80a8d79527ed6383a8c..8e5bdcd208b5c2553ac45f744a4= c678932ea5a03 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c @@ -285,6 +285,22 @@ static void dw_hdma_v0_core_ch_doorbell(struct dw_edma= _chan *chan) SET_CH_32(dw, chan->dir, chan->id, doorbell, HDMA_V0_DOORBELL_START); } =20 +static int dw_hdma_v0_core_ll_cur_idx(struct dw_edma_chan *chan) +{ + u64 paddr; + u32 val; + + /* LL region never cross 4G memory boundary, so only check low 32bit */ + val =3D GET_CH_32(chan->dw, chan->dir, chan->id, llp.lsb); + paddr =3D dw_edma_core_get_ll_paddr(chan); + + /* DMA have not setup or DMA engine reset because PCIe link lost */ + if (!val) + return -EINVAL; + + return (val - (paddr & 0xFFFFFFFF)) / EDMA_LL_SZ; +} + /* HDMA debugfs callbacks */ static void dw_hdma_v0_core_debugfs_on(struct dw_edma *dw) { @@ -298,6 +314,7 @@ static const struct dw_edma_core_ops dw_hdma_v0_core = =3D { .handle_int =3D dw_hdma_v0_core_handle_int, .ll_data =3D dw_hdma_v0_core_ll_data, .ll_link =3D dw_hdma_v0_core_ll_link, + .ll_cur_idx =3D dw_hdma_v0_core_ll_cur_idx, .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, --=20 2.34.1 From nobody Sun Feb 8 18:24:07 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013030.outbound.protection.outlook.com [40.107.159.30]) (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 6E97C32D0E1; Fri, 9 Jan 2026 20:13:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989646; cv=fail; b=ogObU3raS4vtcSfD8bUYSUlF4GBCW+KRuI0ja6oDYn3BELGENQoLQgmNVw3R1+9Zs7movgkdMAlAec3B5yiN7DKYf6FZt+kQcLegOAZW5ORFWL9b87Hb6rv/fHfXE+E+j4fbwiml3PNDrtkjsPOfQ2XFYvgiDcNIUlkYvmY1uAc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989646; c=relaxed/simple; bh=0uEb+CeRLmrIFPUmHMoyPwTkiP4swuUKx5QDw2GaOyk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=UlywDBxi8fEZfHS5xeAYQcZWviz293y6ahqjhwvBI9k3ATnKOTA+eMeq+X5QUj4tbBrbmEDdagokn4km806VvHyZML2k5RG519f6piwctodVTg72AALJgeYtHcefStSMmvewlKP4gU/pPPmLl2w1sUOBw76rej7xBTSatZJzD7A= 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=hrpyU3jh; arc=fail smtp.client-ip=40.107.159.30 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="hrpyU3jh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rufvx7RcvBbU8KBVoN8rVPcy4F7HXmzBVG7ELQLI0/xleW8+mGdOa/p44ncQpXcnkv7ISgAyyYPigxqP7Idg31KFwwi1DMcfKLLIEjRC38p1o/Zu9YASj/ckpNX4L/TnD9rMcF4aQwHh+yZJSqBhGBp0QkCm2o8EA0n+OqyS5ATLS1ZHkkpon5Nh/4fsy2nWZT+voyuIBBEmVVMalK6Od36mgA3OIEd7Q97613ekMuujP6uCwvYaAe6gy1kFmDpqlEj1zt4VxogWbv4wLlVNs+cVt9yUuRH9FT7BV2hqlWNklOIvaZkRTAM4ntoyEosxLE4xHCl4Q+sMAQu4WNDA0w== 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=BguQmwcbMHvhaP7ijFgPsWVqt1YtZ25yA6ByQhIwqbE=; b=CRgZjmHbvyXywoxBTSiZO7XcU2qEznyTOlAbJHnS7O8XaXQ6+58Yd+inL+qLVHkV4zz92alqfsdLH25jvUhGc8fhFBPnUMbofSTmsgrJtK7BUyWKuBHpID72sj3+JqDbDBMJwwOU4r97Nz2dctaxlS4q/K8K5Wk5yTytSp5R2z9h/oPMrrJCjrwS0QQYAUcXVHb4LpwJbFJwvzYsy3N0oZf1z9FP9n65/3z0+wKhfVw1djekH0qqKz5p+/bZHkpcSYZ34IAC86RndKQJdmHBekkhlENqGhbJceB5I7pvf9idhwW2mLKy94WwP7XbIvp0ZV7iVtzzxTVoAnR0EK5Vdg== 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=BguQmwcbMHvhaP7ijFgPsWVqt1YtZ25yA6ByQhIwqbE=; b=hrpyU3jh+jYnZQWG4eF9UdvzcqXNsq0hyGH9LfbQYR1scN0E/Xov6QNXTeIu2EZIHm7Y/RiprPum5USIu9Ke/zWGY4ooXxpBQiv8CMjfMb5wC+/Kvr4lL9KyQjlLVYRhQlMGQn9GcWX8PaOvzj7fA9xmrV5SgKMRwTYLRYGo2xCn9L/QbmG/UKAdYtTlQnJNq7SIydIHgzg/cfYAmaNy6YSzRpJRRybhZQowxVaNZ15j+FeStW76m2VDdpnNggjVaT467gtStuNJxHv/eycJMuU+a2zNcJGLuHIRb+vubCMWIOquuoM3or7WNKV8328CbNHEIOVHkhN6Yev5ed2VbQ== 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 PAXPR04MB9106.eurprd04.prod.outlook.com (2603:10a6:102:227::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.5; Fri, 9 Jan 2026 20:13:55 +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.9478.004; Fri, 9 Jan 2026 20:13:55 +0000 From: Frank Li Date: Fri, 09 Jan 2026 15:13:26 -0500 Subject: [PATCH RFT 2/5] dmaengine: dw-edma: Move dw_hdma_set_callback_result() up Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_dymatic-v1-2-9a98c9c98536@nxp.com> References: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> In-Reply-To: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , Manivannan Sadhasivam , =?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, Damien Le Moal , imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767989623; l=2265; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=0uEb+CeRLmrIFPUmHMoyPwTkiP4swuUKx5QDw2GaOyk=; b=CzYjdZMTrWkFQs+v2j2CrZkCI2u+S9ZC4MlE+s+6zbiIieIF9m5MCh8w16cdUhTx8qhAGZGwa xZb16E+AqAUDzzgB2hD2r51+poR8AcRNLjRbymx/EN2EPT9Jjndn0vP X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) 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_|PAXPR04MB9106:EE_ X-MS-Office365-Filtering-Correlation-Id: 61839085-0d07-4f1f-75c0-08de4fbb9db6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|19092799006|7416014|376014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cWlXemRyUTY3a2tFeklrZThXUGx6VWFxKzZBdjAwdE9Ga2Y4QVdWbVNuVkNv?= =?utf-8?B?NC9QbFZNdFpKQjE5a3I2MzlhMWUvTkpJZmFKUmcwbmthZjRsWXl6dURZY3V4?= =?utf-8?B?ZUJrZ0xSZEY3TFhBT3I2Mm5yNnFXV056QkQ4WW9pdGVRUHlrbXlnWnRwUGIv?= =?utf-8?B?d3hUalhBSHZGMnAwYnQ1QmwwMkI2QkZTNlY5VmZFWnJDUElaN3M0YUlsSDVv?= =?utf-8?B?dUtmRWNraFJkNnkrbk9FUzdFUTY2NmkwRW9KT0R1STJDbUsvM0Iyd05qbE9a?= =?utf-8?B?a0Q3WmR5Zjdvb1BTazBrcm54UDl0ZW9SUE5nejJabnlNaitlRzlSbFh6SVJs?= =?utf-8?B?d0RTNnJocUJIdHRLaVlvUmQza3pyUUxOSDRXTm1WZ3NnU3FlSmpiTTl1MjRx?= =?utf-8?B?bTI1SjNHeVZtdnc5S3hiTnZUeDdQQkJORFo3Z0pGbVkycWJKMTFrcmlPRkJ0?= =?utf-8?B?VDRRbjUyM0VJaVRGTHFVUHRDeVFESG5vdU1UU0VMYnAyeG9rQzU2NmUvb2dn?= =?utf-8?B?T3NUMGxMaFNaZWhwVUxScGdVaXBLMkpkWnJNSWpibk9pOHNrc0tTU2FrREJz?= =?utf-8?B?U1k4VUJqRlVXdVhLc3BIYUhYRUVucGY0YUxmcUIvMGlaTVNlRjNQbTlZQzMw?= =?utf-8?B?NEVkYWp4QUxqdGY3RUxvNFAvdFI0OWtzRE9zbzNFUlZVTDFtMkJUek5Tb2Uy?= =?utf-8?B?TU1LV1BLQXFBZGJpQTZ4VGwvUnRDSGQwU0FHYnBYdis2OFVHSll5ZHBHYU5i?= =?utf-8?B?UFBSV1k0TGxjRVErcGdtSElBZ2VKTXV6Vld5UEN3N3hOSlFxRklqQWtLR2o1?= =?utf-8?B?ZFdTRlBVNUlJSlArQVVQSXNtVkhIKzlZM1U5bW1LTTNOblg3N043cHl5bytu?= =?utf-8?B?bGovVFNNUHlpMGdTMUdUeXVvamVtUi9MTmwxUjFCVlNTTWtMaDlOVytqRE9m?= =?utf-8?B?UjFSUHhnM1Jud1dMR08zaDZMSW9lMk9OUFovQU90a2QxbzhxMDYwUzFBUXU4?= =?utf-8?B?bzZkd3IzSjltNzRmS2tnWWxIV0w5Nm42aFhRTHp0c0syWWVOOUkrZ0R3WUhI?= =?utf-8?B?VjVHWEN4NTZFTE9QWnJuKzB1S21wM3NSbnkwQmx0SThubzA5RGVaalYwWnhR?= =?utf-8?B?UDExQm9iSDBRWHdnMEJHUWpQYlJQNnNld0NmWjkvcmlFdzhuRXIyamZUMEF4?= =?utf-8?B?emplVm9KTU1yeTY5TmxscEt0cFJiNlFJMm9pSjZnZ3lXSjJGMmFxZm9sUmVs?= =?utf-8?B?d25CTGc2dGxxRWNZKytTODBrcld0N3JMUndUWnFXTC91dkVyMDZ1WEd5Yk0z?= =?utf-8?B?T3RLSnFmWEZtWGw3UThyWlNkTUEwWWZOMHZ3cnY4OExlbkNXRHRoWmVmbjU5?= =?utf-8?B?ajV0MVIxRTV0em9wZnlIOGNYRWJEYVJRUHVmTklycWYralpyWFdIUHVYTmtk?= =?utf-8?B?YzJFaE5ZNks3aU14WHVYQUJtaVpudk1VcC9FZnVRVk1ucGs3TVhIaWczUUZm?= =?utf-8?B?VWVUZWtoR2Y4L2hvT2JvVjZsWnlJbXhJdnFab2lBakR0a0JRcEVSQmwxam5x?= =?utf-8?B?bi9yVEVSY0pQYlZTSXpsZTJ0bmZYeVV0cFlVV1R1Vjc2TG9ZZG9HaVBXZG9x?= =?utf-8?B?TklaRTJ6Z1hOdzJiNzQ1Vzc4QjNkSHE5djZueG45MzM5MGUzZmlhRVJLdGZK?= =?utf-8?B?blVibWxiTUJMOWZrK3FIZ3NXMVN6YkFDRExLOHFjM1F1ZmpsTWV4clQ1WXdN?= =?utf-8?B?aTY0Vldjakk5Nm0wd2pobjliZWcwckVVQnMvek1URzlGaEU1Wnc1NTNuVktp?= =?utf-8?B?MzZzQ1BEMlVzdVFVUStVV2kxUkJURDVrc213Zm1vRGJ6RUEzbVpWSXNZQ1lW?= =?utf-8?B?ZnoyTXp3SnloYTZoL3FMOTArQTM1c1A3M2lORTNaMGlrenZla0U3R0kzWEg0?= =?utf-8?B?eHBCT3h1eTN3YWladmdlSnFqR2JWWGhWRWY0TjJTaDFOU0c5cklsV2dhSTdl?= =?utf-8?B?dXh4QTN3K3dPby9MdSs0bnhrb1BDcHpLWG15VnNXRU1HaWdkUEZOMy9LRDFF?= =?utf-8?B?OUE5RDVHaUNvSjl2T0RCK0g1RjF6MUVxTzkxZz09?= 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)(52116014)(19092799006)(7416014)(376014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NitRNlRQdGszMm16dGNhS1pJNkRJQjY3MWdGZEpnR21tUlgwMDVtb3FLM3Fr?= =?utf-8?B?SGJQRDU2WDdIQklEUHRSQ2dDVjdsVWdBL3Vwb2xOM3RkYjgrOEFGQWxKenk3?= =?utf-8?B?Znk5K3NqUy9qdUloMExkNXZ6d2d2dnp5eXVpRHNZNExaakJEVnRkL2lFZkZP?= =?utf-8?B?d2hoaFdVMmZWcGg0aWU0Q0ZxQ2JRQVFRU2h3RzViVFV5cGdyZ1Naemo4YXBS?= =?utf-8?B?eENFV2haeW9HN294dDE3dzlCM0xQVGE2KzIxSHNFQ3Q3QkFadW1IZVVYKzZB?= =?utf-8?B?MXI4ajVjMllIZTlZQUxiWDJZWE5jdzVjMU9DeDRtR2pNb0VHaE01N2l6eUZY?= =?utf-8?B?RTFDR0JvbXIvMTdzT015Y0lMaXV6NVRoZ3cxdU9wOWZsNDdPTGFZWW8yZFdX?= =?utf-8?B?OTllWHFiaERpUGRuVVhRZWhjNlVCcCtYejlEVmJ1eEM5Z3AyUG9iNjU4cHdm?= =?utf-8?B?SzdiUjM0aVpVb2U3WnNWU05COFdJVDZrdC94OEJjWDQzVEdzY3FIaHFwL3pL?= =?utf-8?B?MitYVzU4RHFHRWNYNmw1N1JLQXdoeStaZWZkTWc0bk9rUlZVR0JsR29DNHhE?= =?utf-8?B?TnFkMTEzalNwMHRtSXdZeCtzV3ZpZjMrQmltRERZaDRLK1hRTTA4eXBWRDlE?= =?utf-8?B?UUV1VEZGQ05GcVhhTk5KRmhSbXNHTTlmRzFleGFtNFNwcVhtcXVhZU4vVnc4?= =?utf-8?B?VmU4OFBnRHg4endQa2VSQ05IdUgrMk9YMW9KWEpNcm1OYllmUUsweDVDV1Rr?= =?utf-8?B?RUtHQ0Y1bVFYVzJNQUlmV1lVS2xtN3hDN25VaW9EQndEQzd5U1krblFsUWs5?= =?utf-8?B?bDM0NkdJSlB2UmxDczFUZ0UvUjZUQnZLRU81TmpGekU5anQvVTl1dG5UQ2Rs?= =?utf-8?B?Y3pvSFBxS3A4eUZUMGxaek5LeHZHQkpnTkpZN2RFZG8vZVdBY3I2ckcyOFll?= =?utf-8?B?OEpzNnd2OHAwK2ZaSXBwM3dRazNmMXFqb2Zsc3kwN3ZFcUYwRG52NW11K3U5?= =?utf-8?B?cFVWWENJMXU5QXJXSEdKVSthSkFWcXVlSm42YVBIU3dUU1lwUEl3MnpJQTZT?= =?utf-8?B?R1dyUnpkUkMwQkJNYjZ6TzBqTUg4N3ZqWWlBVm9RNXJka1ZJcCtiYnNjU2Nz?= =?utf-8?B?VjJMTVNLRXdhdnJwRlRUbU80dW5ScnNUcjdtenlkOWdmZ2w3eVh4WW5hbUgr?= =?utf-8?B?RzEzS1NvTk5BanpYVzhRVWE2NHZyNTBOS1A5SjVOM2trNWpQMGl4WkpmUFVL?= =?utf-8?B?ejZiT3V2TTQzSDlwMkppd0F1aUREU3dBN1pvcmFoc2pxRGJiTytYRCt5MDBS?= =?utf-8?B?S0lqWjltcm5LT0FCbDdkaFhTcEF4ZXpMQ0NGY1Iwc0F0TGd6VFlVWmNpZzFL?= =?utf-8?B?bmd4RnN0TVBybGJORVJXZEVMUmxwSUFpNmJYdGFtRkYzVlhWV0ZQalJ0UnZt?= =?utf-8?B?US9ydVo1eXI5WGdSeGhBeWtISUVTSzBNb01BZE15RThwemhYdWJJUkVndGEw?= =?utf-8?B?dTYxNm5EekNXUzFySUV1Qy9EWXdFTmxnTkF5c1V0QW4yMGs4bkRFUXoyTVRn?= =?utf-8?B?ZmxNQy9YNklEYnh5ZGQ0TjZueFZoR1BCdDRVYlZOeEI2aXFMS3pvRFgzazN1?= =?utf-8?B?WkNQUVRYZUNDTTBXUjN1K3dsbmdQSzNiR3NCUUhsdFpsdHNoMEN3c2lxT1Q4?= =?utf-8?B?TGlpRWhMemxPNzh6dnBPM2h0UWRKcWVwaHk0QWlSMUdNcHp6c0pWYmM2eVNq?= =?utf-8?B?U0dSZkhnTGg5TnVwN0F1eHB0VXJMOWF5citlcWpUYkd3SEoxNDBKWUdHb1M3?= =?utf-8?B?OXZtWGJuYURJaDgyQUFWQWRrd0VMS2pGU1BidEFwanpkQ1lJNjlOc2dUbUZM?= =?utf-8?B?SEFUME91Y0pGOE55QW9MMmo0UkVWLzJteE93WHBpUTQ0T3BLYitkNHpMWDQ2?= =?utf-8?B?Rk1JcmpDKys5T09IdVdvcjBLa041d2NmbzFLQ2VQMlVVdnVJUWxiQSswV2t0?= =?utf-8?B?aThXam1WUDZ0MzhaMkJkUmtqbFZoS3BKWHgxSHM4Y1dsa0UyaCswWDJDcTZa?= =?utf-8?B?ZXZpd2ZEdVhUWUtxK3h3Nkg2c3U2VGdXMFhoc2duQXp5MlBFRlBuTDA3eDIy?= =?utf-8?B?NkUwekNkdFJhRVhaK1hicVdvejdDem45azJTdUlYNzFza1JMM3hPNmk4aVow?= =?utf-8?B?R3J2WWZNaUF0K0JZSjZwUm96cXUxNFRwRzlrYjRRNFlZNU16aEdRWjdPNjJ5?= =?utf-8?B?NDhYQTJHbzRtUnRlbURxT2RGYWlENC9OdjRaU21FZGtjby9DYVFoeWVNN01h?= =?utf-8?Q?RB+VYkzF31giQHBZcF?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61839085-0d07-4f1f-75c0-08de4fbb9db6 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 20:13:55.8350 (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: lLDW672nDuXSsm0demacEZx+2XC+t7ZVL9ZcGkCJ6I+L2iYHIycMQxiDLEKzCtlF5O/yGD5INbNPoyR8L6VNpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9106 Move dw_hdma_set_callback_result() before dw_edma_device_tx_status() to avoid forward declear. No functional change. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 50 +++++++++++++++++++---------------= ---- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 1c8aef5e03b0e2c93aec9f1cb0588b4e8b1508d9..9fb7ae4001207b2ccb058d6efa9= 856dded379b8f 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -106,6 +106,31 @@ static int dw_edma_start_transfer(struct dw_edma_chan = *chan) return 1; } =20 +static void dw_hdma_set_callback_result(struct virt_dma_desc *vd, + enum dmaengine_tx_result result) +{ + u32 residue =3D 0; + struct dw_edma_desc *desc; + struct dmaengine_result *res; + + if (!vd->tx.callback_result) + return; + + desc =3D vd2dw_edma_desc(vd); + if (desc) { + residue =3D desc->alloc_sz; + + if (result =3D=3D DMA_TRANS_NOERROR) + residue -=3D desc->burst[desc->start_burst - 1].xfer_sz; + else if (desc->done_burst) + residue -=3D desc->burst[desc->done_burst - 1].xfer_sz; + } + + res =3D &vd->tx_result; + res->result =3D result; + res->residue =3D residue; +} + static void dw_edma_device_caps(struct dma_chan *dchan, struct dma_slave_caps *caps) { @@ -488,31 +513,6 @@ dw_edma_device_prep_interleaved_dma(struct dma_chan *d= chan, return dw_edma_device_transfer(&xfer, dw_edma_device_get_config(dchan, NU= LL)); } =20 -static void dw_hdma_set_callback_result(struct virt_dma_desc *vd, - enum dmaengine_tx_result result) -{ - u32 residue =3D 0; - struct dw_edma_desc *desc; - struct dmaengine_result *res; - - if (!vd->tx.callback_result) - return; - - desc =3D vd2dw_edma_desc(vd); - if (desc) { - residue =3D desc->alloc_sz; - - if (result =3D=3D DMA_TRANS_NOERROR) - residue -=3D desc->burst[desc->start_burst - 1].xfer_sz; - else if (desc->done_burst) - residue -=3D desc->burst[desc->done_burst - 1].xfer_sz; - } - - res =3D &vd->tx_result; - res->result =3D result; - res->residue =3D residue; -} - static void dw_edma_done_interrupt(struct dw_edma_chan *chan) { struct dw_edma_desc *desc; --=20 2.34.1 From nobody Sun Feb 8 18:24:07 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013030.outbound.protection.outlook.com [40.107.159.30]) (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 4228C36657D; Fri, 9 Jan 2026 20:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989647; cv=fail; b=J8Pa1dRzO0PhEvbjsrTmXgb2VtxhW9twq4ZGyaJHu5iyKM5TwxmFe5orglW90H62k20qnbpuk5MppcPPytmtwy2KeANVB2IwV7rde3/wehwn4Ou6FFTomgsXFf0XV9x/zoRNdIDVBgi3imstEjZg8vqbQMdtl9Em+B2dhvwdQ/Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989647; c=relaxed/simple; bh=K2PNJ3EhJXaup2m1x1DnySRdJ7fnDLBg4pm6YF19bBk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=amus8LpxHSGz+F12Sy4i3M+dI3eTB1rRQS4lDHn1wVcmmWqDdo0SwT64f0oFdQk5IP/beQZ/wxU5QTf0dFihjmbR5W/wEO9QoBpXfrHepRCIw+AyNUi58rvrtj0FGtCjFhd5m3oqly1wRoItHtK7Vq0XOLfqmzDtu4rRne+VQwA= 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=G2syTq+/; arc=fail smtp.client-ip=40.107.159.30 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="G2syTq+/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nQAAEZ+wxeNeLS4kV0CO66DOm9mnEHFONAdZro9ZKvHSdk2exrOEEokpmDe+5F0mSG6iDHy4CwV/MY3HyWHeGpnheRMCiAhS9BdGKqBZoJSk6XMirbXOOY0aEbmNXHrI4tlrU2VeuZtekSM5YIg5AAkrEu/9ZfFZr44KgcUhJA5aT9U6Tif7X7I9cEBdodhhWDiED+Au2vpVts/C/dc6z95yMyLW1AgIkgoYT7dHcYwArY+lFMnCe6y+xs6/Gj1Wa0TORgjcQFPQmE7+POJMPLFPVPTC/HH3fwJP4Kj3+hEavQbNm3WQwRYkRP00iKhpN/RnQC7bexkHgcsMkHd4og== 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=NkKEPcLnD1N51p/z6jw85BgBNHYbX17cSTqitB7BHqA=; b=CwUkl41M0zNA+etPisayGXFg+Vl9xFBnbmpcNEYh36+e++9havOsL7EkQMIJFKVi3vjonVXMW09RMM258prFIJoZfqL2InK37IrMIPISndnYCgDTp99Xc2SqWH56PmPjMTR6LeFAsOtHWRVMEvS5RVGXMO3CEmAY1nTuk4XC/mZEeEMJ8DVhQcOP3QjR9lqsNXv6KRnjAvvSk1Ll2PWFu9t/BegCUZI6WnbdNqxjSIH59saYPUNdfKTtKuuyQ4ydL1xe4C+i736SZJ8PGtEVGOc7eiEf06a7YDIw9T64FVCelAs6ZwV2W4O+vuoTiHuGvJjgDawfr83FHk4+HwJ34A== 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=NkKEPcLnD1N51p/z6jw85BgBNHYbX17cSTqitB7BHqA=; b=G2syTq+/y4bcgoaSMquxwx/LU6EKLz5vJ440dOkVJWln2YsVEWpLrOJepEj0r7nPPX29eopGfRDfPX6QxyplrGSFHokIdN3C+z0fedV7IMZdp741OQohfE+DK5Rl1siWo1OuMK1AacFKBzM6D0oWJ0mWc8HINSeyDHodJWUOqhiFdyWvnR6Ka1zhhZFS81flL6S1DqyaWWpQh4yLjDMHWiUTr79/Et243ooQnsiwBtRC7ZoDtn2llqQtxXlNU+VqyMOpB27zvYSB92BejnZq2Cd7H9WPXEkAvrl76dGPS+wEZU47fhwTR1fakgF0UZJKUo2TBTnIuvVsVx8pL+3jsg== 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 PAXPR04MB9106.eurprd04.prod.outlook.com (2603:10a6:102:227::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.5; Fri, 9 Jan 2026 20:14:00 +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.9478.004; Fri, 9 Jan 2026 20:14:00 +0000 From: Frank Li Date: Fri, 09 Jan 2026 15:13:27 -0500 Subject: [PATCH RFT 3/5] dmaengine: dw-edma: Make DMA link list work as a circular buffer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_dymatic-v1-3-9a98c9c98536@nxp.com> References: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> In-Reply-To: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , Manivannan Sadhasivam , =?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, Damien Le Moal , imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767989623; l=5488; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=K2PNJ3EhJXaup2m1x1DnySRdJ7fnDLBg4pm6YF19bBk=; b=mfXXLfR2QU5+z5m3hpWP39P3dfRCebI+4nchWUC9aoRhI0f8aDq6GJX44LAM76C3ZzWwkyDuO jzu0s4JehL+DFfsS5r6/ggS4NnGlfb4LeHARLFcMO019zeaJr7d0y9g X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) 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_|PAXPR04MB9106:EE_ X-MS-Office365-Filtering-Correlation-Id: ae129440-ae16-41c1-9348-08de4fbba031 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|19092799006|7416014|376014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?N0xQSEdLcHV6dnRRd002TnloQWpMd0g1amhvS0YxWldYQjhMb09mY1NmQTBN?= =?utf-8?B?VmJnYVd0RWxRQjExREVaUmtqWUxTN3FuS0FkTXBkT1A5RGVTd29mTkNpMmdD?= =?utf-8?B?b3JzQm15c1dSUkhzazM3c3dPdUxHU0x0bmFZTjl5Y0U1OGI0NEtJcEdOckxq?= =?utf-8?B?TWdyOW0raXhNSkpmdEtCMkc0c2hUdU1yUFhvV2k0d2lJZ3Z1YmVMZGp2ZS9I?= =?utf-8?B?MHpFWGFld2hURXRZVzZka0h2dlNEaGd3M28rS1FaT2J1OVFnZnBOK2FDb0lM?= =?utf-8?B?Q3lOUGJ2SmQxQ1pKcmozUGJLU2oydmk1U2JVMG1iQ2d3Y3F6RUlsd0RKeW1l?= =?utf-8?B?enpTeFBEejcvdTgvUmxMTzMrM1dBTm5relgrdVp5YzhrUXkyelh2dk0yNUFp?= =?utf-8?B?TXMwUEFyeU0yanZBb2g5NHd5aDRiK0lsMnhRY0lGdCtZUlQ2NGZlb3hhbUs4?= =?utf-8?B?TEU1aGZtVkJVL3FTdVpudi9tNE56N1hFVWF4L0pDYXYvWnNnbDVHOGZxeHRL?= =?utf-8?B?TTJYMTdmZEhRbm8xSmlOVmp0b2x2aHhscXd1K1U5Nk9vWTRub1VCRTJtYncx?= =?utf-8?B?c2FyMTluV2hEK1J3Sis1cFh5RzZJSVdBZ0IySTRtZVFEVExFUUVzYmFFUmhP?= =?utf-8?B?ZFJBQ29zRHE2VWVhek9EZjh3bnFIdkR3TTd6d3BFTSttV0NtREhzZ0tKNzRJ?= =?utf-8?B?WjErdlFnVnJQZmlHK2NNWFBRTEZsZUZxTHlZMGlMb1QvWkZJK1FUbFdUcEVh?= =?utf-8?B?ZlVVTmw5Wm11N05SbG1ZMzYvd0IrQmRFZDdWeENoNnN1MHd4YWpUNGFZUXc2?= =?utf-8?B?dGovb3VDZDErSEVoK0loYm1DZzlZbTVvRzlTL1UwaG8xeldBa3RVL1FKeW9W?= =?utf-8?B?NSthQkFMS3pWMitHSEQ0bXJJenprZmg2bDRXTThhb0ZkeDlZbFRyMElIWDZw?= =?utf-8?B?KzMzd1p5dzk2VHZ1UEZLYVZISWdSWGJHREhDcUhxNzNqU2FqZnYxUFY3TDBv?= =?utf-8?B?OEFVZ2JhL1czU0NCQ2dmRUp0N3NSS1BHallpSmxDMHU5L29tYXU0QkxSNXF2?= =?utf-8?B?RElWNjhEUXNTcElodWVtdlhTeWJvTlAvVStuOXNWck03Q2FZQVpSTlVRaXlZ?= =?utf-8?B?S29haWhRLzgwbzhmMkpMalFscVZUMUdQMzh1WGNFbDZxdTg1dXY0UnF4SFVp?= =?utf-8?B?NFFBdTYvZ1RmVXZuVnVLTndubE5mYTlSRzBPVTd6SlJ0aGJEYkNiUUVWL2JN?= =?utf-8?B?Rzg0WkF1RmF4M2kzTW5NbENsVjhyYjdaV0xXYjR0ZnZwODdWUkg5bmorTStH?= =?utf-8?B?Rit1UHloRWo2YTlUalpGQitVM1lKcFZpbVI4ekp2SzBYSFpNQm95SGIwUVVH?= =?utf-8?B?YzdZQUdyS0NzaUdNb0pWd3dKV3FYWXhiTjBGSzN5NitORlV6OW5FYzJxVElh?= =?utf-8?B?OGZmK2U0aHQvcVF0dk9hSnFyRUNsMFFoMUFRQ2dvaFcyQTBKeG9IaS9Hb3hm?= =?utf-8?B?MjZJbHVDY1U0NHNvaE85d2IyejJ4a3VCcGIyUnRMOU5lK2NMbWVvVGFuWWhu?= =?utf-8?B?THVnVnVaS2Rhd2xYYmRFZ29hNURiNTJlTTZVS3RpcnoyeWR1eHhFR0xIVUJ2?= =?utf-8?B?WUl5L1hOM1BkY242UDNGZHdGMkUyVkZEVzNycU41K21HZU11MzVHWXl6Q1Ja?= =?utf-8?B?Q0drODhxTkM4M2tZYm5mRnRuVXBiRE9OM0pySmlna3FuMGNUZm1mUnlyQ1dY?= =?utf-8?B?UkNZbC9jN2xPaUZsUm1YSjF3bFZKbjhxYlZTQ3daalFRYnBiRGZneUYxU1Nh?= =?utf-8?B?ZFFPOFdGdERKd2lJZ3FUSEtmZXB2bXA5M1lJMmxuc3JjbnVhU2JLNUEvOVNO?= =?utf-8?B?OUIyYTQwYkpmbTJiN0Y2bmU1MTZOb2ZXMTRBc2RzK25GY2pIMjFLd0phL1lI?= =?utf-8?B?NGFBZ3BaTEthNitKamo2b0RHVGJYbElELzFiMVRmZHg1M2tmVlBOWS9NaVEw?= =?utf-8?B?YmhNaXQ5MGVvTDNBNUN1Z2JBS2k1dk4zMS9kc1IyWWg5Sk9NaFRFZ0lzOVd3?= =?utf-8?B?a0hMd2UyYmtpOVczbHVKait4Q2I5c0ZOL3dWUT09?= 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)(52116014)(19092799006)(7416014)(376014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SXFyT1Q4dVRnWVRnYUlUTCtySFZUa1U4dUlPNlFsR2Yyd1lRRkM5TFpvVlRN?= =?utf-8?B?ZVdrTmRoRXp5V1BUb1ZKMUY5UENZQ2RUa2lUR3BuVnQvUUVxdmdKTVFFMGZy?= =?utf-8?B?bzJvQzZkRTVReEFTWFZwYWFpdUdwOFZQdkN1aUxxUXVnYUtVSDhONFNyUXdl?= =?utf-8?B?aXhoTWRPMC9UOEQveEx5VjIzeGpKTitab25NbUdIZjVrS1RCV293eGtNR29Y?= =?utf-8?B?ZUEzUU9UbEprcXFsNTFhdWFBMDV2ajZ5bXBoMW8wTzZwaTN0K2VkQTlKNWZ4?= =?utf-8?B?aFZ3REZSU01kMDV3U0paNVo5bEZ5clVGM2RwK1ZxMzgrSzJlRFZ4TDZ5Zkxt?= =?utf-8?B?TXByOE00NUJ2M2JwSHBYbktNMUgwQlVIWlcxMDlCOURxOFpFQW5lVUR3OHlh?= =?utf-8?B?dGJtRUNoaVlvTGRtK0dMTXJoMCtxVXJyRjFacGdVemFDaHBJYTBtMmpYSG9j?= =?utf-8?B?Y3BOVTgybm5odnduR0I4bGFrSkdiaE9Ua3BxdFJlcmtaa2IrbW1pSXR3ZUZC?= =?utf-8?B?TUUrUktuQ1MvbHExMGEzOWw3aXF2R1pGTldJZCtUdGU0SmdGN3U4TVE1RjVK?= =?utf-8?B?UVdIS0VkYXZSZlA4NVBWaXdCUWxoSlEvajFXQkVvMWp5UGRhdVRCOXc4emZz?= =?utf-8?B?TGVDUnZHYW5vSnRZMnFIeFFXUHNYTXFTU1hFVnZQYXV2QVk3Q3BCSHM2a29x?= =?utf-8?B?QldNRnVZVXRmYTZvM2ZOYU9yb3pmaHIwb1lzTUlWb05XSHVPK3V3NXNJWXU4?= =?utf-8?B?WmxWOEw3YmVJaisvdWZXenI0eGViMU1JUFd3ZGY5V29aOHVMUjBqRTRjT05l?= =?utf-8?B?Z0dwQldLTmE3dHg5NHJFN3VZN1NLd2tPZGZyeGh4d0tHRDl4OXp1THJYQmhr?= =?utf-8?B?VWx0bld6bHRYYkppZjh6OUw3SGF1ZnluaGZubUhoSDJkUE04VUZGS0lUV2ht?= =?utf-8?B?aWVhdGxtNWd3NzZXcFI2NXhUMDBtM0JKbWx5K0lNNlBreHQwRVhpVWtmRmdU?= =?utf-8?B?NWFVMElVMXJaU3ByTFRnQnRoV29zOVhXcDE1RmduUWRHU3Fpb2RGTHA2a0s2?= =?utf-8?B?Sm1FZTlsNkpWMC9zRElmc1pBNDJCR1E4d1ZlNnNZQW5RUXlTMlUvS2dycmJ6?= =?utf-8?B?Rk0wa1g4WXBleEt2N2xKTDFGYVBYbndWZzZqR1ZMRCt0Z1Nmem8rZS9BNWVr?= =?utf-8?B?eUkzejVYZktHQzdVT3FoVCtreUJTTkdkdSt5UUJIZFVZS1dHUXJZaUY5Ujg2?= =?utf-8?B?OEczWWp5MFdPS1F0RmpCejIxc1pLa3AxZnphREwvVHQ1MGFRTk44aWh6b0F6?= =?utf-8?B?RmJROEZhNEt2TGFLNmt6MHNKb2dUUHF4RVFQNzRXWUlMUFdJVG5mVUF6cFU4?= =?utf-8?B?TlFUUk5NTVNvbFVMb2UvUWJjNFFJZXJwSjRmZGdqcUZZc0FSbWh5SEZyQTVO?= =?utf-8?B?QXdoZzhQRVZLTlVkajdSU1FOc2hVdHZidGRBQUVYMXJadnlWU21sVDg5Wk13?= =?utf-8?B?c2lLUmt0VWoxbXZDNDJGYW0wa01WeTZ1UnFkNFpnMWdMM1pLWjloTXNpcmgy?= =?utf-8?B?R3ZPUHVXRE5oZGE2RG1aSjlWUlpncFpvLzF4R0k2bkVXMmQ1NjFBTXV5dEw5?= =?utf-8?B?QWhveGpGdFRXS2RTSHAzZ1JvYzA4eEJHWHZOUC85VVF5eEt1a3dUekMwZ1Zw?= =?utf-8?B?NXMxbENxNjFQZmx1b0ZkS3J1clRXaE1CeEp2YjVxQTJkRXIxbGNLaGFzWlY3?= =?utf-8?B?aThTZHhnTllCd3FwbDVIdDU2V1E0MXNRZXd1dXdkQ2RWbzQvTVYzZ2RRSFNN?= =?utf-8?B?Mkt6K2FDd2RGSGpiZTJRZmFnTGprTERTVmQxNFR2eTdGanFvTWppT2xYbTMw?= =?utf-8?B?RitoK0E2MytHOTBmQ21QcFgxTGQwUWNCWEliWG5TVk5rWC9DbzUyd2s1Rmgx?= =?utf-8?B?UHNVNVNqWElZa2hZaC80eS9OT1UvUm5BSExvbUZkMnRQTDlqdFlSRkxuTW5Y?= =?utf-8?B?STc0NDQvcWZ6WHI0ZVJGQU9EODNvaFh3VENNbU1uTzluQm83Sm01TXJlVW4v?= =?utf-8?B?TGJIWkc3QlZXQUdsYXNXdmdrVEs1Z3dZYkxlV25XK25NVEJzTHdNL3B3RkNC?= =?utf-8?B?ZXhNV1Q3NEllbWE0TXJaUHNjbGY0bytCVENOaHdsc29LTkZZS2dpL0lnc1cv?= =?utf-8?B?QkMyeUcrVGM3V2N4cWhoT2IyNm5yUXp1VzU0WXVrS3M3b2lqY2MxOXFzNFg2?= =?utf-8?B?S0RMNDk3ZWRBY2k3TWtQOTVQTDVnVGUxTWFOUm5ycCt2Yjg5QzVzNmJSVVNK?= =?utf-8?Q?3IQVaiJZnMsAkiKViE?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae129440-ae16-41c1-9348-08de4fbba031 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 20:13:59.9341 (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: DvlB4uxwgQY08NVWuLSYY8Qx6oF1JfWoG34F5KpNk4OFhipAvh9VOKr7cfTGDeRa2K0Py48x+zkNLLWYlQdl0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9106 The existing code rebuilds the entire link list from the beginning and resets the DMA link header for each transfer, which is unnecessary. The DMA link list can be treated as a circular buffer, where new DMA requests are appended at ll_head with the appropriate CB flags and push door bell, without rebuilding the whole list. Switch to this circular-buffer model to prepare for dynamically adding new requests while the DMA engine is running. Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 57 +++++++++++++++++++++++++++++-----= ---- drivers/dma/dw-edma/dw-edma-core.h | 28 ++++++++++++++++++- 2 files changed, 71 insertions(+), 14 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 9fb7ae4001207b2ccb058d6efa9856dded379b8f..678bbc4e65f0e2fced6efec88a3= af6935d833bc6 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -51,7 +51,6 @@ dw_edma_alloc_desc(struct dw_edma_chan *chan, u32 nburst) =20 desc->chan =3D chan; desc->nburst =3D nburst; - desc->cb =3D true; =20 return desc; } @@ -61,27 +60,56 @@ static void vchan_free_desc(struct virt_dma_desc *vdesc) kfree(vd2dw_edma_desc(vdesc)); } =20 +static void dw_edma_core_reset_ll(struct dw_edma_chan *chan) +{ + chan->ll_head =3D 0; + chan->ll_end =3D 0; + chan->cb =3D true; + + dw_edma_core_ll_link(chan, chan->ll_max - 1, chan->cb, + chan->ll_region.paddr); + + dw_edma_core_ch_enable(chan); +} + +static u32 dw_edma_core_get_free_num(struct dw_edma_chan *chan) +{ + /* + * Max entries is ll_max - 1 because last one used for link back to + * start of ll_region. + */ + return (chan->ll_end + chan->ll_max - 2 - chan->ll_head) % + (chan->ll_max - 1); +} + static void dw_edma_core_start(struct dw_edma_desc *desc, bool first) { struct dw_edma_chan *chan =3D desc->chan; u32 i =3D 0; + u32 free; + + for (i =3D desc->start_burst; i < desc->nburst; i++) { + free =3D dw_edma_core_get_free_num(chan); =20 - for (i =3D 0; i < desc->nburst; i++) { - if (i =3D=3D chan->ll_max - 1) + if (!free) break; =20 - 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); + /* Enable irq for last free entry or last burst */ + dw_edma_core_ll_data(chan, &desc->burst[i], + chan->ll_head, chan->cb, + i =3D=3D desc->nburst - 1 || free =3D=3D 1); + + chan->ll_head++; + + if (chan->ll_head =3D=3D chan->ll_max - 1) { + chan->cb =3D !chan->cb; + chan->ll_head =3D 0; + } } =20 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); - - if (first) - dw_edma_core_ch_enable(chan); + desc->ll_end =3D chan->ll_head; =20 dw_edma_core_ch_doorbell(chan); } @@ -90,6 +118,10 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) { struct dw_edma_desc *desc; struct virt_dma_desc *vd; + int index =3D dw_edma_core_ll_cur_idx(chan); + + if (index < 0) + dw_edma_core_reset_ll(chan); =20 vd =3D vchan_next_desc(&chan->vc); if (!vd) @@ -101,8 +133,6 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) =20 dw_edma_core_start(desc, !desc->start_burst); =20 - desc->cb =3D !desc->cb; - return 1; } =20 @@ -530,6 +560,7 @@ static void dw_edma_done_interrupt(struct dw_edma_chan = *chan) DMA_TRANS_NOERROR); list_del(&vd->node); vchan_cookie_complete(vd); + chan->ll_end =3D desc->ll_end; } =20 /* Continue transferring if there are remaining chunks or issued reques= ts. diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index d68c4592c6177e4fe2a2ae8a645bb065279ac45d..fd4b086a36441cc3209131e4274= d6c47de4d616c 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -60,9 +60,10 @@ struct dw_edma_desc { u32 alloc_sz; u32 xfer_sz; =20 + u32 ll_end; + u32 done_burst; u32 start_burst; - u8 cb; u32 nburst; struct dw_edma_burst burst[] __counted_by(nburst); }; @@ -73,9 +74,34 @@ struct dw_edma_chan { int id; enum dw_edma_dir dir; =20 + /* + * Add new entry from ll_header. + * + * ll_end ll_head + * =E2=94=82 =E2=94=82 + * =E2=96=BC =E2=96=BC + * =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=8C=E2=94=80=E2=94=90 + * =E2=94=82SSSSSSSDDDDDDDDDDDDDDDDDDDDDSSSSSSSSSSSSS=E2=94=82 =E2=94=82 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=94=E2=94=AC=E2=94=98 + * =E2=96=B2 =E2=94=82 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 + * DMA Link To Region Start + * D: eDMA owned LL entry + * S: Software owned LL entry. + * + * ll_header =3D=3D ll_end means all own by software, all previous DMA + * already done. + * + * Software at lease owned one entry, all D is impossible. + */ + u32 ll_head; + u32 ll_end; + u32 ll_max; struct dw_edma_region ll_region; /* Linked list */ =20 + bool cb; + struct msi_msg msi; =20 enum dw_edma_request request; --=20 2.34.1 From nobody Sun Feb 8 18:24:07 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013030.outbound.protection.outlook.com [40.107.159.30]) (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 19A9C366DD6; Fri, 9 Jan 2026 20:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989653; cv=fail; b=lqLHY9uDfNA0IxD29NdwncYPnL/MPzxIS6CQxJ0wod1K2Cn5X8IUId9bfszpFUDRMe04zIQWLwU6BoIcB00HV+4hB/Kra1n3Qc2DUkLqV96+0eVhJ1BeGrmgdzlcpK7wcgkhs1Q7YdQgWAjuzvwCQF4yrIcLqGT1dl7E6A0cavE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989653; c=relaxed/simple; bh=4k9Sf4uY073AU4Zy7K/tlX5wyZl55QSb0NqPzIQhxVk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=EqJHTeBCJruqpC7sConoSk1OHHnqvBkFr5EItIgcBCpnXFPqxV2GLOrk0aBfogZD1IJZb29dghvyNp39QGDGNMf0ZbepVkrSRFIll/UvBvHVy+BPyjNQNMSXLcAMxB03ydcbU2vfegR8z7J8YNyEm8hWtWHVKXNYYpYP/OEEj4s= 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=BbvKiEx8; arc=fail smtp.client-ip=40.107.159.30 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="BbvKiEx8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ar+Fmtiu4IH0NNoBvAC6pC3t/SSSWBFedfglCcrcDfEVohoq9Q2VmenltuP1Vr2f2BvGImqDj6opHCsxKjwF/9e2cSXph3GpKGUU0wIN5J0ob4dzVXyYO6kjgbHWu8hI45HKM89FQLDFVI7YMs7hYMkd+IuEnlxCmBwpb6bZAlxHFQFPjgAyhkuPfnUh6uLeIx2WzsnkI+r8eCezT2yqVZV0nwsRWJIMd5i/leZwyH3KjSmyh6X5gwjJatCwGCxsdygJjPeXgiShFy4r0dSZALmgGooCEPnklinQUt+heMCWCBBiC/NO1clo92LXmlbv4oXaIfNdZ/nvLMNGVJOhcg== 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=CS9nPj06JtVTHboy1Smzm840Fs2X9/tddoa0J6FqUFM=; b=HN6OoEhuwCy7d8hp0R8nBvBpU1wwd+OJB7i+SZbCDC1JnF15jqSWckJygUlfPT1QCeqEMaSQkJTTyfI5DiQTk5POWo0fxIcsWzfgiRFthMGGH9NJR1H1P65LT2vR2lmVr0FRKx/iOUd6PBD9shEflmMJ0UBPwvIH4f3tzm9yqqJ9nAnAdZ2RnZHgJR1PXGmB2LoyihBBm92X2lRTKbZLWf4jvPndJRf0SgOgO1UGxo5HgiP3x1oduROHryt2Bd8/RRgBzRXm0AUbSTp14k3Uq56psBCEjWygF1jq85V3VykS9MsDagPPTPKcitBusTbiy0+7fUL+hPzYC1Pny5ukGw== 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=CS9nPj06JtVTHboy1Smzm840Fs2X9/tddoa0J6FqUFM=; b=BbvKiEx8S8hF2P2GNQok/y7H87fmokEXPcY5tuzOxcbzP6Rvcx3QhZCi19PgNyDQgB4i1rmM8pMXrHsrwrrxbBlt9OIt+/2iWPThXlygFt5jtyXJMN8mwqbnx6emFvZU/SX3ErzHoZuDfXon7ned4Q6j/CzDlAob10msYYO/humqQ2Hf/sk5HIxY1xYmhtMux9qREe56lRtXtnRQWc0FewGEqOfruvqKYW8QUai5YT9YTmmQd67RcoT1Ru0EKyfD3Qpt9eN6faHcoqTcQsd2VGmAkylZqu2g55P8uZUoPzrzAyc4vR/oR24LpeGGj4Zr8WRD8kz2zIzLVXxaC+/FTg== 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 PAXPR04MB9106.eurprd04.prod.outlook.com (2603:10a6:102:227::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.5; Fri, 9 Jan 2026 20:14:04 +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.9478.004; Fri, 9 Jan 2026 20:14:04 +0000 From: Frank Li Date: Fri, 09 Jan 2026 15:13:28 -0500 Subject: [PATCH RFT 4/5] dmaengine: dw-edma: Dynamitc append new request during dmaengine running Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_dymatic-v1-4-9a98c9c98536@nxp.com> References: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> In-Reply-To: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , Manivannan Sadhasivam , =?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, Damien Le Moal , imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767989623; l=8461; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=4k9Sf4uY073AU4Zy7K/tlX5wyZl55QSb0NqPzIQhxVk=; b=9f3QVVPc9rKK+hdJAxTOgcMvKs8webn5gFNQreIEMeNPMudcavWSTlG7ZVsXtS5z7RYtCH114 NdHWJsGup7YBl9/HG2JLAvMcjl4BNxhzgOxgi2Br4rj86FGRD/VuXQm X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) 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_|PAXPR04MB9106:EE_ X-MS-Office365-Filtering-Correlation-Id: e014d10d-af84-4e8b-645e-08de4fbba298 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|19092799006|7416014|376014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TnV0aitVS3Q3bnFnM05xaFlWNkVZeVlDUUhya1pPMmQ2cUdPdElZZkZTL2lu?= =?utf-8?B?VFdiTjZFT2h4NGZyK293WXAwSVM0czNYbUxSbnBYcEsvek1XNFZCcy9ZaE9j?= =?utf-8?B?NDlNS29TQm9KZ25JTG5oZ3dJWVcxMDhIckxDSzVtYTczY3NWNGtGU25LK1BY?= =?utf-8?B?VG82TkVoZnN5WUNqRFp0TWpzRndCeS9kL00vZUk2ZXZwb3dxRGZNZmVKZDZS?= =?utf-8?B?OVM4Yk8zZkZmcHk1eXoxVmJCZHJLZzZMaW9KbVEwRnEzRStlcytJZElDanpS?= =?utf-8?B?NDVHTitOMWtkUVlNL3hmVGNIamE3QSt1alJReVN2TE4rZW43cXpqMDBjMlJI?= =?utf-8?B?WEcrdUJlMEZaSDlGenI0NUpaUnZJRTVuZXFJUWRlc0VyRTlNYlkzYWVuTkVB?= =?utf-8?B?NHJBM3d4LytpaGJYRHlpdE9JNmtnWUdwaHkvUG1OWkRDaVVKUDNFamdoVVlC?= =?utf-8?B?SGRRdGNlRkE0VXJ3bHJsL3FvSzVBWGF3ZDQ3WndGZ2xrckxleDdKbEkyT3NZ?= =?utf-8?B?dVVtaHh4R2hDVU5YalFyY0o2ek02RnpuOGM0aVNUYlJSQjd1L0N5RWFJN1Ax?= =?utf-8?B?MkZiYjdqKzUzWDlFeHFFU0ZFUzBkQ2JOSnlkMzdGb1JzOG0za0lUY1o3NXBi?= =?utf-8?B?WW5OSzZtYjlLcFJZa0ppVStJdWVxdjJ5SGlVUXBVZ3h3YmFjcEZsenhwbXRw?= =?utf-8?B?bUZKRlVuWUFQS2RBSEpWRWR4elJPbXJ3ZmJ4ZHNwbzUrR3pqMnlKMk4wNWM0?= =?utf-8?B?d211aTFvOVdIS3dEVGYzSVh0Mk5kYzh2S3o4L2JXdkxVMkE1am1Ja2RhdlhZ?= =?utf-8?B?M0xiL2U0RGg5ZUs3L0RyTnhnTmNrZk8zWmJoMVBLdHVIRlFxamNKRDd0anZT?= =?utf-8?B?TVBoVml1aDk3MndSNlVkQ29nMGlBUjRuMTAySUNXdTRLQ01qWWtHT2FFcVdj?= =?utf-8?B?L0svZThVcFUvZFlpMHA3Rkp1dTBybXVLSkc1UUpQaTM5UHFSTXVJUk1oSFJX?= =?utf-8?B?NE9RWTVYZVkxYi9GWTZTWlBmWTM2Wld0WXA2T0doeGwra3lnNkxyM3RjYVhx?= =?utf-8?B?SjZmY3lVZVNZYnlzWUhBMlh0NnZuVitOZ3NWRi9YT3Y0V3dSL243REpCL1Fl?= =?utf-8?B?Wm92dzVjNDU3R0hBczUyYWF2NEIxaWppbWxFMkFKRjhTbWxqajdXZUdiZVpq?= =?utf-8?B?Q3h4OW9WT0FYdUt0OGR2RUlMRk5TYUFVR3drNGhHa3BhWU1aUE5CRkljUFpJ?= =?utf-8?B?TWM3YzNmMytrWnZwVUx4dGlZalAxL21LcnRReW5CRys4MHZjZUlTN0tVM2c1?= =?utf-8?B?dVh1aTRqMzBUaWpuMHd4ck8vLzRlOUtrVkpNOGpyUEpBeExCMnF3ZFd3RnJh?= =?utf-8?B?Qk9uUERHZkprWXZER1gxdFdCZmc4eHRhWHZMeDhwZXFrZlVlOWJQTGcxQ1pl?= =?utf-8?B?SHhRUjNvWElXZlI3S0M0a3o5cVVlNkZtK3FJbnlUSWUzcUR0Q0RCNmR0STVM?= =?utf-8?B?NHpxSmdiOWIzOTJOZlBLTzhXeTA2MDZkdDZFZnNFM2xlRkJpa1M1VGgvWVdm?= =?utf-8?B?NmdUQ1E2bU9sbm1lMHZOdXkvS3lkSE1nZnAzSFI1V0w3dWNiQjIwQlg2R3B2?= =?utf-8?B?V2VlcXA0VC9keWl5Y1RDbDVmdEZhbElLYVdjdk1RVzZQM2FiVi9FSzZuUjBN?= =?utf-8?B?Y3dLOXAwNkZaVldyaS8vRkZwS0o5N3kxUUlHUFFHbFliWUFrUk8zSGsza2k4?= =?utf-8?B?V2VxRlE5MURtcHNPTUpSRDQrSWdhVnI2ZHI0QnNNdHNkZ3pzbndWdEhKUWFt?= =?utf-8?B?akxJTlNvZzlud2JoQ2lseTFpSzJiQTRTU2lLY2gxTWVSdU5lZVZBNWVobGtr?= =?utf-8?B?KzRIZFR0MnNJcG9rQUFZMkZHdy9WdkliR3E3VlpRdnhwWlVEQVlpbTFPcGFH?= =?utf-8?B?MUEyb3drYzRKY1l3R1FSVGcyZFRmZ0lid1ZDYTh4T2owbEVITmJEMnhSOHhn?= =?utf-8?B?Q09xbnNlb09KbHQyK2EraSt6RWE2RGtxdUxzdGRGS1RYNDVlS2tUdjNMNEdQ?= =?utf-8?B?YlBvQi90SU90S3NseWpDeVlOTzNoT2ZKS05qQT09?= 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)(52116014)(19092799006)(7416014)(376014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bVRHd2M1RUswMG91MklkTFVCTUUzbHBpMTc5bEs3WlBKUlcvOUJ1V0tMK3A0?= =?utf-8?B?alVNb096bjVGNHh3R1lBYTc4SjczL0JSNVA1d0xXWkJ6L1k1cDdPa1o5WXp3?= =?utf-8?B?WnVMUnlUNmIvQUFTZzZBckFYbitsVXlLNVFtSWFuZDVJZHk0RnNsZTFKSnlV?= =?utf-8?B?S1Q5ZWRQbFp0R1lLZXZJaXBNSHh5aFd6ZElHcEI3RENvTTk1ZEhBQkVZay8z?= =?utf-8?B?NEdVV2ZEV1RoTjN6eHR3TDdDTStWVmF1azAxOEZzSDZsSlFXS0FxSm9TVXdm?= =?utf-8?B?dkFYbUpTd2JqRVVXWm9CbmVjbjJJalV5RlFlQ2kzMzk4akdpdjhEeEJub3lC?= =?utf-8?B?Y1FFZG9UdDJNNHhuZUF6bEVDVmpLQ2FWQXJGYVBLTTE3K2hmemgrNWpBT1N6?= =?utf-8?B?dUIrSUt3Y0tseVNmTXhCVmhLMjQvK3RSNHVBcUJmRWdNcVdFS2t2MWFvem5k?= =?utf-8?B?UXJJODZQdjRPWDVEVDVMcDJYU1M0QTNDSVk2VmNERVlZRXBVM0JacHZsVDVs?= =?utf-8?B?dUxseVJBZTBhWlF2NnJCMkR5TFdIT3RHS1RkVWN2dDcxYWFWZVozd3IybHZk?= =?utf-8?B?MGVsNTExN3dpYTdpMWNnM2RLWHU2YVEvVWoxcmNZS2NpQ1NkNVJtWUg2TUxt?= =?utf-8?B?TjZuU2xkL05NdVhqMkdGQTc5NG5uNE9ZaGZRRnZRSUQwMVlJSTlHeG9INDNN?= =?utf-8?B?dkQ5aUpBQ3c1TG5aWVpZRnp4dU9BaS9acXl3ZTFrb2pOVDZzRjAwSUVJbW9k?= =?utf-8?B?YzQ3UituNW00bHdkRXJMZVB1ZG1iZ3VWMWhwWGVTNXJEZ3NvczVtRW5qUS9F?= =?utf-8?B?cmw1d3dkbFFHM1dDaDBsNmc1bnNIUzhpRnJSNXBsaXB1dGVHRGVsa3B4UnBI?= =?utf-8?B?QWQ0QWd2L0NDNVNNWXJYWnZLZEFFQjNDVXcvTHJ6amcwVjVjTmtmRlRnQ2k2?= =?utf-8?B?Z1NiT1BrcXd6V0gxY2hlUlUrcVpZdFVaYXE4c3BXdG5Qa05ZSUZMUS9VQW9p?= =?utf-8?B?YXRDSWZwT1M1bWNnZUh6TDlwbUVUV2hKcnhqY0lxY0lDNGQ2OXlFY1NVaXRP?= =?utf-8?B?aGZFNEFnMHFWa1FWRmpLbG83ZTllVzlNaDNMSW5yYUowQnhhV0RmbmFCanBx?= =?utf-8?B?RTM1U1lHM2pydytjNGZRTTNFbW9JVjhLNldwOGlxa004azdWaVhncHk1M1ZC?= =?utf-8?B?dnNEejRTV2tsL0hXK2VZbDY0d0NGVW9VS2RmeFVNcmpLU3pLcWpXNlAzUDZu?= =?utf-8?B?UTVpMi9oYkhmb1Y2QlpUMktIN1JzeTdZak9sRzJmSGVPaFhXV1JzTUxDRG9H?= =?utf-8?B?V3U0NVd0eEp0UklVUVdrWTVmQVBNZUZwNG16bWxzVXhrblR1V1dhcWczU2lw?= =?utf-8?B?dzFmSjduWk5ibWZNSVdsdGUwaWtjekFTQlAvQWVOaUcyUVRWcjFKQmlnc3g2?= =?utf-8?B?b0daSlEzd0xjU21mQnNNNjRIbVZsREQrZEEwZ05VNytqUEJyTXA3VEc0V2Rj?= =?utf-8?B?alF3ZnFjTEt2M2pFc3dFODNERzlMMjZpQ1p3RzhSTC9VUklGTGg3T1U3T2U5?= =?utf-8?B?cGtXSTdVQTNOWGFUeXVqaFpSem94QlBaMlZzQWxDOGR5TGZ5ODFXWXhMMkwz?= =?utf-8?B?RmcrczRZMVg3T3hGL2xsSTFac21DM1lhWUQzMk5BcGlBdGVLcWF4SEc5Z3kx?= =?utf-8?B?aC9qT3hPbzVKbEVTMW5VTTdQa1h1UDRXSGRzeXdscW9mUmVNQUxYemZiazVh?= =?utf-8?B?VTFYM0g4d1RzaS9ueE5lUTQwWlp5bVRJQUR0cWdSNVBoUlp1c1piM1UzemVr?= =?utf-8?B?bDNrRWpTTHRQZmMycmhUaVorQjBoSW9tYkFJbThpTnIvaTRnSWc4Ris1MGlK?= =?utf-8?B?bkR5bVJGU2UxQmpGdytIMXhBT3hNQ0ViaHBFWFpxTWJCUGFJMm80NlBybWhT?= =?utf-8?B?b2lpWG1qQk9pWnBzU3pmVXJtWklHQTIyaVBzMUJGc1E5YUt1bUhOUTcraU8v?= =?utf-8?B?dXFPU1ZabFV2SG1FK3FJemVnaEFDL2drSWVBWlhSZUE2SVFEUUFiQWtYYjNr?= =?utf-8?B?Q3RFN1Bhb1hpVmtFellJZER4QU1UNzF5cGtVNDgrSVNxNEViVFo5elp1RjFJ?= =?utf-8?B?MUxaUzdrdHRxajBCaXlyKys1WUd3OVpDWW0zTW10d0ZWbG5EUnIyanRpY1pF?= =?utf-8?B?U1ZjMVBRbnRJSUozWkhCNGVFWG1SWE1BbW5qVFBvK1pJVTFTOUtXT01BN2hS?= =?utf-8?B?YWVVWjZNUmNLY3JaY0drUXJ6ZW9UUnpqRHpuZ0JrTjdYekJ1NG1Oaml5aStk?= =?utf-8?Q?yOSfJftP9LXk2HkkvP?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e014d10d-af84-4e8b-645e-08de4fbba298 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 20:14:04.2420 (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: EI9fy2s3BQy741a3EDSAOIrEr+/VC/b1X7I1TZ8sz8R7EVwVZ2N3JvsPQDGwI8QmWQiLYeqGcQdf3z+5dgUtXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9106 This use PCS-CCS-CB-TCB Producer-Consumer Synchronization module, which support append new DMA request during dmaengine runnings. Append new request during dmaengine runnings. But look like hardware have bug, which missed doorbell when engine is running. So add workaround to push doorbelll again when found engine stop. Get more than 10% performance gain. The before Rnd read, 4KB, QD=3D32, 4 jobs: IOPS=3D33.4k, BW=3D130MiB/s (137MB/s) After Rnd read, 4KB, QD=3D32, 4 jobs: IOPS=3D38.8k, BW=3D151MiB/s (159MB/s) Signed-off-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 104 ++++++++++++++++++++++++++----= ---- drivers/dma/dw-edma/dw-edma-core.h | 2 + drivers/dma/dw-edma/dw-edma-v0-core.c | 22 ++++++- 3 files changed, 102 insertions(+), 26 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 678bbc4e65f0e2fced6efec88a3af6935d833bc6..5aacd04bd2da4a65aabec48f663= 1f6f8882eecfd 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -65,6 +65,7 @@ static void dw_edma_core_reset_ll(struct dw_edma_chan *ch= an) chan->ll_head =3D 0; chan->ll_end =3D 0; chan->cb =3D true; + chan->cur_idx =3D -1; =20 dw_edma_core_ll_link(chan, chan->ll_max - 1, chan->cb, chan->ll_region.paddr); @@ -82,6 +83,12 @@ static u32 dw_edma_core_get_free_num(struct dw_edma_chan= *chan) (chan->ll_max - 1); } =20 +static u32 dw_edma_core_get_done_num(struct dw_edma_chan *chan, u32 index) +{ + return (index - chan->ll_end + chan->ll_max - 1) % (chan->ll_max - 1); +} + +/* Need hold vc.lock */ static void dw_edma_core_start(struct dw_edma_desc *desc, bool first) { struct dw_edma_chan *chan =3D desc->chan; @@ -94,6 +101,11 @@ static void dw_edma_core_start(struct dw_edma_desc *des= c, bool first) if (!free) break; =20 + /* need update link CB before last update last item */ + if (chan->ll_head =3D=3D chan->ll_max - 2) + dw_edma_core_ll_link(chan, chan->ll_max - 1, chan->cb, + chan->ll_region.paddr); + /* Enable irq for last free entry or last burst */ dw_edma_core_ll_data(chan, &desc->burst[i], chan->ll_head, chan->cb, @@ -108,32 +120,36 @@ static void dw_edma_core_start(struct dw_edma_desc *d= esc, bool first) } =20 desc->done_burst =3D desc->start_burst; - desc->start_burst +=3D i; + desc->start_burst =3D i; desc->ll_end =3D chan->ll_head; - - dw_edma_core_ch_doorbell(chan); } =20 +/* Need hold vc.lock */ static int dw_edma_start_transfer(struct dw_edma_chan *chan) { struct dw_edma_desc *desc; struct virt_dma_desc *vd; int index =3D dw_edma_core_ll_cur_idx(chan); + int ret =3D 0; =20 if (index < 0) dw_edma_core_reset_ll(chan); =20 - vd =3D vchan_next_desc(&chan->vc); - if (!vd) - return 0; + list_for_each_entry(vd, &chan->vc.desc_issued, node) { + if (!dw_edma_core_get_free_num(chan)) + return ret; =20 - desc =3D vd2dw_edma_desc(vd); - if (!desc) - return 0; + desc =3D vd2dw_edma_desc(vd); =20 - dw_edma_core_start(desc, !desc->start_burst); + if (desc->start_burst !=3D desc->nburst) { + dw_edma_core_start(desc, !desc->start_burst); + ret =3D 1; + } else { + break; + } + } =20 - return 1; + return ret; } =20 static void dw_hdma_set_callback_result(struct virt_dma_desc *vd, @@ -161,6 +177,31 @@ static void dw_hdma_set_callback_result(struct virt_dm= a_desc *vd, res->residue =3D residue; } =20 +/* Need hold vc.lock */ +static void dw_edma_ll_clean_pending(struct dw_edma_chan *chan, int idx) +{ + struct virt_dma_desc *vd, *_vd; + + list_for_each_entry_safe(vd, _vd, &chan->vc.desc_issued, node) { + struct dw_edma_desc *desc =3D vd2dw_edma_desc(vd); + + if (desc->start_burst =3D=3D desc->nburst) { + if (dw_edma_core_get_done_num(chan, idx) >=3D + dw_edma_core_get_done_num(chan, desc->ll_end)) { + + dw_hdma_set_callback_result(vd, + DMA_TRANS_NOERROR); + list_del(&vd->node); + vchan_cookie_complete(vd); + chan->ll_end =3D desc->ll_end; + } + } else { + break; + } + } + +} + static void dw_edma_device_caps(struct dma_chan *dchan, struct dma_slave_caps *caps) { @@ -272,12 +313,13 @@ static void dw_edma_device_issue_pending(struct dma_c= han *dchan) return; =20 spin_lock_irqsave(&chan->vc.lock, flags); - if (vchan_issue_pending(&chan->vc) && chan->request =3D=3D EDMA_REQ_NONE = && - chan->status =3D=3D EDMA_ST_IDLE) { + if (vchan_issue_pending(&chan->vc)) { chan->status =3D EDMA_ST_BUSY; dw_edma_start_transfer(chan); } spin_unlock_irqrestore(&chan->vc.lock, flags); + + dw_edma_core_ch_doorbell(chan); } =20 static enum dma_status @@ -290,7 +332,23 @@ dw_edma_device_tx_status(struct dma_chan *dchan, dma_c= ookie_t cookie, unsigned long flags; enum dma_status ret; u32 residue =3D 0; + int idx; =20 + ret =3D dma_cookie_status(dchan, cookie, txstate); + if (ret =3D=3D DMA_COMPLETE) + return ret; + + spin_lock_irqsave(&chan->vc.lock, flags); + idx =3D dw_edma_core_ll_cur_idx(chan); + if (idx !=3D chan->cur_idx) { + chan->cur_idx =3D idx; + + dw_edma_ll_clean_pending(chan, idx); + dw_edma_start_transfer(chan); + } + spin_unlock_irqrestore(&chan->vc.lock, flags); + + /* check gain because dw_edma_ll_clean_pending() may update cookie */ ret =3D dma_cookie_status(dchan, cookie, txstate); if (ret =3D=3D DMA_COMPLETE) return ret; @@ -545,26 +603,20 @@ dw_edma_device_prep_interleaved_dma(struct dma_chan *= dchan, =20 static void dw_edma_done_interrupt(struct dw_edma_chan *chan) { - struct dw_edma_desc *desc; struct virt_dma_desc *vd; unsigned long flags; + int idx; =20 spin_lock_irqsave(&chan->vc.lock, flags); + idx =3D dw_edma_core_ll_cur_idx(chan); + if (idx !=3D chan->cur_idx) { + chan->cur_idx =3D idx; + dw_edma_ll_clean_pending(chan, idx); + } vd =3D vchan_next_desc(&chan->vc); if (vd) { switch (chan->request) { case EDMA_REQ_NONE: - desc =3D vd2dw_edma_desc(vd); - if (desc->start_burst >=3D desc->nburst) { - dw_hdma_set_callback_result(vd, - DMA_TRANS_NOERROR); - list_del(&vd->node); - vchan_cookie_complete(vd); - chan->ll_end =3D desc->ll_end; - } - - /* Continue transferring if there are remaining chunks or issued reques= ts. - */ chan->status =3D dw_edma_start_transfer(chan) ? EDMA_ST_BUSY : EDMA_ST_= IDLE; break; =20 @@ -585,6 +637,8 @@ static void dw_edma_done_interrupt(struct dw_edma_chan = *chan) } } spin_unlock_irqrestore(&chan->vc.lock, flags); + + dw_edma_core_ch_doorbell(chan); } =20 static void dw_edma_abort_interrupt(struct dw_edma_chan *chan) diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index fd4b086a36441cc3209131e4274d6c47de4d616c..94d49f8359b99a9b0f8ca708edf= 81ca854dff4c2 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -108,6 +108,8 @@ struct dw_edma_chan { enum dw_edma_status status; u8 configured; =20 + int cur_idx; + struct dma_slave_config config; }; =20 diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index edc71a4dbc798386508e15f44e85c23e7e50f2ee..bb9a1682f943dafef28bcf52ab8= 3f3485068f8ed 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -499,7 +499,6 @@ static void dw_edma_v0_core_ch_doorbell(struct dw_edma_= chan *chan) =20 dw_edma_v0_sync_ll_data(chan); =20 - /* Doorbell */ SET_RW_32(dw, chan->dir, doorbell, FIELD_PREP(EDMA_V0_DOORBELL_CH_MASK, chan->id)); } @@ -517,6 +516,27 @@ static int dw_edma_v0_core_ll_cur_idx(struct dw_edma_c= han *chan) if (!val) return -EINVAL; =20 + /* + * DMA engine looks like have hardware bugs, Doorbell will be missed + * if DMA engine running, so last update descriptor have not fetched by + * DMA engine, so DMA engine stop. + * + * Most like issue happen at + * + * DMA Engine | SW + * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + * 1 send Read req for LL + * 2 update LL + * 3 doorbell + * 4 *Missed doorbell* + * 5 Get old LL data + * 6 DMA stop + * + * Workaround: Push doorbell again when found DMA stop. + */ + if (dw_edma_v0_core_ch_status(chan) !=3D DMA_IN_PROGRESS) + dw_edma_v0_core_ch_doorbell(chan); + return (val - (paddr & 0xFFFFFFFF)) / EDMA_LL_SZ; } =20 --=20 2.34.1 From nobody Sun Feb 8 18:24:07 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013030.outbound.protection.outlook.com [40.107.159.30]) (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 255ED366DD3; Fri, 9 Jan 2026 20:14:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989659; cv=fail; b=TZWfbnFWftIJbW7v9PuGbB2Z9vrikiEbHcK64ZPRMtt6WJcL6/w8BAMAHU6QbbjOrduBzzfSHDFAaAt6kddFF6OtDy7twpz/QKZ7+cU5i8nsgMB403yMR98po197LokSM+fBuPFUd+0HPSs2JuQWkFsCQtz5+pnonsD7me6LLsk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767989659; c=relaxed/simple; bh=YSZ0p06OajOfaZljT0C5X0e+QmJ7Iw3Sj84MQU3Ifg4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=FZkvm8QOJJikUZ8nlnoeFoHVznZOpTEhlyOPEKNUhv0iaJeX/NOSFmgD4xmll7DazxKrelU5iITRedBFj+TkVa0rK/iPjsfmMtZ3G5jcbPSrFghRee2dzbadcdfOJuzdj9db8QWKB8emTsyWBrSFerhCTm5rvVCtOwtQw38hvBg= 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=F538i7ce; arc=fail smtp.client-ip=40.107.159.30 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="F538i7ce" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hk7tu3Fqj4oaGOG04c32no9JxgMWUg/QXSSv4ls+yiej593qRe9UEmkGvUjdyMatdrJQ9CZep/uztc7zDfmodVYYdLsseEtIqm+WV+ayfLgIQjgPmoU5s57ak84HntfoStsKo4zssLym5FqJqQGwxJuMlDAo2VoKbe27odg+seDYLvy0SEJgnSON2JJW5xfOT3hGkfP8ufWurBn8gkXoOdJIZxrFejcstJ4ppX4enQQfniX1JAUU/nsdA51sSjy50RssbRST6sc6Pdj313bdTkOvsUruR34dFNtMgP8a2Aea/tEDAurbVqZcJRY0eddrApJwH4EqQnVJ8xj/qZcjzg== 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=tCsFumrSQGRZ+YEeVjasmy+WcbcHdpjtrrzEyMZ2b2Q=; b=BVAOXHHnz2MOVrGgcppbnrBvYvexx7nd6Z98hwY3XBNCaZX5PyVQb1ALd8Mqh5fXAncN8+XmaBza6E8HtmBJMdPo3vzol8Q4OFi3dQjtMCs8xAXbEr8VzvyPf/iSvlwDbhg9iG5yF8WI3QC7tQ6cillH6pEKwAURy0AvoAD6rW1BuYNI22bTc4pXYjHenAJQyMkcaBnFxE9D3+fndnzYd1v/Knvv5qlB6JJ01qV2tGAhmNdRKvWr2FGeudv1LVE76B4omz4gfNTgPicalKK2fJMYOI61roBar73baLJGXLBqWeAC3WcR0g0Mowzm7jm8IWQBJPKwedDjr8xSezj8eQ== 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=tCsFumrSQGRZ+YEeVjasmy+WcbcHdpjtrrzEyMZ2b2Q=; b=F538i7ceWZDVRykcWHhVr+F6bSCgfDlzBKtFdaDMFDhmmD4rIXk8p9ASvB0QSLRne1/xX6T1CLqTnmiqH6v52scq1x+e+yhObgaHP7CFZPISWdjIUlSE5hz43B7RQh90O26EWiJDb++A/gs3Mm8NJ9VWUErSJx7b4ZJtxXHITxCnIABGWHSSsiSZJYCOwjR8dvn6M3AXHpaq1gWqSdyY39sS3wSpTtdNuV96fqbc8KMBDawQ+eFOmxmXsnmlQQe31W8885Ov/B3HIBw8B+nGsxhLvzO/P1u7kB1UXA5Zvw2AEGVFGVnt/qfJCM6I4JAJ9jJFUjNnvg4ME8dhNLYBwg== 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 PAXPR04MB9106.eurprd04.prod.outlook.com (2603:10a6:102:227::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.5; Fri, 9 Jan 2026 20:14:08 +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.9478.004; Fri, 9 Jan 2026 20:14:08 +0000 From: Frank Li Date: Fri, 09 Jan 2026 15:13:29 -0500 Subject: [PATCH RFT 5/5] dmaengine: dw-edma: Add trace support Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260109-edma_dymatic-v1-5-9a98c9c98536@nxp.com> References: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> In-Reply-To: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com> To: Manivannan Sadhasivam , Vinod Koul , Gustavo Pimentel , Kees Cook , "Gustavo A. R. Silva" , Manivannan Sadhasivam , =?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, Damien Le Moal , imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767989623; l=8053; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=YSZ0p06OajOfaZljT0C5X0e+QmJ7Iw3Sj84MQU3Ifg4=; b=AkURRH9GgUTTiSrhja/s8JZHlE5ONAgrqktt94Rn62cqd5YNkupfYji7r1tJ3sBwqH7ObGnUO mzkNc6y3RYjCa4SGYUaxRCA+vcdnHyWYJhb4sc0MnfDYPJFErfr5lOb X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) 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_|PAXPR04MB9106:EE_ X-MS-Office365-Filtering-Correlation-Id: a56d3496-d3a0-4c49-3576-08de4fbba547 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|19092799006|7416014|376014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cHJWeXJTWGlsc2diWjkrb0tCMEZ3QmJlNjkyVzRnRXR3UnR6YUFLMUc0NG1a?= =?utf-8?B?NHgra1dCZlpVQUFOaFc3U3h5U2o0QkFWVnYxWjlJdlRZYUxQbWJ2bm9iZjg5?= =?utf-8?B?MVVoQXF2MHRJa1JBdlN6STlZSlNFWnB2N21reWJiRlhoR3l1YWdZQTZ6b1BR?= =?utf-8?B?R05ZdUl1bGx1K2R4MXBuQjA3RFhTdkMrVVhURDRZMzd0Vmt4ZWdHVWoxVGFG?= =?utf-8?B?K21kWnZkLzNteWxmU1QvQ3RjdklSeklpdU5uNnN1YllxdlVXZVlWdkt0TURI?= =?utf-8?B?ekFYQ2tBWlRLY25KOFJ3ZWJ0NEdpUGZ4bXBIcVNvd05ncDZzODM4MEx0RFI1?= =?utf-8?B?dm1FL2doU2hINGxEaHhEbTZkbGZicnI3TUV1Tmp6cFIydzV6VDJEZnZHVGZu?= =?utf-8?B?SGoyVU9EUm01WkM4Y0QxZDNnbWw1aTVudUl6SCtic1NFYlV5KzdKTWRPVUIw?= =?utf-8?B?V09jNkxwWFY5N2FReXpIUXIreVp1RGlMa3Z4TnM0MVVuWVI4eHdSc3ljNkd5?= =?utf-8?B?aXBPWm1KVjRTVmpING56blNqWHZWdm5WcGUxYWNhQ1crQ2pVZmFSRUhNaWVl?= =?utf-8?B?bGNmeWw3dXppWGN1K1BaZ2dRT1RSV2paM3J3bCtHZUpLVkd1eUIzQk4zWW5q?= =?utf-8?B?RDlPdnpienFzNHRxSml0TDZ4RitiWUlhVnNKOCsxbU9oZzI5b0psQUxrN3FB?= =?utf-8?B?VXZsT2txeWw4Ung4RmlsQWt4a0s5U05oZXR6MzdHOUFqcTJSWXphSUVUdkkr?= =?utf-8?B?bFhJdzJJQlRvV3hGSGxDZUFuWW9Ba0JCNU45bkFCa3hoSlBEME95YUFyRmd4?= =?utf-8?B?Rnc5bHpyZHkyZDBJdyt6VDVOcGlxM012YjBBRUUzNm1tQ3FIVEhZL0J5T1lS?= =?utf-8?B?WjFvS0R3WHErZzZ4Znk1ZmZaWG1sTU5WWFlTQ3FpZUxza1hTN3RMeEF1ekNW?= =?utf-8?B?bG1IR0F6VkNaWDN5NFpOQkN0WlJUM1lDaEVOOUJNeHZIMGY2ZXdIZGUzcjFl?= =?utf-8?B?a2pDQndGV2crdTNOcENCRFpoTmNNSGkyWm9pOFpiRms3dXdkTTZ6c2NEMWtF?= =?utf-8?B?YTAwamU5emQxU2F4eVBiQmQyNWZkaUZhUGcvNWwwaU5xWis3Vy9VM2J5ZlA1?= =?utf-8?B?aHYwMUFWSXBDR1M2UDBORG9scldzbHdxRFVKTnR2ZGpxTGdBQXNpaHU1UGVK?= =?utf-8?B?Tm5JN29qNmhJVUxwbFhqVHp5MFFTZ2QzemlpNkVtdXAvTkwzbkpwcFBJRWpj?= =?utf-8?B?RWJ1ZW9LVHRiMHhJRHN5eDQ1bUp5S2RmbTlvY3VkQWd3KzRvcWlvSzJ0QUVq?= =?utf-8?B?eGNaRTMrR3M2OTNiQVlrWGhBaDBvVmhTcmEvbWFkWWlId1JUVkwyaUR4dldQ?= =?utf-8?B?RHBYbEVlTnZqV0hXY2JldUpMZ01LMU42UTVMV3A0RDNhbWk2Rnd6S3NiSWZK?= =?utf-8?B?WVQ5Z3BEUVdSVVNsUVBzdGllZ3JnK212TWdmWlNNVjFtZUxKOVYzdXpZZ3RZ?= =?utf-8?B?S1NZeXQ2aHU1cEhjUUcySGt0blBSeVlxRk8wYm8yell2R1dueE1CQnVWSG5X?= =?utf-8?B?QkJtT2FobFdWR3JiS3hWWThUTEtMZmZscDFIS0hJa0p1SFhZMTcxNzcyVE1J?= =?utf-8?B?L3hVQmRRazk4SVpka0Z1NldRanN3R2UxWFRzdFJDeXY3MGxIK0wrNEtTUTlG?= =?utf-8?B?S3k5OXFhdHVYbWhnK3Z4c1V3Y1ZqSFVSWkJNMmxyVHUvcTEwbXZsRHdiNlBH?= =?utf-8?B?blN0Z3F3cldraVNRNW10TWMrRUlPVFdQdFVmRituNjJwbzVhbXBzc2xBZS9C?= =?utf-8?B?RHBBTk9yVnMyMnhGQkRHK0RVdWJnWURmTmszQU9SYkRZbng3aVRUSkFudHJn?= =?utf-8?B?MUVHZkRHcW1vcmdWRWpQMUU0WE1haUs0dmZ6UDVCbXhZeTlON09EK1AweXlj?= =?utf-8?B?ZEQveWt0eU9rZkRuOHR6K1hpVDF3by9JUXVzSG1Fa2hJUkh5YzhyZURXaWRC?= =?utf-8?B?aTZQMnU3MlhTVGRIV1hsUjVGTjZDbzdQNXo2VGZ2bytaQit3MGEvTzJxWlVM?= =?utf-8?B?YkxjR3FPSEJnNmZLWEJBRC81SUYrUnJCWHQ4Zz09?= 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)(52116014)(19092799006)(7416014)(376014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RCtoSEdSd01SSlR0Z1RmL1YvVUFqU2F3QjcwV3ByVlVGeW9sZTBmRXhTK2lp?= =?utf-8?B?ck5SaGRmMVNhU0R0K1Y2UDFtVjFMOVprOFQ3VmxvWkptQUVZeTJQdHpwdU4w?= =?utf-8?B?b0FQZ2RTMFV0UW5sQVFaaTVON20reFpaTXp2MmZaOEE2R243bG5vNGhSd0lE?= =?utf-8?B?cjVyay9rY2tRMXNFalExalQxS0U3c29vbzFSZzBPenViYXZzbkpyTVV0WmU0?= =?utf-8?B?K2E3ZC9tdmtScXU5dTdlUUdhKyt2eDlyTndtaHJMM3FINFU1ZXhNSFBOTFh6?= =?utf-8?B?TkNRTlN3SEd0Q0NvcGhWMmFMQmFKV3F6MS91WFJCWXVyZHdsenEvZUFmYjlz?= =?utf-8?B?VUtqOUhieWp3TUgxRHJuOGJZTlpWbVhWK3IxbVVGZUFFemRIckFKVVhIVlVN?= =?utf-8?B?Q2ZiWDU1QWludlB4QkFKckYyK2hKRDNZaXlyckR6aFZLVWQydlhubUJtbHhK?= =?utf-8?B?NjV2alU0TzE1MGZFSWZPSW9xalBGT3o2cU10RXE4ejI0VHRTTE9qSG55MGEz?= =?utf-8?B?WXNlaThTZk5tS0Radld1b0hUd29EOEJjV2h6b2UwYmRlbXl6WVJQWi83NG5I?= =?utf-8?B?SUdVS1hsUmE0akEyNW1nK05oUWNNcDE1bjFTUStYTUZtcCthck03dGJEeUFy?= =?utf-8?B?bUk0di9uOGNpNDJBaXczMDNHcEM1Zks2TjBVVlkreHFFa2UyM3ZWTWVSZHhv?= =?utf-8?B?TE1teko0NHdhK3VEaVRCR1J1aVZuRFBqdWQ5aTkrQm95T2dsL2NvYmtpMGRB?= =?utf-8?B?R2ZTeTJXTkl6bEw2YkEwOEdkT0lHSmExRXF2OU4vdGFoMXdCblJxaW01ZnJ2?= =?utf-8?B?bXFzYTdFRGFPeGtnNzdiWUdpT0FFajZLWlVHeFgwWmFuTWZmTlV6NE9VbnlD?= =?utf-8?B?MGdGaC8wNGFaaVk2RTM3aEloanFha2ZBV2hhaW51V25yUXpVNnNscTZXTmlp?= =?utf-8?B?Q1BLbk1LNTdta0tZVG9laDJaL2duTGRidWNSRlIwSmNvb0N6MGJOWmN4SWFU?= =?utf-8?B?ZWYvdEx2Wjl4S1dhblhtbDhObFdpV09BTE1PRW1TSVdIeDV2TUc0K2p4aXUv?= =?utf-8?B?RWRvQWdQNjlNb3BXbjRVZy9KNE91S3QraXhaZkFuQVNSSUlOWER4NDRpMVBi?= =?utf-8?B?UHkvUS9DSXFERXNsSlY0NUxUekNTdUlaVDhxT2pHajFPTTVyL3pCVzl5eGFk?= =?utf-8?B?SXdtRXAwTEZLQ2Erb083RW9tNnE3WVpsQlFkTVVjVEZ4dXljQkY4dnZ3M0dn?= =?utf-8?B?REVRSElQYXlkck5DODlhZXJORHZVemtqU0JNL1FRQ3g1aUlmZUtBbCtnZk04?= =?utf-8?B?TXN1WGxrUnVJVWdIaG4xalhiYjJrSDdVRCtDT0RYTjdtbm5IRmpPQVdmR2sz?= =?utf-8?B?bitCTmFuL3prTGVlWk5CaVQzMjYvdWhETTFhbVNCbUpJUFcxT2lSNFg0VXdQ?= =?utf-8?B?dzF3YlAvWHVDb2c3aVZIenJTR1VidXBnS3pVN2F0RnQrS1hhd2NCczR3S1hm?= =?utf-8?B?UzVvNVlUREVVdXppZVpmaUxqWGFOcmhFQnk2SGZnOTU4c2lhMnl0dUJaR1V5?= =?utf-8?B?ekQwRm5ERDN4RjZISVJxeFFVMUJsYkxSNzFTaHk1ekNqcFdSNVFRT1FWUGk5?= =?utf-8?B?M0pIdUgxSW1ZREdSMHQvS0NuVjA3bi9OVHJEKzRnNzF4d0YrdkNHSVFISU5p?= =?utf-8?B?bmxCZmpiandOcFhGVW9CNGtvSHhBYzVyVHZEeE44emFRMEFiYUFMR3RhUE9r?= =?utf-8?B?YWQrTTZJeVJLSmpURFRSamNqeTl2aXJOazZ2dzZjbzF6RTdaRmpEditwUlFy?= =?utf-8?B?NlZNTXVUUm1oZjhtLzJieEEvaVJDV1VlaGU1V0xDT2pmd3RuRXE4RkpKODZK?= =?utf-8?B?M2N3cHd5NDBrQ0l5THF6bEtLd1BIa254OEswVFZ6RWlNVkMyWllvSkpweXc1?= =?utf-8?B?dlR1czBKaXNLaGx5Z0VMYVJjODY0UlRuV1VrazkxU01OMkZEdnRvSXZkbkZS?= =?utf-8?B?cmFaTUVibDlhMm11TjJQUUhldnZJV2VTZ3M0ckFzOStMQjFwaW1QQzY4MEVU?= =?utf-8?B?b05pVm5Fcnkvb2pqb05pay9PcFV5eitqVXZpRjFPbmVuNkdkY2FodmtMNktx?= =?utf-8?B?K0t6cHJCWHFrc09EVHhJT2wveWQ4bERWNnJNa0Vkd0I1RGJVVW42LzZIQkNV?= =?utf-8?B?UXNsVFNBZUtONkJSTDQ3cFZ3TjJnY241WnJCL0kxcTd5QWduQTdSb3lnTlR1?= =?utf-8?B?aTFPSnJPQnFxQXg5aUt4aFlpVzZBVkpDNU1ESmhIRnpIaXIxalNHY3RTc1h5?= =?utf-8?Q?KhgR04PimrMVXhCTqc?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a56d3496-d3a0-4c49-3576-08de4fbba547 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8951.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 20:14:08.4720 (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: vUa7ivKZn5zVqGCzL6YKdpEr2rwUDH5NGmrZHS4n/CpPSBGooEEbXNBFr6jxQ7f9intRX+TUNdhAGbnSciuwGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9106 Add trace support to help debug eDMA problem. Signed-off-by: Frank Li --- drivers/dma/dw-edma/Makefile | 3 + drivers/dma/dw-edma/dw-edma-core.c | 12 +++ drivers/dma/dw-edma/dw-edma-core.h | 2 + drivers/dma/dw-edma/dw-edma-trace.c | 4 + drivers/dma/dw-edma/dw-edma-trace.h | 150 ++++++++++++++++++++++++++++++++= ++++ 5 files changed, 171 insertions(+) diff --git a/drivers/dma/dw-edma/Makefile b/drivers/dma/dw-edma/Makefile index 83ab58f87760831883bcfad788306e1722634a83..3e31e7d92f3ecb577136bbb0e43= 0801b6f8ff2b3 100644 --- a/drivers/dma/dw-edma/Makefile +++ b/drivers/dma/dw-edma/Makefile @@ -1,9 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 =20 +dw-edma-trace-$(CONFIG_TRACING) :=3D dw-edma-trace.o +CFLAGS_dw-edma-trace.o :=3D -I$(src) obj-$(CONFIG_DW_EDMA) +=3D dw-edma.o dw-edma-$(CONFIG_DEBUG_FS) :=3D dw-edma-v0-debugfs.o \ dw-hdma-v0-debugfs.o dw-edma-objs :=3D dw-edma-core.o \ dw-edma-v0-core.o \ + ${dw-edma-trace-y} \ dw-hdma-v0-core.o $(dw-edma-y) obj-$(CONFIG_DW_EDMA_PCIE) +=3D dw-edma-pcie.o diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 5aacd04bd2da4a65aabec48f6631f6f8882eecfd..339e372eb8cf60c3baa0de3e357= 6865e27d91716 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -111,6 +111,12 @@ static void dw_edma_core_start(struct dw_edma_desc *de= sc, bool first) chan->ll_head, chan->cb, i =3D=3D desc->nburst - 1 || free =3D=3D 1); =20 + trace_edma_fill_ll(chan, chan->ll_head, + desc->vd.tx.cookie, + desc->burst[i].sar, + desc->burst[i].dar, desc->burst[i].sz, + chan->cb); + chan->ll_head++; =20 if (chan->ll_head =3D=3D chan->ll_max - 1) { @@ -141,6 +147,8 @@ static int dw_edma_start_transfer(struct dw_edma_chan *= chan) =20 desc =3D vd2dw_edma_desc(vd); =20 + trace_edma_start_desc(desc); + if (desc->start_burst !=3D desc->nburst) { dw_edma_core_start(desc, !desc->start_burst); ret =3D 1; @@ -193,6 +201,7 @@ static void dw_edma_ll_clean_pending(struct dw_edma_cha= n *chan, int idx) DMA_TRANS_NOERROR); list_del(&vd->node); vchan_cookie_complete(vd); + trace_edma_complete_desc(desc); chan->ll_end =3D desc->ll_end; } } else { @@ -348,6 +357,8 @@ dw_edma_device_tx_status(struct dma_chan *dchan, dma_co= okie_t cookie, } spin_unlock_irqrestore(&chan->vc.lock, flags); =20 + trace_edma_tx_status_info(chan, idx); + /* check gain because dw_edma_ll_clean_pending() may update cookie */ ret =3D dma_cookie_status(dchan, cookie, txstate); if (ret =3D=3D DMA_COMPLETE) @@ -609,6 +620,7 @@ static void dw_edma_done_interrupt(struct dw_edma_chan = *chan) =20 spin_lock_irqsave(&chan->vc.lock, flags); idx =3D dw_edma_core_ll_cur_idx(chan); + trace_edma_irq(chan, idx); if (idx !=3D chan->cur_idx) { chan->cur_idx =3D idx; dw_edma_ll_clean_pending(chan, idx); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 94d49f8359b99a9b0f8ca708edf81ca854dff4c2..ecc08dc0d34f4a86cc739dd12a1= ce46ace58045c 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -140,6 +140,8 @@ struct dw_edma { const struct dw_edma_core_ops *core; }; =20 +#include "dw-edma-trace.h" + typedef void (*dw_edma_handler_t)(struct dw_edma_chan *); =20 struct dw_edma_core_ops { diff --git a/drivers/dma/dw-edma/dw-edma-trace.c b/drivers/dma/dw-edma/dw-e= dma-trace.c new file mode 100644 index 0000000000000000000000000000000000000000..2620ad61a9436a8d21b2408f361= 3c585fba0d9bb --- /dev/null +++ b/drivers/dma/dw-edma/dw-edma-trace.c @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 + +#define CREATE_TRACE_POINTS +#include "dw-edma-core.h" diff --git a/drivers/dma/dw-edma/dw-edma-trace.h b/drivers/dma/dw-edma/dw-e= dma-trace.h new file mode 100644 index 0000000000000000000000000000000000000000..3be77b42b04947407536523d153= 5d1eb7d9bdf71 --- /dev/null +++ b/drivers/dma/dw-edma/dw-edma-trace.h @@ -0,0 +1,150 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2023 NXP. + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM dw_edma + +#if !defined(__LINUX_DW_EDMA_TRACE) || defined(TRACE_HEADER_MULTI_READ) +#define __LINUX_DW_EDMA_TRACE + +#include +#include + +DECLARE_EVENT_CLASS(edma_desc_info, + TP_PROTO(struct dw_edma_desc *desc), + TP_ARGS(desc), + TP_STRUCT__entry( + __field(u32, nburst) + __field(u32, start_burst) + __field(u32, ll_end) + __field(u32, cookie) + __field(u32, id) + __field(u8, dir) + ), + TP_fast_assign( + __entry->nburst =3D desc->nburst, + __entry->start_burst =3D desc->start_burst, + __entry->ll_end =3D desc->ll_end, + __entry->id =3D desc->chan->id, + __entry->dir =3D desc->chan->dir, + __entry->cookie =3D desc->vd.tx.cookie; + ), + TP_printk("chan %d%c desc %d, nburst %d, start_burst %d, ll_end %d\n", + __entry->id, + __entry->dir ? 'R': 'W', + __entry->cookie, + __entry->nburst, + __entry->start_burst, + __entry->ll_end) +); + +DEFINE_EVENT(edma_desc_info, edma_start_desc, + TP_PROTO(struct dw_edma_desc *desc), + TP_ARGS(desc) +); + +DEFINE_EVENT(edma_desc_info, edma_complete_desc, + TP_PROTO(struct dw_edma_desc *desc), + TP_ARGS(desc) +); + +DECLARE_EVENT_CLASS(edma_ll_info, + TP_PROTO(struct dw_edma_chan *chan, int idx), + TP_ARGS(chan, idx), + TP_STRUCT__entry( + __field(u32, head) + __field(u32, end) + __field(u32, total) + __field(u32, index) + __field(u32, completed_cookie) + __field(u32, cookie) + __field(u32, id) + __field(u8, dir) + ), + TP_fast_assign( + __entry->head =3D chan->ll_head, + __entry->end =3D chan->ll_end, + __entry->total =3D chan->ll_max, + __entry->index =3D idx, + __entry->completed_cookie =3D chan->vc.chan.completed_cookie, + __entry->cookie =3D chan->vc.chan.cookie, + __entry->id =3D chan->id, + __entry->dir =3D chan->dir; + ), + TP_printk("chan %d%c head: %d end: %d: dma cur index: %d, complete cookie= : %d, cookie: %d\n", + __entry->id, + __entry->dir ? 'R': 'W', + __entry->head, + __entry->end, + __entry->index, + __entry->completed_cookie, + __entry->cookie) +); + +DEFINE_EVENT(edma_ll_info, edma_tx_status_info, + TP_PROTO(struct dw_edma_chan *chan, int idx), + TP_ARGS(chan, idx) +); + +DEFINE_EVENT(edma_ll_info, edma_irq, + TP_PROTO(struct dw_edma_chan *chan, int idx), + TP_ARGS(chan, idx) +); + +DEFINE_EVENT(edma_ll_info, emda_terminate_all, + TP_PROTO(struct dw_edma_chan *chan, int idx), + TP_ARGS(chan, idx) +); + +DECLARE_EVENT_CLASS(edma_log_ll, + TP_PROTO(struct dw_edma_chan *chan, u32 idx, u32 cookie, u64 src, u64 des= t, u32 sz, bool flag), + TP_ARGS(chan, idx, cookie, src, dest, sz, flag), + TP_STRUCT__entry( + __field(u32, idx) + __field(u64, src) + __field(u64, dest) + __field(u32, sz) + __field(u32, id) + __field(u32, cookie) + __field(bool, flag) + __field(u8, dir) + ), + TP_fast_assign( + __entry->idx =3D idx, + __entry->src =3D src, + __entry->dest =3D dest, + __entry->sz =3D sz, + __entry->id =3D chan->id, + __entry->dir =3D chan->dir, + __entry->cookie =3D cookie, + __entry->flag =3D flag; + ), + TP_printk("chan %d%c %d [%d] %c src: %08llx dest: %08llx sz: %04x\n", + __entry->id, + __entry->dir ? 'R' : 'W', + __entry->cookie, + __entry->idx, + __entry->flag ? 'C' : 'c', + __entry->src, + __entry->dest, + __entry->sz) +); + +DEFINE_EVENT(edma_log_ll, edma_fill_ll, + TP_PROTO(struct dw_edma_chan *chan, u32 idx, u32 cookie, u64 src, u64 des= t, u32 sz, bool flag), + TP_ARGS(chan, idx, cookie, src, dest, sz, flag) +); + +#endif + +/* this part must be outside header guard */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . + +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE dw-edma-trace + +#include --=20 2.34.1