From nobody Sun Feb 8 18:31:20 2026 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 657A1254AF5 for ; Sat, 31 Jan 2026 10:46:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769856375; cv=none; b=T7xj/EOiKkBmuv2EKRQ1MJEx0wUpRWgv553TUijvxvJxpeTO8wKt184CWfLo5W/Bbgd/rydNbpBu6gXvkbf2VAdpiwdiuOdZ8wu0NGCxfEv1v2khhhTQOpssiAudh/mpC0cPQwPvX1YbpTiYxM90BFpyoGd04S42+IetIKF7Nrc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769856375; c=relaxed/simple; bh=T98KBQx+O4FqRMY1pKOKeiVHp8TIZyEBfIqX/9VJVJw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Gscc2MAIQfmTz4F5gmWNdHio4Crt9lg2e4IMctgesnOUhi57CI5c5bgtRZ2yNMzIBybYZEk7wQ6wOxMOKX2nKYyGS3pCAGhu5aIyRgsu1ueguIYOBMKm8nf92Qlf2G4L+y9plBYBOKyv89lUlHjMSSs0l1EbKmJf0c2zJJUXlhs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NldHvJ58; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NldHvJ58" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-81e8b1bdf0cso1834972b3a.3 for ; Sat, 31 Jan 2026 02:46:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769856373; x=1770461173; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ix3R9g1r5Rr2teTx5y0KghKmMccHbs4w/Enqp50WhyM=; b=NldHvJ58K97/qVq4glBx8E0dB5+BeznrEB19sIbi+1eoNw3BvMHOG4tUEI3MkuKHGq T0gWru1fuc/ONcc+0L4+324+EsVRDQdabhb6humgdC7h8rdzY0L2bXLcALmH1YBiw15S jwPrP1q53F0bsoPsupsJrFkFNxYszbGl0FvRW/JXk4FBiH0Sc1VkRvZDuGtZF8Sm2vCH DDXtjAZtX96w7uhZawtoh6Tumzr/RHESUsjLAz8JNA4qsFerL+yLXhrVwbvLgKt4DFw5 DYPrOP0PYucDR7xNKFiO0JgQwrcx84v5LKV9gHgoKbEb97sqdPPJTABvEf16Ky/dYSfv /iAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769856373; x=1770461173; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ix3R9g1r5Rr2teTx5y0KghKmMccHbs4w/Enqp50WhyM=; b=InaeMoV2WTjpiiE3kg1E96oQDFbrXqlltEFptG5kht249mJW7v0IKU50jZQh+eUDPz c5nUo71cYvPKy3FJjekO2e6PZunDRRhg+oRNN7W8554ANUez5XkkG5DzTPJrTP4wWKOF JXyQCsjrs+PnxPTLUqSs4T13FQ853DMqL0JKrXFzHpEvLGzPelzYH27NNcnqmdspeuaf RzbDUTkflyTVmskk8CRuKTYfRUIsM2USLVBwSWf5Jz85KR1mjYhQnb6u56bRDXrXWaFw N6IR/erDm4P/R+YHuskfiKigfKM3y3HtpxscZr1M0xzfvIUrzssy4obEqxJ8Negn0i9D HDEQ== X-Forwarded-Encrypted: i=1; AJvYcCUR0iHOtxLNZ0KTVneDRmF4xH5S1aeKnB2rj5Yn91nFk8sjKBWYkBIy3e0ltjE78PDh9z5swoKvmYscOpg=@vger.kernel.org X-Gm-Message-State: AOJu0YygjICcENj2nW727Oagb9uE29JDfgUxc6XCBrRSKw9Ujrpv5Vin 2Rczmnnd4q7PU0TG+6DLEzoqpXEgbLyWWaIXXAjbdK8H0cW6tuSjfPWv X-Gm-Gg: AZuq6aJ8f2vioBCGzaXhQ4hYTy0l/omMlkUzpOD1eXYrnlJSDlUpI+JU7kFlx/DapNV wGMvddAc8jXLpU1gjp/ykDHg7/6y2y9ZTuEc2zPIPAexGaHogzKMFKWDPsrhc3Scc3HKfvgboZV hTE2J509tv/v4esgZV8HjkyDBtranEpbeMKk9hnlHlqtUpRjrSEcLtrQnfuxjvlE8Cx2xf+jYrt AmTkRZmWMGBQhTK86I1bLyyr1bGUO0VG3BeKFwjznGBSsWGcWFd64gCEnb8IDEVCSLwPJxKWDD8 5GcR+rCLEqWI+kbqUMcJB7GfuctiOiQHdmo47sPqJ/HhcIbFdS3ukT4Gf4ltX822wlIktQD2XYA 1prWy1+3c6TXr1Ynh8K49as5PllrQ7DafI2AXftyPW1IG3EYsP9o3DDpwwSNi3EgjDxiTmAWQCI tNkQZzYAxOC6B0yWO4f/jl1IT54Fj8tp5PvHA= X-Received: by 2002:a05:6a00:a804:b0:823:c41:a019 with SMTP id d2e1a72fcca58-823aa440443mr5824615b3a.22.1769856373367; Sat, 31 Jan 2026 02:46:13 -0800 (PST) Received: from localhost.localdomain ([171.88.165.217]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379c21112sm10301462b3a.54.2026.01.31.02.46.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 31 Jan 2026 02:46:12 -0800 (PST) From: Shi-Shenghui X-Google-Original-From: Shi-Shenghui To: Frank.Li@nxp.com, vkoul@kernel.org Cc: manivannan.sadhasivam@linaro.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, brody.shi@m2semi.com, kevin.song@m2semi.com, qixiang.zhong@m2semi.com, tom.hu@m2semi.com, richard.yang@m2semi.com Subject: [PATCH v3] dmaengine: dw-edma: fix MSI data programming for multi-IRQ case Date: Sat, 31 Jan 2026 18:45:50 +0800 Message-ID: <20260131104550.1088-1-brody.shi@m2semi.com> X-Mailer: git-send-email 2.49.0.windows.1 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 Content-Type: text/plain; charset="utf-8" From: Shenghui Shi When using MSI (not MSI-X) with multiple IRQs, the MSI data value must be unique per vector to ensure correct interrupt delivery. Currently, the driver fails to increment the MSI data per vector, causing interrupts to be misrouted. Fix this by caching the base MSI data and adjusting each vector's data accordingly during IRQ setup. This issue was reproduced and tested on: - Device: [20e0:2502] (rev 01) - Kernel: 6.8.0-90-generic Fixes: e63d79d1ff04 ("dmaengine: dw-edma: Add Synopsys DesignWare eDMA IP c= ore driver") Signed-off-by: Shenghui Shi --- drivers/dma/dw-edma/dw-edma-core.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 8e5f7defa6b6..2b2a59fec053 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -844,11 +844,13 @@ static int dw_edma_irq_request(struct dw_edma *dw, { struct dw_edma_chip *chip =3D dw->chip; struct device *dev =3D dw->chip->dev; + struct msi_desc *msi_desc; u32 wr_mask =3D 1; u32 rd_mask =3D 1; int i, err =3D 0; u32 ch_cnt; int irq; + bool is_msix =3D false; =20 ch_cnt =3D dw->wr_ch_cnt + dw->rd_ch_cnt; =20 @@ -895,9 +897,13 @@ static int dw_edma_irq_request(struct dw_edma *dw, &dw->irq[i]); if (err) goto err_irq_free; - - if (irq_get_msi_desc(irq)) + msi_desc =3D irq_get_msi_desc(irq); + if (msi_desc) { get_cached_msi_msg(irq, &dw->irq[i].msi); + is_msix =3D msi_desc && msi_desc->pci.msi_attrib.is_msix; + if (!is_msix && i > 0) + dw->irq[i].msi.data =3D dw->irq[0].msi.data + i; + } } =20 dw->nr_irqs =3D i; --=20 2.49.0.windows.1