Re: [PATCH] PCI: epf-mhi: return 0 on success instead of positive jiffies

From: Manivannan Sadhasivam

Date: Mon Mar 02 2026 - 00:54:54 EST


On Fri, Feb 27, 2026 at 01:15:10PM -0600, Bjorn Helgaas wrote:
> On Fri, Feb 06, 2026 at 03:05:29PM -0500, Daniel Hodges wrote:
> > wait_for_completion_timeout() returns the number of jiffies remaining
> > on success (positive value) or 0 on timeout. The pci_epf_mhi_edma_read()
> > and pci_epf_mhi_edma_write() functions use the return value directly as
> > their own return value, only converting timeout (0) to -ETIMEDOUT.
> >
> > On success, they return the positive jiffies value. The callers in
> > drivers/bus/mhi/ep/ring.c check for errors with "if (ret < 0)" for
> > read_sync and "if (ret)" for write_sync. This causes write_sync success
> > cases to be incorrectly treated as errors since the positive jiffies
> > value is non-zero.
> >
> > Fix by setting ret to 0 when wait_for_completion_timeout() succeeds.
> >
> > Fixes: 7b99aaaddabb ("PCI: epf-mhi: Add eDMA support")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Signed-off-by: Daniel Hodges <git@xxxxxxxxxxxxxxxx>
>
> Thanks for the patch!
>
> Two questions: first, is there any reason why __mhi_ep_cache_ring()
> tests for "ret < 0" but mhi_ep_ring_add_element() tests for "ret"
> (non-zero)? Could/should they both test just for non-zero, which I
> think is the typical style?
>

Yes, agree. I've sent a patch to fix this. Thanks for spotting!

> Second, the subject and commit log are perfectly correct but basically
> at the level of describing the C code. I propose something along
> these lines:
>
> PCI: epf-mhi: Return 0, not remaining timeout, when eDMA ops complete
>
> 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.
>

Ammended the commit with the above, thanks!

- Mani

--
மணிவண்ணன் சதாசிவம்