From nobody Mon Sep 28 19:22:57 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010030.outbound.protection.outlook.com [52.101.61.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 A617B47A86C; Tue, 18 Aug 2026 17:46:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.30 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075208; cv=fail; b=t1HHF3cMreKsVcprlpmhKxyquZUElO+zd+V4C32EOGhvYaTlFUE6H9l+jLbwe2d8uqCL2xkQpavnOMtNr61KbFCZHkKKU+VJgLlF35BrfBO9IMFI8bO1SS8r8gYwCWndLPHzyFK8sI4/o/R9cYoQIeP0LiFgfof/SEFaXLTTy/E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075208; c=relaxed/simple; bh=bHJ4MtHXufoYSvDvOaSQcw+1U2l4gWuNxj30FWHeOIQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lsDJwhIg3lmHPiOaaQAxrAod2CsXNNHsd5Dlrh9GVgjMPP3s92A+U7goNopSIAT0SF80bVSRpRQGJdIydFNiwcsBPHU6sKYAw7npKByVXM+WvFZjkWvIMHk/WZOVBtMSH1QWRTgXP4dq7J7oUUbyI7v4v9H7zk8XxYF4Ux89INA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=IgmphE8N; arc=fail smtp.client-ip=52.101.61.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="IgmphE8N" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I9fHAFUD5VO5Z+mhPAQDv61J6nUQaV+CVjkMt5VE9Ly2IVH/hwMf++/ubjBM4ErLju1sFaGRQVD6VeLzPQxj/zKcxfJhwSr7SWUC2UiRfY6bmHOjRPi0i0RRx0pTbOwTxBldhDIpwZs9CgY71HuUyKvhb+Jv90f9cZzKcwEmSDO8wDBhn7iaPZwSw1DmC4x/8Ex/quxkCSYY/AqoTLzNHlMMndTRSdGgkzCgI1tyrLqtzQ5ziLlQ8BhH078nhxG105IYP6RPfMpbBpEDusnagA4huR/ujshGHRMdRfgz4CmUNdbCtd/M4/YTZ6lanf2FA7UHzPcgh5/rSHo38DtgXA== 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=tNKvW+4WFtVgL6eduRiyC+7q+wV5EqmZb7e2tzVX1EA=; b=w+Io6UmyeVOivZ/MgAHrKYDI9DQ0tjDTAK4mImqw+03GmrFwam0Y/NxILeoo00nPrnS7yC0a0lzMhTlGgtxBNWw93oabw3YMaXT+tS1P1n6e8ZBle/KaJ2cKCsdmW2Ecfk3Ga5tzaGbmTSVZLm9YklMTI55/f7vd2ypcdQ4kfdH9mmdAL+raHO+ArlwPQYlbCMwXQkf1cYY9HOs/bSQHMEn88pQDFqUe4SYZKz2mQzsjn1xtc9O6GSio97UBksz3dLKqZTzPptCJjajTr8/+Yt5yHhxar5g9LM3mlpSTa0AWBGNk7lXOG6tZsI7dwMaCjZPzSErgiUQXt9Y/m2mGNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tNKvW+4WFtVgL6eduRiyC+7q+wV5EqmZb7e2tzVX1EA=; b=IgmphE8NpDkOHODxzTMT8Idc29AwN2q5t9e1Oe3OFxRpnY/OCGbiavrV1Tv416ocyz06vUSrfDOeFlasrbu2tLfGmhdpZJcGb0PangmV5s6DqinAobnSafQZraPyHrO+RrAu1akvUPzrgA79dxaurAleMnqonTelta5KbSOAc94= Received: from BN9PR03CA0219.namprd03.prod.outlook.com (2603:10b6:408:f8::14) by SJ2PR12MB8159.namprd12.prod.outlook.com (2603:10b6:a03:4f9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.8; Tue, 18 Aug 2026 17:46:39 +0000 Received: from BN2PEPF000044A9.namprd04.prod.outlook.com (2603:10b6:408:f8:cafe::28) by BN9PR03CA0219.outlook.office365.com (2603:10b6:408:f8::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.8 via Frontend Transport; Tue, 18 Aug 2026 17:46:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF000044A9.mail.protection.outlook.com (10.167.243.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 17:46:39 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:46:15 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:42:02 -0500 Received: from xhdsneeli40.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.45 via Frontend Transport; Tue, 18 Aug 2026 12:41:57 -0500 From: Srinivas Neeli To: Vinod Koul , Radhey Shyam Pandey CC: Frank Li , Michal Simek , Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Suraj Gupta , Marek Vasut , Tomi Valkeinen , Alex Bereza , "Folker Schwesinger" , , , , , , Subject: [PATCH V6 1/4] dmaengine: xilinx_dma: Fix MCDMA descriptor fields based on DMA direction Date: Tue, 18 Aug 2026 23:11:48 +0530 Message-ID: <20260818174151.1608971-2-srinivas.neeli@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818174151.1608971-1-srinivas.neeli@amd.com> References: <20260818174151.1608971-1-srinivas.neeli@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000044A9:EE_|SJ2PR12MB8159:EE_ X-MS-Office365-Filtering-Correlation-Id: 400e9e04-ba0f-467d-60d3-08defd50a834 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|23010399003|1800799024|82310400026|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: uB1mSE1cNicMgBtJpqVLkQZzSH9X3/3ZyO0htGtQ8MvcQlxpapCbiqz/wOALv45c/eCklScfCWWRR/pHs22HMrsZO1KEGcdUl1yhvyb6p8AMy380La2I6r5PLyBtuxZ4g1XLsFQGGg6ymawLuld2KpKyarOYAN/PtY60cqQdf3wz0o/HMaaZdqvhBH1M0USruWk5J5zrLnSMkT2rmxOONtXbWLwGPUEM84zUQCnhZej/T7A5nikovpHeW08HwCHEO/APvgnifM8N85OCkx+JvO7thbUJb6oFM/syJqSh4nQLzE59zPp8oG65aAxhcT6DZN9v9FOcUEL+fV4uD+wRA7G4+yOHqnIi0k2Hfze6J0ioPQU5bhN1jSXjRXkXQFNFbPZGodfI4y2lIkHblTTbPAs4K0pTFX9TX1rjSSAyYp2s/gXWhCJGAcnX7NR/8XhDRLOWPrYTp/2WGh39zpPbnGEExOTYbEXVfZMQy/1//mg8f2ZlVbTSRnjIZBcOUVN7vvG2/hCQlbBTdNVxnwdzc6w5P1LaU0tXANASc9fhFXfwsu+gsNKbfuJMySDllUChc7ucklGBkSoii+0MvOnmWvN418Q48ANCBdK0YbbKjgHYNZWkolJguoAkldtyuUmL67mCSDLcPcMcLymy6TeA2Az+wZ6QCVatULFDE6LGMgd0FbhojzaSK3WNm+QPfma0KMGXOm92azrdkokR6Fcrag== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(23010399003)(1800799024)(82310400026)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /dpEfD9PMh0+QCPSoY7svGXND+nkPdJuE8WHtRuwSfnK++QJlV9HAMhEiR2eFjCiuBFe7rB7DGAtakN2LP2QWtAVy6fIexcmYCURThNAJfw/PWYuSG8lyO/KjF03Ct2sArOOVUY7ceyqD0N99EutAZZigk/wYMPP+CZzyxrJS2bVTXKseHSMvIEUHwIhqda7tmLJbXDx4s4hlGGuMShP2SnBKOheUF8KoHKzdblJlN+XNwyAp8ZEA+I5umY1/06O/7F6u9xAZvYSsdrcFr0s+S5r/LOhsMDeqzZguYfjLtOS009MRfE29SA3lRcv7prnuFcYmIuRNBv63TPex64b7qQJOyIHZzYIeJlqkSDQLQA67O8mbNmzben7+8e/Xcp69ffhQsoMdDRWPO/YQtOjjyT5TPaGJvJrHatSIq0Zn5wcxImMLo6QULXhQlON2OfN X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 17:46:39.3971 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 400e9e04-ba0f-467d-60d3-08defd50a834 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000044A9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8159 Content-Type: text/plain; charset="utf-8" The MCDMA BD format differs between memory-to-device (MM2S) and device-to-memory (S2MM) directions, but the driver was using generic 'status' and 'sideband_status' fields for both. This led to incorrect residue calculations when the hardware updates direction-specific fields. Refactor the descriptor structure to use unions with direction-specific field mappings, and update the residue calculation logic to select the correct status field based on DMA direction. This matches the hardware descriptor layout and fixes incorrect residue reporting. Fixes: 6ccd692bfb7f ("dmaengine: xilinx_dma: Add Xilinx AXI MCDMA Engine dr= iver support") Reviewed-by: Radhey Shyam Pandey Signed-off-by: Srinivas Neeli Reviewed-by: Frank Li --- Changes in V6: - No change. Changes in V5: - No change. Changes in V4: - Added Reviewed-by: Radhey Shyam Pandey. Changes in V3: - Renamed subject from "for MM2S vs S2MM" to "based on DMA direction". - Reworded commit message for clarity. - Added XILINX_MCDMA_BD_HW_SIZE macro and static_assert to verify descriptor size at compile time. - Refactored residue calculation to separate addition and subtraction operations for better readability. Changes in V2: - No change. --- drivers/dma/xilinx/xilinx_dma.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dm= a.c index bef2b031dba1..2319101be778 100644 --- a/drivers/dma/xilinx/xilinx_dma.c +++ b/drivers/dma/xilinx/xilinx_dma.c @@ -223,6 +223,7 @@ #define XILINX_MCDMA_IRQ_ERR_MASK BIT(7) #define XILINX_MCDMA_BD_EOP BIT(30) #define XILINX_MCDMA_BD_SOP BIT(31) +#define XILINX_MCDMA_BD_HW_SIZE 64 =20 /** * struct xilinx_vdma_desc_hw - Hardware Descriptor @@ -277,8 +278,10 @@ struct xilinx_axidma_desc_hw { * @buf_addr_msb: MSB of Buffer address @0x0C * @rsvd: Reserved field @0x10 * @control: Control Information field @0x14 - * @status: Status field @0x18 - * @sideband_status: Status of sideband signals @0x1C + * @mm2s_ctrl_sideband: Sideband control info for mm2s @0x18 + * @s2mm_status: Status field for s2mm @0x18 + * @mm2s_status: Status field for mm2s @0x1C + * @s2mm_sideband_status: Sideband status for s2mm @0x1C * @app: APP Fields @0x20 - 0x30 */ struct xilinx_aximcdma_desc_hw { @@ -288,10 +291,17 @@ struct xilinx_aximcdma_desc_hw { u32 buf_addr_msb; u32 rsvd; u32 control; - u32 status; - u32 sideband_status; + union { + u32 mm2s_ctrl_sideband; + u32 s2mm_status; + }; + union { + u32 mm2s_status; + u32 s2mm_sideband_status; + }; u32 app[XILINX_DMA_NUM_APP_WORDS]; } __aligned(64); +static_assert(sizeof(struct xilinx_aximcdma_desc_hw) =3D=3D XILINX_MCDMA_B= D_HW_SIZE); =20 /** * struct xilinx_cdma_desc_hw - Hardware Descriptor @@ -1015,9 +1025,11 @@ static u32 xilinx_dma_get_residue(struct xilinx_dma_= chan *chan, struct xilinx_aximcdma_tx_segment, node); aximcdma_hw =3D &aximcdma_seg->hw; - residue +=3D - (aximcdma_hw->control & chan->xdev->max_buffer_len) - - (aximcdma_hw->status & chan->xdev->max_buffer_len); + residue +=3D aximcdma_hw->control & chan->xdev->max_buffer_len; + if (chan->direction =3D=3D DMA_DEV_TO_MEM) + residue -=3D aximcdma_hw->s2mm_status & chan->xdev->max_buffer_len; + else + residue -=3D aximcdma_hw->mm2s_status & chan->xdev->max_buffer_len; } } =20 --=20 2.43.0 From nobody Mon Sep 28 19:22:57 2026 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013052.outbound.protection.outlook.com [40.93.201.52]) (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 A640C47ACF6; Tue, 18 Aug 2026 17:46:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075208; cv=fail; b=O22A3ssiUpOLXSP12QxWii9CNtKltCEGsqTBfhNBDLWYUxdO/xBxv9/eCvnKXgxn0TzcMBjF2hol6zKKTtR+WdfWWsqjVmYZJiIvRJX94nZjR+w2Hu43G6nyMWAn8Aob+FUXWsbHggXQmV9wdMk3Lp66s+lSbJI/d/uJac4L3Is= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075208; c=relaxed/simple; bh=uonH6DoWfv51rnsqDXxbvKoGPKq7Vu0eSfCJv+8jHB8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XuApCch+nmlueHeAJWslOSZ683zq6qoPTdpxhy/1IfN+KS0+S4KN6WcoDovQFhEAItRjjLjv6z68SzcUHJenYWEutQfW1u1qSTvfK63j+GbRtCACTR0dwQPU9gA7fRICpTvUY6Md56L9R3G612ShnUAUO1rUrgUl76d6j6fqEFU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=XkIj7uC0; arc=fail smtp.client-ip=40.93.201.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="XkIj7uC0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gT395s03mK5iqQZ0uY+bsQsLau3p0+uAj6eB1pxdADm8V658mPD3eqvdD3pcTK5685y2Fc11ckBLeyhlPiYjvvUFT6LC5e7s75QWldobXAExwB9tDS5lHJiwCGpkGLdM4ykUF5R0m2TLQS54CaMyTJXkTy5uVMVwmK+TXsBw50D7WPzb/cyJk3NOrB0azF4PiRLVBQCuJX/64zBcJIndNWC1evpszp3J129c+fW9BYvkfw2qtPZTdHkHe+dol8bXMHa2J84lb/FJl91UDhuWVdC3gYuxak1ZUlPf5Cxks56twD3Hq2akadHa1dgs1ycLnKFF/l6/tPi9KFfSVQ7SAA== 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=dXEMkjZfzJJFUgNCoT4YB6DpLRmaO3cR04O9m50VzrE=; b=RVf5KQ2QCQpuSBpnR5Iqy9AhQkC/mxkbCUAluKbHzI10H0Wfo/tzBFV5ROvsCp8fmSYaFoCHiz1Q/4CwA3z9vdKryS/rHuydfX0NSZlBq6A004eL/diwFW15yVzGBzLU3m/Na9puy4A8qBcRbZUSwiyHL8hLSR38+ny66D4su7DpGdAxjQLXuaO7WjkWAOri3+m5whoGVC8bFvdTl/jdS5i0/yTponXbvyzoCV2x1lNANJegkiYf+P/a1utTFj8g7NB6zjfzGLpuUpv1gwF83oCTxW80dOObHKbziwC+67CaHvHy2CyWXtFbEGArMMWLttEByrors3MuoQfkibOjLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dXEMkjZfzJJFUgNCoT4YB6DpLRmaO3cR04O9m50VzrE=; b=XkIj7uC0FBskABz3viE7ABxZ7UHYW5u7iF6KDhE0OsDFW+pH5Y2tRD1UD1AaWsMlI8kGbQssZ6seTRv/82P9GeBkivtbgzIfXIisACRFr16vhZRYxRE+Hey8almvuxch6jFz3INhL+78G/2BqWRDtQEAsou4n38HdEgMItObtp4= Received: from SN7P220CA0018.NAMP220.PROD.OUTLOOK.COM (2603:10b6:806:123::23) by CH8PR12MB9789.namprd12.prod.outlook.com (2603:10b6:610:260::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.8; Tue, 18 Aug 2026 17:46:40 +0000 Received: from SN1PEPF0002636A.namprd02.prod.outlook.com (2603:10b6:806:123:cafe::6) by SN7P220CA0018.outlook.office365.com (2603:10b6:806:123::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.8 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF0002636A.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:46:16 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:42:07 -0500 Received: from xhdsneeli40.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.45 via Frontend Transport; Tue, 18 Aug 2026 12:42:02 -0500 From: Srinivas Neeli To: Vinod Koul , Radhey Shyam Pandey CC: Frank Li , Michal Simek , Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Suraj Gupta , Marek Vasut , Tomi Valkeinen , Alex Bereza , "Folker Schwesinger" , , , , , , Subject: [PATCH V6 2/4] dmaengine: xilinx_dma: Move descriptors to done list based on completion bit Date: Tue, 18 Aug 2026 23:11:49 +0530 Message-ID: <20260818174151.1608971-3-srinivas.neeli@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818174151.1608971-1-srinivas.neeli@amd.com> References: <20260818174151.1608971-1-srinivas.neeli@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002636A:EE_|CH8PR12MB9789:EE_ X-MS-Office365-Filtering-Correlation-Id: 0788fdd0-8b8a-43f3-552b-08defd50a8da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|82310400026|36860700016|1800799024|376014|7416014|56012099006|10067099003|6133799003|22082099003|18002099003|11063799006|5023799004; X-Microsoft-Antispam-Message-Info: bPzKZelbYV1EZQ5/2AfT3b5Ube1tVZfDi0IvN2CP8rub4brSBW8M3ML6OEIWwY/fZU8noZ+VQqFyk1dWPrtreyN1k+lI6dWscOWLAB1MSJ4xWrMrrX15mDSDRV0AMB0mZB4YHPDxT2iuuI6k4cqHgBjOYrOlOFiS3A8Go7cw4BJdNX5HWb1i8gp+qLXUHDJ9RZtxqWZGVpjFn2pSh2UHOaLfK0+hQjtZTJOoa9JLw53hpe0tiqUh/V5VVfxYwoxvQtPVZFmS71Fcb99fazDsJdG1g8kZEuKP2z0cdSF7S/wgFtFAjTSzVSOQW62Rs8SimCvsPZpjwyCsggNzTmZ7tm+uIGjZAZEvxd83any7CThbrdhO4ApgBBzNOT30vgW/qTWJpW9jx8HURysrldMF2MfvGqUP+q8NosVW477d50meHbDv05RyXMmWXfDUW2CdxTLhMLanxSSJKJa/2AyBNjlVVSoH4E2lqH76tHexkpxfFEIevyJxL6/tDm43NyTdV2VCF0Mq+r5+CurIt7lIeZC2vCcNS+OP0sEYfgxi/d10twrUXnyLSyOGMI4zdyydM+ESLBwIbEBjX7B2Q9WtkZUcCKRVnlTQxc9OL7bodaTizZQ6eAQffRzAlr13St4bKPYw/x5X8FJq6x/BgSGeb2G7wSdxUTp1BrrCtIhV5sQyPM3lD7DUAn74L984pB7fhU1VEry5rz2rM5H8LAwTAg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(82310400026)(36860700016)(1800799024)(376014)(7416014)(56012099006)(10067099003)(6133799003)(22082099003)(18002099003)(11063799006)(5023799004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: T5aC1XmGzm6vNeacZLtsqtXyrObS2hrH3oNgsV5DWd+JYxcSn0C19fGaIEZ7mO6XGq96Ii0HqwJAtidZSewCF8IC1xe3ls8liU8fp1QgF1kzE4beFpuWHj7v/Tua7wZm6FTvqcWjS21osWkIVligDgST3h0nKwfcNg5BJHtbk/txkQioUG7q5UPUPGpR2A43ugzkU6hxulx9jpvZ0AFHS68veDCpWmY9RWrqqSKezD8HwdvBCinvy6QvLPozHD+NZ5MwxyoAzhIKiR/LfKt/c06l4rDj0i/HqiBY7riXiskUdYbcryI0dW+rk6ma6DGFkihObwWbsUK8rJjadlZD3+zgKUy0SRODJdQsUOAkl/2lN/Zl2GZ7/XE6sDTi+gO6jfhfvB54n9PgRihZEH/XxzJr4M9npoZv63zTrVJsqnm5LNB4J4o/hYPL363BUfrc X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 17:46:40.4918 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0788fdd0-8b8a-43f3-552b-08defd50a8da X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002636A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH8PR12MB9789 Content-Type: text/plain; charset="utf-8" In AXI MCDMA, xilinx_dma_complete_descriptor() walks the channel's active_list and unconditionally moves every entry to the done_list. The MCDMA IOC interrupt handler invokes this function on every interrupt-on-completion, but with interrupt coalescing (IRQThreshold > 1) an IOC interrupt may fire after only a subset of the queued descriptors have actually been processed by the hardware. As a result, descriptors whose completion bit is not yet set in the BD status were being reported as completed to client drivers. Add a check for the descriptor completion bit before moving entries from the active list to the done list, using the appropriate direction- specific status field (s2mm_status for DMA_DEV_TO_MEM, mm2s_status for DMA_MEM_TO_DEV). This mirrors the AXIDMA fix in commit 7bcdaa658102 ("dmaengine: xilinx_dma: Freeup active list based on descriptor completion bit"). Fixes: 6ccd692bfb7f ("dmaengine: xilinx_dma: Add Xilinx AXI MCDMA Engine dr= iver support") Reviewed-by: Radhey Shyam Pandey Signed-off-by: Srinivas Neeli Reviewed-by: Frank Li --- Changes in V6: - No change. Changes in V5: - No change. Changes in V4: - Reworded commit message to reference the AXIDMA fix it mirrors (commit 7bcdaa658102). - Added Reviewed-by: Radhey Shyam Pandey. Changes in V3: - Added Fixes tag. - Expanded commit message to explain the interrupt coalescing scenario and why the has_sg guard is omitted for MCDMA. - Changed local variable from 'bool completed' to 'u32 status' for cleaner status field access. - Simplified completion check logic. Changes in V2: - No change. --- drivers/dma/xilinx/xilinx_dma.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dm= a.c index 2319101be778..506ce1ec29bc 100644 --- a/drivers/dma/xilinx/xilinx_dma.c +++ b/drivers/dma/xilinx/xilinx_dma.c @@ -1784,6 +1784,17 @@ static void xilinx_dma_complete_descriptor(struct xi= linx_dma_chan *chan) struct xilinx_axidma_tx_segment, node); if (!(seg->hw.status & XILINX_DMA_BD_COMP_MASK) && chan->has_sg) break; + } else if (chan->xdev->dma_config->dmatype =3D=3D XDMA_TYPE_AXIMCDMA) { + struct xilinx_aximcdma_tx_segment *seg; + u32 status; + + seg =3D list_last_entry(&desc->segments, + struct xilinx_aximcdma_tx_segment, + node); + status =3D (chan->direction =3D=3D DMA_DEV_TO_MEM) ? + seg->hw.s2mm_status : seg->hw.mm2s_status; + if (!(status & XILINX_DMA_BD_COMP_MASK)) + break; } if (chan->has_sg && chan->xdev->dma_config->dmatype !=3D XDMA_TYPE_VDMA) --=20 2.43.0 From nobody Mon Sep 28 19:22:57 2026 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010053.outbound.protection.outlook.com [52.101.85.53]) (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 AB24D3A7F41; Tue, 18 Aug 2026 17:46:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075207; cv=fail; b=cPabfymESrbDUXJm11JHIN3z/ufV9JhYvUVk5kF4xC6mbwyrprnnNirD8jTd1QWNTw6OyelXPNs8iAQ8XkZkrC2/a2wzaIXF7UJQ3cX95GTyy2UBez16+R9tc4HyOHKhcXN6tQUXdTw7jsvbM64xyKOkGIH13qUT5HlT12UcZwE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075207; c=relaxed/simple; bh=xu0eqO2WkRRH//d65jHsioEG+meOnE4FkSw0RVI4eVI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BhlH8124FKvnct9ZuKwDRFhu0SYBGhRz5JHyWGDjBetHHOtdNd6Ax6lUtFTPixY9X+DmUCudah0S43Ee0OJTbqD0TduvDf1PH7LYwhkbfb2S7JAYgZBItzU0oI14YDTKdbmWw8/AGYupoBu3JgAiqf1WkUaqS466t5yk+wlqzJY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=m4O9PuYx; arc=fail smtp.client-ip=52.101.85.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="m4O9PuYx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oGljKOMs86DEc05f6kSE5j98wkbocVZAzUXzB+dMzKtit8aDEdHIDhaaq33mJYRojyVSzMdCr4Asfsp/Etzge+q76rTE1x6jGUS5xvRsBdp/aq/0qWEW1FlOWCBjFZdE86a8pWetYzFf8qXaVNcCT8+A0l1BlnlQn8Q+wWpvP4t8UT0K9rDdayM/uBE6e5hVaByJYTEvVlTkYWFoPNFhJiG03J6KU20G1H93qGNBtRdW499lFnDSShlCkbixOCfYU2ofWBgGTSBvT4pUCpwRl8Wmio1OopphhaCqU2YACnINcER+ST+raZWuJaEHr4DLGfkXRJ5eYcQvns8LtWHWxw== 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=5mwK0MuvwCiVh7Jq5G3rgYtA0P/2JIQwHfUdCMTPWak=; b=JdZEMCSaa11IoXuRocSaltQKEG8snMme2fFGHR46bivijDXtOeNWHO9opZXnItrwndM8QcLcs6gR9YLomGQFVXbwQwZV9yBvHPM1JGy6zS0FZAotUdIJgc+FLlGjgQl23Z2mEyKS1fRzWqdeLMDu3yEmqKQADca1zlfGyJ+lW6yx+Jn8zDPV/Sxd24rg1AnikxadJ8G7kDM47P82AXcmiABYQrCG60lJcU2KpGBETsfoEJqtdmCTXCP+TyO5fps9fSCwAk64FFqY7qcUMQ5T/Yc9me//h37lv8RcPimkEopaYuffyFUPQx6YKn1SVjToBrreDC3Ueom/lhrR7XByXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5mwK0MuvwCiVh7Jq5G3rgYtA0P/2JIQwHfUdCMTPWak=; b=m4O9PuYxTeqQJej6e6B/fLbunTHSRfgq7ci1rdCp+3iPD2tfX19K5GjUepYbzGO2clYJ/4QNLwFKO9VZAuWW4avYcLbARlKHkIKvRg+CyE8KqD10YTG5d/nbJ+jjovZcej/49CgS7e6LpuXKyv9HCZ0UYB5uwSlk8zuU0VhtncA= Received: from SA9PR13CA0074.namprd13.prod.outlook.com (2603:10b6:806:23::19) by MN6PR12MB8492.namprd12.prod.outlook.com (2603:10b6:208:472::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.8; Tue, 18 Aug 2026 17:46:41 +0000 Received: from SN1PEPF0002636D.namprd02.prod.outlook.com (2603:10b6:806:23:cafe::6d) by SA9PR13CA0074.outlook.office365.com (2603:10b6:806:23::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.8 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF0002636D.mail.protection.outlook.com (10.167.241.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:46:16 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:42:12 -0500 Received: from xhdsneeli40.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.45 via Frontend Transport; Tue, 18 Aug 2026 12:42:08 -0500 From: Srinivas Neeli To: Vinod Koul , Radhey Shyam Pandey CC: Frank Li , Michal Simek , Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Suraj Gupta , Marek Vasut , Tomi Valkeinen , Alex Bereza , "Folker Schwesinger" , , , , , , Subject: [PATCH V6 3/4] net: xilinx: axienet: Derive RX frame length from residue in dmaengine path Date: Tue, 18 Aug 2026 23:11:50 +0530 Message-ID: <20260818174151.1608971-4-srinivas.neeli@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818174151.1608971-1-srinivas.neeli@amd.com> References: <20260818174151.1608971-1-srinivas.neeli@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002636D:EE_|MN6PR12MB8492:EE_ X-MS-Office365-Filtering-Correlation-Id: fa72cd49-9ccb-4bc6-3be8-08defd50a8dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|36860700016|82310400026|376014|7416014|18002099003|22082099003|6133799003|11063799006|56012099006|3023799007|10067099003; X-Microsoft-Antispam-Message-Info: hby5yScmNCfzCHWWyRT4FE3TfYLKQDDmL5Lkhdy9i5LDhutCG+YfrTp453me9FM3rxgDFHuB1c2dD7IRy2UZ0SmSudxmQCPtBGuzmN0wnNkm5MtQObkg/lrhMsxibGLbXQWZo+jKqPU45QggoslOrUQzlpguBhJGDM2L4cVMDTQ1HqB0MsTirrKYPFiUIQ/s3vsT+jU319L09xtNd4YJGTOns0PmXyKNcH/DmSPV18DPVC02E1sgoUl2v9dI1kCKbNgDVJCt4d5EP7A2v7Dhb+j8i2tJWLFhwruPA/g7Ro0TBKh8RaIwGz+gnvIkEX6BQFAvgYXulwViZVdagYoRcSe+3XLgvwFkLNwU6ckQzBldVBCuIr+CKcdWeVg0CDPhAVIj8QB76XQ0CGFu9CZwmw39rjPFlq8Ge2weDtTyrmCY81xC9LKa4EU2BDVHW3oDlHaepSqEUj/S+X/Nh1K5YWoJ1wtJ9gOWKFwg7rZzchCboqbNbNIghgC6O4A/yz9p73DhHsG+AMA8pTOTJR3dAKzpSQ8klKRSpzlO6TN5p7wqiblK8tNhihjMZSbJiWiWeiKe72kn4Eg4dV0/n5d2UTqfYos1cio1GI943+jJiFr/M8j10JEaKNZxgZlms2XwEB7usMvL1SeoWQ3yB7eig2mHSHH9w78eqB8MppFrvFaqp9L7b1f5Tks4cstmoa7fK+YkIySkvoeLj3Uzg8LTBg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(36860700016)(82310400026)(376014)(7416014)(18002099003)(22082099003)(6133799003)(11063799006)(56012099006)(3023799007)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G/t91hHOxPFm30iImY3pKc65VAQoRh7gx0en39LFGX1bmeILhl/SMJPxWJHYkMvXfvwpdaV2K+wfcxERZuU6MEA58hDW/j4ihHQYypJ9ujaVc2cJsvLmg2hO16sAfkjPfmSMye77bWmWvyGd8/5mJsiNvhgevYPjVt2k/xEDvIPffmVloa9MADMpFa7ajyZj5VDi7k5WYaSD+8yv/DSZbsRagHTDyEt8FSpt7GiYRZjWX1RKiDSa0WkS50UHn8ynNXQdAE1je4KxBMWoC3Wwr8EGvlA3vHeSra6aKn3hUZXg6zRBxY6rzztMQdG7In6Cvje/KxJeoMAFICcmS1ZvEUe99dYbsZ7OpWF4xR4qZ6tS9vJhvnSmtRH2+xg0cY9/nT6kfBUQqVdfUHhU6hqJjGHTTxhr7Z1yAed+J9PAVsx9g1yTlagWtkd3AN4+lJvE X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 17:46:40.4811 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fa72cd49-9ccb-4bc6-3be8-08defd50a8dd X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002636D.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8492 Content-Type: text/plain; charset="utf-8" The dmaengine RX path derived the received frame length from the descriptor APP metadata. That only works when the optional AXI4-Stream status/control interface is present, because the hardware populates the APP fields solely when that interface is enabled. On designs without it the length read back is invalid. The AXI DMA engine already reports how many bytes it wrote into the buffer through the standard dmaengine residue mechanism. Compute the RX frame length as the posted buffer length minus result->residue, which is independent of the status/control interface and correct across all designs, including multi-descriptor frames where the residue is summed over the chain. Drop the descriptor metadata lookup, which was only used for this purpose. Detect a failed transfer from dmaengine_result.result instead of the metadata pointer return value, and remove the now unused LEN_APP macro. The transmit path is unaffected. It still passes APP metadata for checksum offload and derives its length from the skb. Reviewed-by: Radhey Shyam Pandey Signed-off-by: Srinivas Neeli --- Changes in V6: - No change. Changes in V5: - No change. Changes in V4: - Renamed subject to "Derive RX frame length from residue in dmaengine path". - Condensed the commit message. - Dropped the Fixes tag. Changes in V3: - New patch in this series. - This patch enables axienet to work on designs where the AXI4-Stream status/control interface is not present. By using the standard dmaengine residue mechanism, the driver no longer depends on APP fields being populated by hardware. - This approach replaces the V2 xferred_bytes mechanism (V2 patch 5/5), making the dt-bindings patch (V2 patch 4/5) for xlnx,include-stscntrl-st= rm also unnecessary. Both V2 patches are dropped in this series. --- drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/ne= t/ethernet/xilinx/xilinx_axienet_main.c index 1722b7038f34..f9252880f411 100644 --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -53,7 +53,6 @@ #define TX_BD_NUM_MAX 4096 #define RX_BD_NUM_MAX 4096 #define DMA_NUM_APP_WORDS 5 -#define LEN_APP 4 #define RX_BUF_NUM_DEFAULT 128 =20 /* Must be shorter than length of ethtool_drvinfo.driver field to fit */ @@ -1159,29 +1158,26 @@ axienet_start_xmit(struct sk_buff *skb, struct net_= device *ndev) static void axienet_dma_rx_cb(void *data, const struct dmaengine_result *r= esult) { struct skbuf_dma_descriptor *skbuf_dma; - size_t meta_len, meta_max_len, rx_len; struct axienet_local *lp =3D data; struct sk_buff *skb; - u32 *app_metadata; + size_t rx_len; int i; =20 skbuf_dma =3D axienet_get_rx_desc(lp, lp->rx_ring_tail++); skb =3D skbuf_dma->skb; - app_metadata =3D dmaengine_desc_get_metadata_ptr(skbuf_dma->desc, &meta_l= en, - &meta_max_len); dma_unmap_single(lp->dev, skbuf_dma->dma_address, lp->max_frm_size, DMA_FROM_DEVICE); =20 - if (IS_ERR(app_metadata)) { + if (result->result !=3D DMA_TRANS_NOERROR) { if (net_ratelimit()) - netdev_err(lp->ndev, "Failed to get RX metadata pointer\n"); + netdev_err(lp->ndev, "RX DMA transfer failed\n"); dev_kfree_skb_any(skb); lp->ndev->stats.rx_dropped++; goto rx_submit; } =20 - /* TODO: Derive app word index programmatically */ - rx_len =3D (app_metadata[LEN_APP] & 0xFFFF); + /* Actual length =3D posted buffer length - residue. */ + rx_len =3D lp->max_frm_size - result->residue; skb_put(skb, rx_len); skb->protocol =3D eth_type_trans(skb, lp->ndev); skb->ip_summed =3D CHECKSUM_NONE; --=20 2.43.0 From nobody Mon Sep 28 19:22:57 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012004.outbound.protection.outlook.com [52.101.48.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2BB891FECBA; Tue, 18 Aug 2026 17:46:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075207; cv=fail; b=g4khWcKQPi+icFO1B5McCX2pWJjqe6rbmwfgasslv5Vns8wvWkEbe3ezrWWf7/4FRW6s6z2rLlJzDbaZiFU2ACMXQ6BlNEzQ/4rr9ef7uIrZ8bgf0TZgMCA4lVzrIfWXQioMjq5P9JmNoamWxdfXl/zir1FvdUiTk7phy2UbjIE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787075207; c=relaxed/simple; bh=RByyzou4BR/O2lXguCk3mY6aLBm/6oBZC7OUermodRM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=idxkOo0ehnI6EXywKwTFdfrJWOJFJIlckQ4JHOJ5aw9qLb+2LItfWthxbhHQgfK0e/9NU9qhKv9TwMcwymzm7oiaxFrwLW2LEbYleZWqNseB7GtERdyic0/dRh3VoIzWYER7wi0F0JlZCBqW3d4RGCEo+Q1dzQBsctd3op3WgJo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=otBQIIbt; arc=fail smtp.client-ip=52.101.48.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="otBQIIbt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lmO7nr6zf7gWiK3n007tRuECLrMWJLLcoMdfK0VxS7vS/TcApiyvyYrAHO55RCbg6Jb2KqsMLC6Du1OVL+gmMkgWh50z1PT8PwNBclQ2j0AuVCRSPfW6lIW5td5qPEoBwrbi6JJpVmD4O28Gmjab6Q3Vk33DjNeHJMd6eOPb3H8Iila9jnsB1wZFAUwqso7QfX1wscYQW+HohAvZE9kTKYPSaYabpQWul9YK49FHpjWKo2gkjCy+AQH945k2Tyonbr93d+6OcfVt42+O7JluK1513OaOC/VxLBrN6X5mH7GwX84H6xWVEM5FZr10k5VQGHTQfaVY+SfsupY/E1gCfA== 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=KpmJJOTzRT5qcox1+ro838bJ8mpFNXjfWNhaRktsots=; b=vIk5FiPzju4Xea3EkAOjqJYm0J7gbQcIIA3NLJCkzo82XrN3Tx6BZyqRn++G1ECJnHzvUkYRSC97lHWZSIH9+zc+qWIdNtpIIc5UUHbrH40TYjKOb4WbohNS10WiTmJ6wlHRGrsLCtJ4ldLfrgyq4q+ksuUdL4aAnxX0/Mzv8WZIoED5mx8ToCxbH7wskeddXSefhlsSVQ/N4D0yuG0qSDCpbf3hVazD7sJWsgZ93pQxNKtpOmxMP9m2D9F8BiHtsBEV+/wGx4oaH7plidrxNy5FLHqlsbMluseYOt47DBjsymwulqQ+Q69QCxBSpHE5iepR5ge5do3VxqnQX1l4GQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KpmJJOTzRT5qcox1+ro838bJ8mpFNXjfWNhaRktsots=; b=otBQIIbtN+Q64I5FQHJx74+Xi9nX6W1S8CxGaPbMq20qkQylrfghJvuZv/62wwlUtzYV9INuzoSgIEk4pkF4UdZG3G/jBDBGZBcjISztOHd9crBPhOj38IgqtoL6h7Vjooga9sdjGvSDn828bOc9gwraJduIxuaoW8+lQDvNxXU= Received: from MN0PR03CA0006.namprd03.prod.outlook.com (2603:10b6:208:52f::26) by IA1PR12MB8588.namprd12.prod.outlook.com (2603:10b6:208:44f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 17:46:40 +0000 Received: from BN2PEPF000044A5.namprd04.prod.outlook.com (2603:10b6:208:52f:cafe::63) by MN0PR03CA0006.outlook.office365.com (2603:10b6:208:52f::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.8 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF000044A5.mail.protection.outlook.com (10.167.243.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.3 via Frontend Transport; Tue, 18 Aug 2026 17:46:40 +0000 Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:46:16 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 18 Aug 2026 12:42:18 -0500 Received: from xhdsneeli40.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.45 via Frontend Transport; Tue, 18 Aug 2026 12:42:13 -0500 From: Srinivas Neeli To: Vinod Koul , Radhey Shyam Pandey CC: Frank Li , Michal Simek , Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Suraj Gupta , Marek Vasut , Tomi Valkeinen , Alex Bereza , "Folker Schwesinger" , , , , , , Subject: [PATCH V6 4/4] dmaengine: xilinx_dma: Extend metadata handling for AXI DMA and MCDMA Date: Tue, 18 Aug 2026 23:11:51 +0530 Message-ID: <20260818174151.1608971-5-srinivas.neeli@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818174151.1608971-1-srinivas.neeli@amd.com> References: <20260818174151.1608971-1-srinivas.neeli@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000044A5:EE_|IA1PR12MB8588:EE_ X-MS-Office365-Filtering-Correlation-Id: c915818f-a1de-4340-7dc8-08defd50a8b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|1800799024|23010399003|376014|7416014|82310400026|6133799003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: KZb5s1N3eehNr3en/UJiCY4NEMKd2Q3bCu3tNU/pVpDC4S2P7jyLtOZfpJLl0NlxGZkEVuFFWBEiD8N/N8sNRxTygan0cbGmICMSH8k+gUm5nOaCMgKwg+VRtDb/b2jrtG6//YWf8fYiY/+uYWhrUwFsGHG0yU5OMdvKiZo/Im7IDxGsaXwkXahxvC9X0/4R/WwSA6czSJt8nthe6EtqZwbhrgJ83ZfMv/cjJVUNaDeMZfoFDP1PNzNJz51Uj8rl0vKeQi+vAJplG9wH4P7uY6mpEPEU4Hy8pH+XhkioUOk/y5w5w6cNOth3t6sCQUqhAed+TGyIXAjWmMtdv4NxTQcQCm6cIF4go1B7+Wsfpa1tdI7Jwb1RzO3WNIdCtxaJdRlCdiC1gbGsBaA/ltg3n8HxI5YMkIWlEI7/m2XW79yVAzRaNZJR2M20VbdTyfuOyk9v1kTSV67W06gbmTM3YLmcw4FgbAODF7tF+PDjUU7mXxzYkE88UWcBwwWdfGv5/yve+wwB2Qs374wEOlMWx2q4TDYBqLpm60IohLipWzsn27eGK4zOsifQu0/3vcxpghOqsNhcSff+hJ+meyJR7LfwnWXh7hercq7mC/hUG0UQexSBbaz6AveqaWkyY/9u3MC0YY25Nbu8zP6+3+OF78M7LFeBg1i2OWoTeekpJgiha2RQRYvafKsDbCzB/SKhUmEZgPsqVWnnqzocGIc83A== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(23010399003)(376014)(7416014)(82310400026)(6133799003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: l5omnvEVkBJzNWufeRyjQ1rrNixONvqGTk5duqekUwu2XmfXb5rXRzrzQ0IOVn/a7WR+AFnzW7WlwvtgsRQR3n4M1Msq3NugEkGtEbo063PWPFiEl9np5cbX4Z9qComrGc0719cN0OA7AEMEu+uz8i5ZStZUXhx/aoO0KMzFLpbm902OhXgDPqdjSwJM4/yp4LkYKGhmmZ1WUnyWwF/jEZ6bI6GjIpQViiTAMPN/SwYOA76MO6GTxQUBZY4wGYjdGs8nZe4G3P5Qm4M0ztjJ3iwIm88K4bIANuxGHaYj63XB/0LbYmOs5S/y0mYBjq2kjzLmRi2Ho6wmn6xxHK2O0qPXzvCakdBbwHAY9IWWMGn4f+3Gw0ZH5TlYKA64i2oWsdtTYhXWmO3Jt82t/aTULLfwphC+B0DgVBRb2sc1beh1X/jhATqVwMnYqlq2ulnV X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 17:46:40.2398 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c915818f-a1de-4340-7dc8-08defd50a8b4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF000044A5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8588 Content-Type: text/plain; charset="utf-8" From: Suraj Gupta xilinx_dma_get_metadata_ptr() returns the AXI DMA APP words from the SOP descriptor in both directions. This is wrong for RX, where the hardware writes the APP words into the EOF descriptor. It also leaves AXI MCDMA without metadata support. Return the metadata from the SOP descriptor for TX and from the EOF descriptor for RX, matching where the hardware reads and writes the fields. For AXI DMA, expose the APP words (20 bytes). For AXI MCDMA, expose the control sideband, status, and APP fields (28 bytes). On TX the control sideband holds TID and TUSER configuration for the outgoing stream. On RX the sideband status holds the received TID, TDEST and TUSER from the incoming stream. The field layout differs between MM2S and S2MM, and the wider payload lets a consumer distinguish the two controllers. No in-tree consumer is affected. Read xlnx,axistream-connected for AXI MCDMA. Attach metadata_ops in xilinx_mcdma_prep_slave_sg() when an AXI4-Stream interface is present, so MCDMA clients use the metadata API the same way as AXI DMA clients. Signed-off-by: Suraj Gupta Co-developed-by: Srinivas Neeli Reviewed-by: Radhey Shyam Pandey Signed-off-by: Srinivas Neeli Reviewed-by: Frank Li --- Changes in V6: - Added Reviewed-by: Radhey Shyam Pandey tag. Changes in V5: - Take the metadata pointer from the SOP descriptor for TX and the EOF descriptor for RX, matching where the hardware reads and writes the fields (TX previously used the EOF descriptor). - AXI DMA now exposes only the APP words (20 bytes) in both directions, instead of the status word followed by APP (24 bytes). - AXI MCDMA exposes the control sideband, status and APP fields (28 bytes), with the sideband position differing between MM2S and S2MM. - Reworked the kernel-doc index table and commit message accordingly. Changes in V4: - Restructured xilinx_dma_get_metadata_ptr(): AXIDMA is now the fall-through path instead of a separate branch guarded by WARN_ON_ONCE()/ERR_PTR(). - Rewrote the kernel-doc as an index table covering AXI DMA, MCDMA S2MM and MCDMA MM2S, and documented that the pointer and payload length are the same for both MCDMA directions. - Added an inline comment explaining the union aliasing. - Condensed the commit message. Changes in V3: - Renamed subject to include "AXI DMA and MCDMA" (was "AXI MCDMA" only). - Complete rewrite of commit message and implementation. - Metadata pointer now returns status field at index 0 instead of APP fields, exposing status and sideband information to clients. - Changed from list_first_entry to list_last_entry to return the EOF descriptor where hardware writes status and APP fields. - Added explicit handling for both AXIDMA and MCDMA types with proper payload length calculation. - Added WARN_ON_ONCE for unsupported DMA types. - Removed the 'chan' field from struct xilinx_dma_tx_descriptor (was added in V2) as it's no longer needed; channel is obtained from tx->chan instead. - Dropped V2 patches 4/5 (dt-bindings xlnx,include-stscntrl-strm) and 5/5 (xferred_bytes support) as the approach changed to use residue. Changes in V2: - Added support for MCDMA metadata handling alongside AXIDMA. - Added 'chan' field to struct xilinx_dma_tx_descriptor. --- drivers/dma/xilinx/xilinx_dma.c | 48 +++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dm= a.c index 506ce1ec29bc..6ba3c172a006 100644 --- a/drivers/dma/xilinx/xilinx_dma.c +++ b/drivers/dma/xilinx/xilinx_dma.c @@ -651,17 +651,51 @@ static inline void xilinx_aximcdma_buf(struct xilinx_= dma_chan *chan, * @tx: async transaction descriptor * @payload_len: metadata payload length * @max_len: metadata max length - * Return: The app field pointer. + * + * The metadata lives in the SOP descriptor for TX and the EOF descriptor = for RX. + * Field order depends on dmatype and direction: + * + * AXI DMA: [0..] app + * AXI MCDMA (TX): [0] ctrl_sideband, [1] status, [2..] app + * AXI MCDMA (RX): [0] status, [1] sideband, [2..] app + * + * Return: Pointer to the first metadata word. */ static void *xilinx_dma_get_metadata_ptr(struct dma_async_tx_descriptor *t= x, size_t *payload_len, size_t *max_len) { struct xilinx_dma_tx_descriptor *desc =3D to_dma_tx_descriptor(tx); + struct xilinx_dma_chan *chan =3D to_xilinx_chan(tx->chan); + + if (chan->xdev->dma_config->dmatype =3D=3D XDMA_TYPE_AXIMCDMA) { + struct xilinx_aximcdma_tx_segment *seg; + + if (chan->direction =3D=3D DMA_DEV_TO_MEM) { + seg =3D list_last_entry(&desc->segments, + struct xilinx_aximcdma_tx_segment, node); + *max_len =3D *payload_len =3D sizeof(seg->hw.s2mm_status) + + sizeof(seg->hw.s2mm_sideband_status) + + sizeof(seg->hw.app); + return &seg->hw.s2mm_status; + } + seg =3D list_first_entry(&desc->segments, + struct xilinx_aximcdma_tx_segment, node); + *max_len =3D *payload_len =3D sizeof(seg->hw.mm2s_ctrl_sideband) + + sizeof(seg->hw.mm2s_status) + + sizeof(seg->hw.app); + return &seg->hw.mm2s_ctrl_sideband; + } + struct xilinx_axidma_tx_segment *seg; =20 - *max_len =3D *payload_len =3D sizeof(u32) * XILINX_DMA_NUM_APP_WORDS; - seg =3D list_first_entry(&desc->segments, - struct xilinx_axidma_tx_segment, node); + if (chan->direction =3D=3D DMA_DEV_TO_MEM) + seg =3D list_last_entry(&desc->segments, + struct xilinx_axidma_tx_segment, node); + else + seg =3D list_first_entry(&desc->segments, + struct xilinx_axidma_tx_segment, node); + + *max_len =3D *payload_len =3D sizeof(seg->hw.app); return seg->hw.app; } =20 @@ -2639,6 +2673,9 @@ xilinx_mcdma_prep_slave_sg(struct dma_chan *dchan, st= ruct scatterlist *sgl, segment->hw.control |=3D XILINX_MCDMA_BD_EOP; } =20 + if (chan->xdev->has_axistream_connected) + desc->async_tx.metadata_ops =3D &xilinx_dma_metadata_ops; + return &desc->async_tx; =20 error: @@ -3287,7 +3324,8 @@ static int xilinx_dma_probe(struct platform_device *p= dev) =20 dma_set_max_seg_size(xdev->dev, xdev->max_buffer_len); =20 - if (xdev->dma_config->dmatype =3D=3D XDMA_TYPE_AXIDMA) { + if (xdev->dma_config->dmatype =3D=3D XDMA_TYPE_AXIDMA || + xdev->dma_config->dmatype =3D=3D XDMA_TYPE_AXIMCDMA) { xdev->has_axistream_connected =3D of_property_read_bool(node, "xlnx,axistream-connected"); } --=20 2.43.0