linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tudor Ambarus <tudor.ambarus@microchip.com>
To: <vkoul@kernel.org>, <peda@axentia.se>, <du@axentia.se>,
	<regressions@leemhuis.info>
Cc: <ludovic.desroches@microchip.com>, <maciej.sosnowski@intel.com>,
	<tudor.ambarus@microchip.com>, <dan.j.williams@intel.com>,
	<nicolas.ferre@microchip.com>, <mripard@kernel.org>,
	<torfl6749@gmail.com>, <linux-kernel@vger.kernel.org>,
	<dmaengine@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <stable@vger.kernel.org>
Subject: [PATCH 08/33] dmaengine: at_hdmac: Don't start transactions at tx_submit level
Date: Sat, 20 Aug 2022 15:56:52 +0300	[thread overview]
Message-ID: <20220820125717.588722-9-tudor.ambarus@microchip.com> (raw)
In-Reply-To: <20220820125717.588722-1-tudor.ambarus@microchip.com>

tx_submit is supposed to push the current transaction descriptor to a
pending queue, waiting for issue_pending() to be called. issue_pending()
must start the transfer, not tx_submit(), thus remove atc_dostart() from
atc_tx_submit(). Clients of at_xdmac that  assume that tx_submit() starts
the transfer must be updated and call dma_async_issue_pending() if they
miss to call it.
The vdbg print was moved to after the lock is released. It is desirable to
do the prints without the lock held if possible, and because the if
statement disappears there's no reason why to do the print while holding
the lock.

Fixes: dc78baa2b90b ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
---
 drivers/dma/at_hdmac.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
index e89facf14fab..b6b1d2dcfc4c 100644
--- a/drivers/dma/at_hdmac.c
+++ b/drivers/dma/at_hdmac.c
@@ -1126,19 +1126,11 @@ static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx)
 	spin_lock_irqsave(&atchan->lock, flags);
 	cookie = dma_cookie_assign(tx);
 
-	if (list_empty(&atchan->active_list)) {
-		dev_vdbg(chan2dev(tx->chan), "tx_submit: started %u\n",
-				desc->txd.cookie);
-		atc_dostart(atchan, desc);
-		list_add_tail(&desc->desc_node, &atchan->active_list);
-	} else {
-		dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
-				desc->txd.cookie);
-		list_add_tail(&desc->desc_node, &atchan->queue);
-	}
-
+	list_add_tail(&desc->desc_node, &atchan->queue);
 	spin_unlock_irqrestore(&atchan->lock, flags);
 
+	dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
+		 desc->txd.cookie);
 	return cookie;
 }
 
-- 
2.25.1


  parent reply	other threads:[~2022-08-20 12:58 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-20 12:56 [PATCH 00/33] dmaengine: at_hdmac: Fix concurrency bugs and then convert to virt-dma Tudor Ambarus
2022-08-20 12:56 ` [PATCH 01/33] dmaengine: at_hdmac: Keep register definitions and structures private to at_hdmac.c Tudor Ambarus
2022-08-20 12:56 ` [PATCH 02/33] dmaengine: at_hdmac: Use bitfield access macros Tudor Ambarus
2022-08-20 12:56 ` [PATCH 03/33] dmaengine: at_hdmac: Rename "dma_common" to "dma_device" Tudor Ambarus
2022-08-20 12:56 ` [PATCH 04/33] dmaengine: at_hdmac: Rename "chan_common" to "dma_chan" Tudor Ambarus
2022-08-20 12:56 ` [PATCH 05/33] dmaengine: at_hdmac: Remove unused member of at_dma_chan Tudor Ambarus
2022-08-20 12:56 ` [PATCH 06/33] dmaengine: at_hdmac: Return dma_cookie_status()'s ret code when txstate is NULL Tudor Ambarus
2022-08-20 12:56 ` [PATCH 07/33] dmaengine: at_hdmac: Fix at_lli struct definition Tudor Ambarus
2022-10-19 16:38   ` Vinod Koul
2022-10-20  7:08     ` Tudor.Ambarus
2022-08-20 12:56 ` Tudor Ambarus [this message]
2022-08-20 12:56 ` [PATCH 09/33] dmaengine: at_hdmac: Start transfer for cyclic channels in issue_pending Tudor Ambarus
2022-08-20 12:56 ` [PATCH 10/33] dmaengine: at_hdmac: Fix premature completion of desc " Tudor Ambarus
2022-08-20 12:56 ` [PATCH 11/33] dmaengine: at_hdmac: Do not call the complete callback on device_terminate_all Tudor Ambarus
2022-08-20 12:56 ` [PATCH 12/33] dmaengine: at_hdmac: Protect atchan->status with the channel lock Tudor Ambarus
2022-08-20 12:56 ` [PATCH 13/33] dmaengine: at_hdmac: Fix concurrency problems by removing atc_complete_all() Tudor Ambarus
2022-08-20 12:56 ` [PATCH 14/33] dmaengine: at_hdmac: Fix concurrency over descriptor Tudor Ambarus
2022-08-20 12:56 ` [PATCH 15/33] dmaengine: at_hdmac: Free the memset buf without holding the chan lock Tudor Ambarus
2022-08-20 12:57 ` [PATCH 16/33] dmaengine: at_hdmac: Fix concurrency over the active list Tudor Ambarus
2022-08-20 12:57 ` [PATCH 17/33] dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware Tudor Ambarus
2022-08-20 12:57 ` [PATCH 18/33] dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors Tudor Ambarus
2022-08-20 12:57 ` [PATCH 19/33] dmaengine: at_hdmac: Don't allow CPU to reorder channel enable Tudor Ambarus
2022-08-20 12:57 ` [PATCH 20/33] dmaengine: at_hdmac: Do not print messages on console while holding the lock Tudor Ambarus
2022-08-20 12:57 ` [PATCH 21/33] dmaengine: at_hdmac: Fix impossible condition Tudor Ambarus
2022-08-20 12:57 ` [PATCH 22/33] dmaengine: at_hdmac: Pass residue by address to avoid unneccessary implicit casts Tudor Ambarus
2022-08-20 12:57 ` [PATCH 23/33] dmaengine: at_hdmac: s/atc_get_bytes_left/atc_get_residue Tudor Ambarus
2022-08-20 12:57 ` [PATCH 24/33] dmaengine: at_hdmac: Introduce atc_get_llis_residue() Tudor Ambarus
2022-08-20 12:57 ` [PATCH 25/33] dmaengine: at_hdmac: Remove superfluous cast Tudor Ambarus
2022-08-20 12:57 ` [PATCH 26/33] dmaengine: at_hdmac: Use devm_kzalloc() and struct_size() Tudor Ambarus
2022-08-20 12:57 ` [PATCH 27/33] dmaengine: at_hdmac: Use devm_platform_ioremap_resource Tudor Ambarus
2022-08-20 12:57 ` [PATCH 28/33] dmaengine: at_hdmac: Use devm_request_irq() Tudor Ambarus
2022-10-19 16:49   ` Vinod Koul
2022-10-20  7:24     ` Tudor.Ambarus
2022-08-20 12:57 ` [PATCH 29/33] dmaengine: at_hdmac: Use devm_clk_get() Tudor Ambarus
2022-08-20 12:57 ` [PATCH 30/33] dmaengine: at_hdmac: Check return code of dma_async_device_register Tudor Ambarus
2022-08-20 12:57 ` [PATCH 31/33] dmaengine: at_hdmac: Use pm_ptr() Tudor Ambarus
2022-10-19 16:50   ` Vinod Koul
2022-10-20  7:10     ` Tudor.Ambarus
2022-08-20 12:57 ` [PATCH 32/33] dmaengine: at_hdmac: Set include entries in alphabetic order Tudor Ambarus
2022-08-20 12:57 ` [PATCH 33/33] dmaengine: at_hdmac: Convert driver to use virt-dma Tudor Ambarus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220820125717.588722-9-tudor.ambarus@microchip.com \
    --to=tudor.ambarus@microchip.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=du@axentia.se \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ludovic.desroches@microchip.com \
    --cc=maciej.sosnowski@intel.com \
    --cc=mripard@kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=peda@axentia.se \
    --cc=regressions@leemhuis.info \
    --cc=stable@vger.kernel.org \
    --cc=torfl6749@gmail.com \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).