Re: [PATCH] dmaengine: pl330: get transfer count for BUSY descriptor in list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 18, 2016 at 4:08 AM, Hsin-Yu Chao <hychao@xxxxxxxxxxxx> wrote:
>
> A descrptor of status BUSY could stay in pending list with non-zero
> number of transferred count. In this case we should query the actual
> transfered count or the total residual will be wrong and cause
> unexpected hw_ptr move.
>
> Signed-off-by: Hsin-Yu Chao <hychao@xxxxxxxxxxxx>
> ---
>  drivers/dma/pl330.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> index 4fc3ffb..39230d9 100644
> --- a/drivers/dma/pl330.c
> +++ b/drivers/dma/pl330.c
> @@ -2295,7 +2295,7 @@ pl330_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
>         list_for_each_entry(desc, &pch->work_list, node) {
>                 if (desc->status == DONE)
>                         transferred = desc->bytes_requested;
> -               else if (running && desc == running)
> +               else if ((running && desc == running) || (desc->status == BUSY))
This doesn't do quite what we want, pl330_get_current_xferred_count is
valid against the current running transfer only. In the case that
there's a BUSY desc in the work queue that hasn't been started yet, or
has already finished, we're going to get an invalid result since the
source address won't match what is in the desc.

>                         transferred =
>                                 pl330_get_current_xferred_count(pch, desc);
>                 else
> --
> 2.6.6
>
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux