From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.210.45 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794471787; b=3nRFYBBLhmSHprtR7kpX+urEKw4cNLH072GS9ZOZL1Rbcm/cnQK0mt2GRaYbRfC54oaV WRMKPblwn0Z5DLgpkRUANOCDkl2eR9sKU7v6QtK+zebamjuKT+rEv6xE6AEmDcNyNjxZt gN0O1q8+mhaNiltKn6/QvJ4Rrlsc0Fl65HUkO9DJvpGGGm0L53V3OiR+XSKeYzzxHQ6/b IHTZTbfbqLjWAE8+0OwnXGJ1SMRJATquXMUf43wJOFXLBn2Ma993loZf4NvDtvO6qblgh Fd8guEswMMtK8a8/0UgDKPWHoa2l2FEqtAkOZF98HCv41YB9P0nEw64CQJF2uKeBaMw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794471787; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:Date:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding: Message-Id:References:In-Reply-To:To:Cc:X-Mailer; bh=JO4lonZbzonXjGudrUdKykQEm0Ub0u8cq6ZIlxF4Esc=; b=yIIImkg3U3h8WbOIddi4+gLtpnktu97O8qJp5UDQ0BGoKDjvaUzu57Vkb/Ckft8lxkNg 5y1xwB2ow1dxSWsiblXJ6GqjH4X1ogeAm9tNeDjBcUP+Uj0luSIPsv6IKtnfCHr/g2rwt bz/fYXegHSZDYpzhfuA36QHMCUfn6auKciAoktZJ7bgS7RSsrXPTQSVfiqH7WMufyHlu/ SLR31aWz1lH2e77cOZb4MhA4vAf6joRJA7OZJW1F1kCKPmv8TCM7YxKdUjhouUTn62A3t krs4wPHG1RfEzeKyW3tl4IHiIKLtDmmPO/6NUt9B8oZelcVirJr9vgX8UddjvlpDTtg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=WFBgQacY; arc=none smtp.remote-ip=209.85.210.45 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44188606A8B0 for ; Thu, 12 Nov 2026 08:23:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 44188606A8B0 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.a=rsa-sha256 header.s=20260707 header.b=WFBgQacY Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-8451a619da7so2463995a34.1 for ; Thu, 12 Nov 2026 00:23:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1794471786; x=1795076586; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JO4lonZbzonXjGudrUdKykQEm0Ub0u8cq6ZIlxF4Esc=; b=WFBgQacY4SAYWRfsBSBaJ6s6QX4C9BAJ0aB8ds6qsiTOL5oDQPmfG59kRdjQvuUmwt /x6HX+86LluMIeu7fayNo+Fd4dt6Xa+sLBw3Ag8mU2O0I7kKUx00CkUOVSqFdJ6RoIl5 hi6ySBXZiO7tbbDUloV3DoanZjjwmmTVXu+HR7MBMO+GfUxQW5+7zNwD62RrTaxPGCbM J52bzQek19rJmAFKiDSHndRguJ67IsXWUhCEw009QqtbquYGFUhNvX7GSSRxpsAfiqvm LpHGruBAnQxWETG6R8LGuDRFOhjHnv/bjhivshJQq9OKqp+3WXRNG9zmJDBqfwyflDde nxnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794471786; x=1795076586; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JO4lonZbzonXjGudrUdKykQEm0Ub0u8cq6ZIlxF4Esc=; b=Ht9r5i0g6a8eBbVDpYBlQBee54TVSrifPMCs71LFosOTAaFfVpdCVsRU/AUTt27zkL 7NEjDOr/p3Y/0ebeXO0iRIE4C3KYsAZiVvaIK9fLM2NzJH6xtmdTvuHlj4x1UCMoLzTS vLHc+S3D/EUezPGxOsiqJD/HroUGXZruURt4OsAV4MS0WnIrqDX+tbdOA3FwDsfDaS3z smVwidc9xTfie67n6qKXMHRFn+7fGHHEOSIT7UY+D3BnUomLwL/robusBIkv/UI9OhzZ ojOR2dBRISvF7ZplQB565TBtlEfgEpl5l+WwOUz26kdJyg+okzPT0WelQWeGVa/N7iAH 4CGQ== X-Forwarded-Encrypted: i=1; AL+hErGgsJ8xzPv+PO0xM6dgOk9koyxs7CEA4EEgB+vtqCHU/o90frfo8wGgWEyYYtRQycGRkM/R/ZcPMOnYc78=@vger.kernel.org X-Gm-Message-State: APuU4Z/3xTQzR36AdecJNJWKNs4Gkj14QiiaJN2lIfn0FOOwX9uLeNqg uEWetbCvp/AnSLziJxJiQFPqunAqj8BdC1wBjU98NVso//piC7l44gf/ X-Gm-Gg: AYBFou3V0Y4a5Gcl8r9DoR0Ce6R2aYtYfZFoRYj6wSiqqBaHNWZhUdi5hE0TLG60ZTY c1Q/4MMzAq4nC/cC4gNLbCXl73apiiefo/S7J4aBBTLnGSiPSPiPeUkfJ7sLhOrgrWajsgQm8Ai pLiABbhj1DLwAXuxN768KDpO4ObUTr77K4K4DeKdMdwa8WO2kP2cLRBlPeFg+ErhoP38dYyMT39 oKJ5/rsK5NKz1ieIxxgejcvQW/JKAwY1UZ+ktqOwrEyF7pehE3PVkNPwcNMKFfqnN1/msektYx0 6EgKSnAOy3nsOCxXuMqtCuX1zuKo9QqBx99RxHL/suM92V6KXBvkYk96iEphz3UWe54yjQ1lfNp 3fHKzHevfCwei9p+GEDqPYpCZ8I9heNPb9kwUv0S4VHg4pyjfvH0p5qAMQwEatLygL0mxUJYn4Q BdMwndKnCCRgIiZ4whmuNfca7VUEPs5SH97xK1ki6NsxkvH23roBMl6nr6Pw6LPimBw/U891Dm4 YEDndFBau45FYgnxAHV3OFf+FCjrJ8UupydIE75SldiTrlkxnrPujBmb/7dfkhEOgoLLk1DieEF Ot36Jpl2JG0lErz7hJC3c4AAK/Vu8I5pIafmgKooDwhv6khaWsIIVjOaQa5WBN0Gpb0s2Eu7++g Z9qOBbxd64iLrm1uj+R8xmCQ3vRddueMyQDbh3rjpy6hWO86m3TzjG+ivQUfGEjnZ9Y0EqgFlRK It885X9ZRyntkf9anAi3jjteQIVF2SeW+fFNpIQILRoIb15q8O64c4 X-Received: by 2002:a05:6809:24a:10b0:56b:220d:cc5d with SMTP id 5614622812f47-56b961943b0mr3378225b6e.10.1794471786165; Thu, 12 Nov 2026 00:23:06 -0800 (PST) Received: from [127.0.1.1] (174-29-1-49.hlrn.qwest.net. [174.29.1.49]) by smtp.gmail.com with ESMTPSA id 5614622812f47-56905d3bab2sm7411157b6e.12.2026.11.12.00.23.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2026 00:23:05 -0800 (PST) From: James Hilliard Date: Thu, 12 Nov 2026 01:22:52 -0700 Subject: [PATCH v4 3/5] dmaengine: dw-axi-dmac: retain descriptors when termination times out X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261112-submit-dw-axi-dma-stop-pause-v1-v4-3-3ebc24b243db@gmail.com> References: <20261112-submit-dw-axi-dma-stop-pause-v1-v4-0-3ebc24b243db@gmail.com> In-Reply-To: <20261112-submit-dw-axi-dma-stop-pause-v1-v4-0-3ebc24b243db@gmail.com> To: Eugeniy Paltsev , Vinod Koul , Frank Li , Sergey Khimich , Andy Shevchenko , Sia Jee Heng Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, James Hilliard , stable@vger.kernel.org X-Mailer: b4 0.15.2 dma_chan_terminate_all() warns when the channel enable bit does not clear, but then frees the descriptors and returns success. Its synchronize callback only drains virtual-channel callbacks, so terminate_sync() can also report success while hardware still accesses the transfer. Return the polling error before detaching descriptors or changing the peripheral routing. This keeps the transfer resources available while the channel remains enabled and lets the caller retry termination without treating the timeout as a successful stop. Hold the channel lock across disabling, polling and descriptor detachment so an interrupt handler cannot restart the channel between the stop check and cleanup. Fixes: 1deb96c0fa58 ("dmaegine: dw-axi-dmac: Support device_prep_dma_cyclic()") Cc: stable@vger.kernel.org Signed-off-by: James Hilliard --- drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c index 405ab9a78955..040c12d07db2 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c @@ -1185,22 +1185,25 @@ static int dma_chan_terminate_all(struct dma_chan *dchan) int ret; LIST_HEAD(head); + spin_lock_irqsave(&chan->vc.lock, flags); + axi_chan_disable(chan); ret = readx_poll_timeout_atomic(axi_chan_is_hw_enable, chan, enabled, !enabled, 1 * USEC_PER_MSEC, 50 * USEC_PER_MSEC); - if (ret) + if (ret) { + spin_unlock_irqrestore(&chan->vc.lock, flags); dev_warn(dmaengine_chan_dev(dchan), "%s failed to stop\n", axi_chan_name(chan)); + return ret; + } if (chan->direction != DMA_MEM_TO_MEM) dw_axi_dma_set_hw_channel(chan, false); if (chan->direction == DMA_MEM_TO_DEV) dw_axi_dma_set_byte_halfword(chan, false); - spin_lock_irqsave(&chan->vc.lock, flags); - vchan_get_all_descriptors(&chan->vc, &head); spin_unlock_irqrestore(&chan->vc.lock, flags); -- 2.53.0