From nobody Fri Jul 24 22:52:04 2026 Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (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 27633439F76 for ; Wed, 22 Jul 2026 16:25:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784737504; cv=none; b=FOSM/eL3DavkUPf7MTV1quilvuyfDFkW8ZIFm71Sv9AODSb34IsdxeBjtdmrbFT54jmJowEdVhn/6Kk+r0KBXEiUEuKj4GSHqByTWEn9PPOKSyxBqZTPQapPqqrFQOG67sbhiGZuSyO9zhXB9BzZ3/GqtqjwF/BDqajIGhum/mY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784737504; c=relaxed/simple; bh=afNZGMtYzA30KV4bDEhm00UcoH2/+9UJYMOEjo4Xyt8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=USeoHBh/p6VfZ6zfkeScHuVp5lklH7hitDB2OI1QMToCVsHDi3spc+K0vGni2FUkRXEuMQhs0l0AN5cEPHP7TOZRM14s+RcsSg35ClTrUp4OEgofAVyUXz7fWsoH7w6dWpbDKVdeqwXBplXo8w7wczZULT3JzJ4nYvzvo0u8d0I= 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=Z7yrjnwn; arc=none smtp.client-ip=209.85.215.173 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="Z7yrjnwn" Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-ca7bea5e5b3so9168597a12.1 for ; Wed, 22 Jul 2026 09:25:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784737502; x=1785342302; 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:content-type; bh=tXYrafFh6v41hHNrCujwkEXP25aXy1QcuniyU+tuiOM=; b=Z7yrjnwn1T/FgpH2ZBaGlcKT5OzJRnd8eY5VzV4OzUaJS45HsX8WcSGMbT8shCgvvj O51gJ+VC6bjArBim+8EnqkiRNPGzzVj6QhBqIwMg9nG7jMWRHZcp2cdbyNcsTrJmf9Z4 wHrEu5qqRBG2UqHryjbPH8B2yELf13Oi1tDd62mer5HXrXluMeJHPQuL/d5rBIgbfzKv MzbPHeBrnT52jPhqqQf8GFMseg6CEOHyC9vYhZy/UEzlay4A9a1PFGEwWCObDZNdmjkA GxT6GW8pbP+OoDsqFSbFmVncL3Pa9/9fGInNTUjeVF5uY32HaJ9/uCbL939j7MA/ZGXe 3HFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784737502; x=1785342302; 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:content-type; bh=tXYrafFh6v41hHNrCujwkEXP25aXy1QcuniyU+tuiOM=; b=Cb1jEHGLPMTuHrHfez6umVJxnyWxPPgx5IPfildCvMiCBKoIExU4Ek44ByYHuqeC76 vJUsc8Kq1K/dTlSVPFIpfBH1R50kdNa7Rno/dReh28d8ElKGRLZwDXbA5u2XGrqrl5uc 4fOr7dSy9Hova3tMKIH7rf+xUmCdzOnv0r9/SOmks1dGJrxPMHEXhTnNUeYIyHjiAn+X 785aRisNcgDte7TneRMv7uXwzjagD6hxn3F8Ob6C9pPqV1zq3NXdN2GUN1mVnFVCHNZF 0zGKgXNz4CwKbj/kc+Eg810KwHPhSdPY4whn0GrDNRz0oRzL+Ft3NrcKnN8FfD59ns9e PTRQ== X-Forwarded-Encrypted: i=1; AHgh+Rp1A1oaDwpsGIw+jEpfbxRql1Vqhp+kx4aJxb5HSF0e344QPW8XZfNHyTvnlKeJKG1IypQ+89t4/h9gMpg=@vger.kernel.org X-Gm-Message-State: AOJu0Yx40/Ruin0yi8Rt++juNkL8N1eqAK22AxS62Xsyosl1QqZiFrm2 8uwhS5Cp9YiDj/G8IhgrIqbVH6hMKDGNuEavt/VxfSC4hNOhq9DWkVY= X-Gm-Gg: AR+sD11BZEo5R68CRbn5+MjtWrfgPT6zzYpfZ8CTQmNkh9Qb1u+Ox5gznxH6K++MYUP dGGeCkxAuf4xZJAKiGhpJ4DddXKwtUwZA5gPMBDlzmGWQPiP7AQOWOS4Txij+8YLDtzhMRsLud7 JM16CTDH5TQrfElU5gT5yIcrYGWlA3o3S3mCvv8n2gy1V4nXMLou3mXXNHW3lxzwb5qGcchay50 kR5PukMU4PQEPqjAQ+ZVHsYT+4Y1bVKtBewfZ1TQTlE+m7IndQAWekntMf9lkm95m8noUc5F3/3 QbUeCikOxA6FH+IWEHVhfFxqBsyN6b1IgXZrk1ZCwMwncbF7NFkOWDbHNMa903NBEJBiGO5SDT6 p6Jwzp0DIA3vnp3gFRzGD9N65zmi0B0o7Vxyv5PsOeRrfAzhv5g2kCqzVOQTDm31T6X1TDwVFJv dQ2Q7hUZFHKvCI7qu6dCX6M4T0tlb1aO3AqG0l X-Received: by 2002:a05:6a20:a10a:b0:3c3:88a5:83db with SMTP id adf61e73a8af0-3c3ad6036b0mr25638872637.5.1784737502208; Wed, 22 Jul 2026 09:25:02 -0700 (PDT) Received: from t-rex ([2401:4900:c212:546e:3d3e:f0d9:52c0:8a0]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147dc6162csm10753122eec.7.2026.07.22.09.24.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 09:25:01 -0700 (PDT) From: kr494167@gmail.com To: broonie@kernel.org, dlan@kernel.org Cc: elder@riscstar.com, linux-spi@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, Surendra Singh Chouhan Subject: [PATCH v2] spi: spacemit: prepare both DMA descriptors before submitting Date: Wed, 22 Jul 2026 21:54:44 +0530 Message-ID: <20260722162444.11415-1-kr494167@gmail.com> X-Mailer: git-send-email 2.55.0 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: Surendra Singh Chouhan k1_spi_dma_one() currently submits the TX DMA descriptor to the DMA engine before preparing the RX DMA descriptor. If preparing the RX descriptor subsequently fails, the function jumps to the fallback error path without canceling or aborting the already submitted TX DMA descriptor. Fix this by preparing both the TX and RX descriptors before submitting either of them to the DMA engine. Fixes: efcd8b9d1111 ("spi: spacemit: introduce SpacemiT K1 SPI controller d= river") Reviewed-by: Alex Elder Signed-off-by: Surendra Singh Chouhan --- drivers/spi/spi-spacemit-k1.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/spi/spi-spacemit-k1.c b/drivers/spi/spi-spacemit-k1.c index 215fe66d27b4..96b41b67fcbf 100644 --- a/drivers/spi/spi-spacemit-k1.c +++ b/drivers/spi/spi-spacemit-k1.c @@ -278,25 +278,25 @@ static int k1_spi_dma_one(struct spi_controller *host= , struct spi_device *spi, struct spi_transfer *transfer) { struct k1_spi_driver_data *drv_data =3D spi_controller_get_devdata(host); - struct dma_async_tx_descriptor *desc; + struct dma_async_tx_descriptor *txdesc, *rxdesc; u32 val; =20 - /* Prepare the TX descriptor and submit it */ - desc =3D k1_spi_dma_prep(drv_data, transfer, true); - if (!desc) + /* Prepare the TX descriptor */ + txdesc =3D k1_spi_dma_prep(drv_data, transfer, true); + if (!txdesc) goto fallback; - dmaengine_submit(desc); =20 - /* Prepare the RX descriptor and submit it */ - desc =3D k1_spi_dma_prep(drv_data, transfer, false); - if (!desc) + /* Prepare the RX descriptor */ + rxdesc =3D k1_spi_dma_prep(drv_data, transfer, false); + if (!rxdesc) goto fallback; =20 /* When RX is complete we also know TX has completed */ - desc->callback =3D k1_spi_dma_callback; - desc->callback_param =3D drv_data; + rxdesc->callback =3D k1_spi_dma_callback; + rxdesc->callback_param =3D drv_data; =20 - dmaengine_submit(desc); + dmaengine_submit(txdesc); + dmaengine_submit(rxdesc); =20 val =3D readl(drv_data->base + SSP_TOP_CTRL); val |=3D TOP_TRAIL; /* Trailing bytes handled by DMA */ --=20 2.55.0