]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: epf-mhi: Return 0, not remaining timeout, when eDMA ops complete
authorDaniel Hodges <git@danielhodges.dev>
Fri, 6 Feb 2026 20:05:29 +0000 (15:05 -0500)
committerManivannan Sadhasivam <mani@kernel.org>
Mon, 2 Mar 2026 05:51:31 +0000 (11:21 +0530)
pci_epf_mhi_edma_read() and pci_epf_mhi_edma_write() start DMA
operations and wait for completion with a timeout.

On successful completion, they previously returned the remaining
timeout, which callers may treat as an error.  In particular,
mhi_ep_ring_add_element(), which calls pci_epf_mhi_edma_write() via
mhi_cntrl->write_sync(), interprets any non-zero return value as
failure.

Return 0 on success instead of the remaining timeout to prevent
mhi_ep_ring_add_element() from treating successful completion as an
error.

Fixes: 7b99aaaddabb ("PCI: epf-mhi: Add eDMA support")
Signed-off-by: Daniel Hodges <git@danielhodges.dev>
[mani: changed commit log as per https://lore.kernel.org/linux-pci/20260227191510.GA3904799@bhelgaas]
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260206200529.10784-1-git@danielhodges.dev
drivers/pci/endpoint/functions/pci-epf-mhi.c

index f9cf18aa5b342181939058fa7121feed66fc6d04..7f5326925ed54abf4ae75c465dfe0a9bab37ce40 100644 (file)
@@ -367,6 +367,8 @@ static int pci_epf_mhi_edma_read(struct mhi_ep_cntrl *mhi_cntrl,
                dev_err(dev, "DMA transfer timeout\n");
                dmaengine_terminate_sync(chan);
                ret = -ETIMEDOUT;
+       } else {
+               ret = 0;
        }
 
 err_unmap:
@@ -438,6 +440,8 @@ static int pci_epf_mhi_edma_write(struct mhi_ep_cntrl *mhi_cntrl,
                dev_err(dev, "DMA transfer timeout\n");
                dmaengine_terminate_sync(chan);
                ret = -ETIMEDOUT;
+       } else {
+               ret = 0;
        }
 
 err_unmap: