From nobody Sat Feb 7 08:27:56 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 5DFCC23E33D for ; Mon, 2 Feb 2026 05:54:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770011646; cv=none; b=qzqxGleowk6RCImIM6hUE9EwdJBMnV66UWJ9Gbv7lewrD7qv0fFpS7uLdJczPUVOmZT8g/4dNEQtN0shgCElcmaIe5zd0zUhsJFkPjHoxJ9ZNcZrOKWPLUYUsKrSLiVA9pAm+EvrgGdSoV8Eh9u3kvy2IgJCHaojx411dtTqx6M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770011646; c=relaxed/simple; bh=wOG+XZyfJ1ECBp3bdpMqJuYFU9m98cCaqUKQHSPHqOI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=JVMxLiI6Ly6exAyB1z4V90kCMoqqDpYHEj/jh39KhRcL8mV/Ibkm/17sGajiqXh9/D3birQkQuSKpvw3EOMvcw5HbAvggss8Fa74fshUOvpx//DvgOkspXprC7oFhJ1qRGFwnSw5u29YtgHc3cCS2rIS9uJo0vFBALlxs9ZG38s= 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=dU2yG3B/; arc=none smtp.client-ip=209.85.214.171 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="dU2yG3B/" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2a0c20ee83dso37124865ad.2 for ; Sun, 01 Feb 2026 21:54:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770011644; x=1770616444; 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=Q5teP0ad/u/RJjO/iZ2u1LHked4QjrPKeg2T8iSxlEY=; b=dU2yG3B/wkuak7c7wy14/m0o2moTTYQ5dE69CRrXPTVQV3POp/1QzaNncTxdwTNcpw DZbvBrnDZz9a+sZhRhIAYU1Wcz6jdkS1ukPcmluZ/ete6f3N5YA9FnyGTL1SKqk6spxP thAel5XpmWDuMhFyw6cOVN8/ctae3FuHdaPEUKqLEaDL1UJJ3XiZ88Ztk3gtGcz5G9AH 5ZkWggWZnIwwtOq1OUrAQHCxIHNKqkm8S5JLYJlT89dg1SZUt2zUoQ5+K5TJVUDxtV7l GRFwgO7D2M3rODvYQKQ9sUmUj4MnNTwOD5U4C+DVaShgnoK2mTrKJpkRjoBK3XS38q48 yGdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770011644; x=1770616444; 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=Q5teP0ad/u/RJjO/iZ2u1LHked4QjrPKeg2T8iSxlEY=; b=UOo94nhaZ3eqm3hPiAyvwZ87xpm5sn9kVlL037GvpZnSOu3tcXMUMFXNCPUZ18St/J /zaJNhbC8ulN/rMioV6oNUj7GyRoRpuR6lMQHrxskTFvnK1qEp+P/kLxW3inrOzWX/tK JfA2KELoYtdLhXICGoudj5cgVd1HM7blq0mhUtFg7OJjtYBYEUf5yzAg8ojpntqh5ngf sJ9BbJ9yuGYF5a7HM1PbzndpW0Jlwnvr/jGdvG6h2pZMwCNqIeOxPcpJGTuLbWTfAkxM lugGJzCOP85QeNoai8L8w/Ah9LloE2SR0e9QwW3qaA9lbunt4TOE6aHsg6/675zeg4AE 5frg== X-Forwarded-Encrypted: i=1; AJvYcCU7/2avVi3uo6eQGp3UDUJSaIZwmjxpqAfz2PyHc/2zOe4f6EJeJadmEYhodsc1vAHnzhu46vwy8V6FNiM=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7LGCs+BevjIYX/sxSo3pECbMbj7vvNPsgU8EOI1erb72FxK+k scOe2NLnSX2rKbEZBF7FyNX6gd1haSHaJiA/kJdJWLDXRX6BzzNdHH/b X-Gm-Gg: AZuq6aKt6ndaB21kBjzYYrnGgrVcG2iRXQ/TkbUV5vi6a0FJambBaDrMiL6yygZLp/0 Ke4QK4kpvCGZLRUqIUuKNP8G8FXiEiJ7HB52JgM1zmXbQYTh2ZBmb92u+GLNXIsOv/4jZoH4Iwn 5M24Z2TQzKSe1FbHTmB3WSUdaPKn1/0xRTzjMJTgraWrR9oRdLBA6Lhk278rK++Z56wX+PXjqlC oo1Ca8yn7Oa/hJRFWp16ZqCUTJYUgpAyeSjS6DDxPzbsxMuh7B+WF5EzejIBwVQajUnPd0aPpW/ AUzP2W37lSNCRy9AynlkLBMVIeI95ru4kcxeii7ob0vE/JRyapZN1QDRio9V0Bi59yOY1Eej6Jb EjJO69YMfHuTZP9FQYMz+pPIlVvBzSk3rqx2oVD/yFnWUufXnuPYm4LnWsMhwaUEcYUV+sad9Qz 745GNxyraAyqqGY44WDXhW09RyGq98JQ== X-Received: by 2002:a17:903:8c6:b0:2a7:a6b1:4f8d with SMTP id d9443c01a7336-2a8d9931d2emr119297595ad.40.1770011644538; Sun, 01 Feb 2026 21:54:04 -0800 (PST) Received: from localhost.localdomain ([171.88.165.217]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a8bd7654dasm108066645ad.81.2026.02.01.21.54.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 21:54:04 -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 v5] dmaengine: dw-edma: fix MSI data programming for multi-IRQ case Date: Mon, 2 Feb 2026 13:53:44 +0800 Message-ID: <20260202055344.1395-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 Reviewed-by: Frank Li --- drivers/dma/dw-edma/dw-edma-core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 8e5f7defa6b6..dccc686b7a3e 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,15 @@ static int dw_edma_irq_request(struct dw_edma *dw, &dw->irq[i]); if (err) goto err_irq_free; + msi_desc =3D irq_get_msi_desc(irq); + if (msi_desc) { + bool is_msi; =20 - if (irq_get_msi_desc(irq)) 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