Re: [PATCH v4 6/9] nvmet: pci-epf: Remove unnecessary dmaengine_terminate_sync() on each DMA transfer
Manivannan Sadhasivam <[email protected]> Tue, 12 May 2026 19:35:41 +0530
| Newsgroups | dev.linux.lists.mhi,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-nvme,org.kernel.vger.dmaengine,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <u4elm5jenwxp7r6zrn2ksxo2jqzkyttp2gyxufpvjhxevbtn7l@p7yr6wdbthgb> |
On Wed, May 06, 2026 at 04:44:18PM -0400, Frank Li wrote: > dmaengine_terminate_sync() cancels all pending requests. Calling it for > every DMA transfer is unnecessary and counterproductive. This function is > generally intended for cleanup paths such as module removal, device close, > or unbind operations. > > Remove the redundant calls for success path and keep it only at error path. > > Tested-by: Niklas Cassel <[email protected]> > Reviewed-by: Damien Le Moal <[email protected]> > Signed-off-by: Frank Li <[email protected]> Acked-by: Manivannan Sadhasivam <[email protected]> - Mani > --- > This one also fix stress test failure after remove mutex and use new API > dmaengine_prep_slave_sg_config(). > --- > drivers/nvme/target/pci-epf.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/nvme/target/pci-epf.c b/drivers/nvme/target/pci-epf.c > index 4e9db96ebfecd796244e5dc67c23e1abb1a14974..2afe8f4d0e46104a1b3c98db3905cf33e8c9e011 100644 > --- a/drivers/nvme/target/pci-epf.c > +++ b/drivers/nvme/target/pci-epf.c > @@ -420,10 +420,9 @@ static int nvmet_pci_epf_dma_transfer(struct nvmet_pci_epf *nvme_epf, > if (dma_sync_wait(chan, cookie) != DMA_COMPLETE) { > dev_err(dev, "DMA transfer failed\n"); > ret = -EIO; > + dmaengine_terminate_sync(chan); > } > > - dmaengine_terminate_sync(chan); > - > unmap: > dma_unmap_single(dma_dev, dma_addr, seg->length, dir); > > > -- > 2.43.0 > -- மணிவண்ணன் சதாசிவம்