From nobody Sat Feb 7 07:09:37 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 919312A1BA for ; Mon, 2 Feb 2026 05:46:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770011220; cv=none; b=GcvY+U9Kp65QXjAe58sPFW7EqR52B8HQCdK1IRXbD5+vZxUwQa4jENch3g7gjrxObMhg037gfHFqucmYq0DmAB0sXpMdIZrZahbP9S+7Ajea8bSToWszbk2ZfbPSWs2tnUuwhJ4tfBRWii1iu9mB6BXT/CP3ijwWgcHQzRlpDuQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770011220; c=relaxed/simple; bh=t6rjF1INbcM31TXVdLYLgDvqaW6UlRzu0qLkdPRp53A=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=FVfnOUpNmyQHu6YQLDWdhxRGvCSW9gSri/J6VPX7tfJ+Gd2nZZSNO2OQxyuwTuuTR41XN3uZB2/yCbE4+Vui6ts08Vi/ZdlXFv71eN4knI9X5b9Xd/XnuTpnUVxhfBjuaU3MiAr3ToK1EV7gVqjP9/ouR4xFvdWKLENc8xNmUQY= 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=j1WKicp9; arc=none smtp.client-ip=209.85.214.178 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="j1WKicp9" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2a79998d35aso26414095ad.0 for ; Sun, 01 Feb 2026 21:46:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770011219; x=1770616019; 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=qY7v+TdHqaotAUzPe0ROtzIAYmntHl2XBB55ktUIzuU=; b=j1WKicp9mBL7z2zCtnukQ4U3bvwoTxAfLVNZZhFYaHwByT95nF5dwRJ2ruZJcP5yYw IKmQPPr+dSA22Ss+9B/74//rm77JPi0rqFEZZsPXXfRERpeJIVVVmV8nCkc2t2OWvu9Y sCt7sMlVcg47AJ4bWphCHPVsX54v9KS8fEuzcU5ayJWX8Fbn1fCRkHc4WDcufkffMOb5 4KG32tvUmrZB7oZFkL5wlRZn2DGMXYQczDkJ5WhClmkZ3Oc43cNWvdTh2Iz9ixD+0iX7 z8BJlc9LUv7c7edk3beXZsYQDtZ2Lcfua3l3z2PpNALg60lU3S04w4Fw9SfEFFKmjAqW WREg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770011219; x=1770616019; 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=qY7v+TdHqaotAUzPe0ROtzIAYmntHl2XBB55ktUIzuU=; b=KGP0YkRF+0u+LoPydsMATtwntfOjWbOYWbQqpZFj4SmsOqu44aKAI7FZb/U1oDfK+R IICicWsnhksZpbuoFEfbjcLIJVgky5hODsq33/rFZhjiOKm+ZpPdl7KwZzq1KLc9yLaD UR+53TogYV3am4PBR5EGPhkfpz67hN43Dw73pUAYbW17cXL82DY9TyCbrzERgJoKRJPg mULkoaHLSpi+WPj8tW38RKhZwtQRbSKC5dGm31BHhPV8hEgsuOprdD0S+UtSl+EvB5Th ZAZi4o8X57qhirhgQXoxcAoUi2ty7A2lISGrK509FjRXnl54oGeQtjgxRMQiLB6nn7oX +bww== X-Forwarded-Encrypted: i=1; AJvYcCUMhpE1sBOP8Gyd+6Y2WWHJIzJ3KquMB18irLVOTnMbLT2td4pWtt73+yd+/bYPYyr6qPAwai07ZNvD3K4=@vger.kernel.org X-Gm-Message-State: AOJu0YzRoijSl3HF8MWlcpsHmu96osXmxhweXwTv/PiMSmxgB6ktOrza 0DKoBC3j53DGZ9nZkGwHW2lWVS9XenIWs50sMuECbhElrGokuyFB/TGdc6kUpw== X-Gm-Gg: AZuq6aJiEbYsLMuSP/ndn/ZZ5RCGxwgmD9qvg9SPZLu23hGhT/WrgccNmNp62nEPSS6 Hm3MLP83vLmI0EF+RVaYHTBNPB42kG0RpzFR+DGx6DGoiaVuTw8FaD9kDIJFyvXJ4B4Rbnm8sWI z0GrRlJC+jqvjPaKU7Jg/8M1CP9oIif0DjOE9LInyb9ruj+8m0ARUf+3da/DN5Ns1aJOr9WwW3X GTLlhajVvWBSiizLu20q6GROBaQmk8ZT6LyEvHmIm57ygD2U/mpcsMmjoBEyGoyfzmLkJMw5c/j cBVU2ePF0zQxWC99mx0HdZFYGgjsfQSbBbWOkdjmhkULj2bhgnrgiKbu9Va2yvnqgH4Yz8th3RG BVRRXfgJrXgR8VzacJ/xt8Woh/cbo3J2G+eiIMLxDNjljvgfcx2XCCRXDpPUW5FzGY/yJc2pMfq 3xIV4nK+wxak9BKbGaPeE95UeUACPmZnJzw5lUU+SPkOGKlw== X-Received: by 2002:a17:903:41d2:b0:2a7:63e4:b1aa with SMTP id d9443c01a7336-2a8d991a634mr108277715ad.35.1770011218876; Sun, 01 Feb 2026 21:46:58 -0800 (PST) Received: from localhost.localdomain ([171.88.165.217]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a88b5d9a7bsm136294705ad.79.2026.02.01.21.46.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 21:46:58 -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 v4] dmaengine: dw-edma: fix MSI data programming for multi-IRQ case Date: Mon, 2 Feb 2026 13:46:36 +0800 Message-ID: <20260202054636.1247-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. 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..570127069ddd 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -844,6 +844,7 @@ 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; @@ -895,9 +896,14 @@ 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) { + bool is_msi; get_cached_msi_msg(irq, &dw->irq[i].msi); + is_msi =3D msi_desc && !msi_desc->pci.msi_attrib.is_msix; + if (is_msi) + dw->irq[i].msi.data =3D dw->irq[0].msi.data + i; + } } =20 dw->nr_irqs =3D i; --=20 2.49.0.windows.1