dmaengine.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] dmaengine: ti: k3-udma: Fixes for 5.6
@ 2020-02-14  9:14 Peter Ujfalusi
  2020-02-14  9:14 ` [PATCH v2 1/6] dmaengine: ti: k3-udma: Use ktime/usleep_range based TX completion check Peter Ujfalusi
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Peter Ujfalusi @ 2020-02-14  9:14 UTC (permalink / raw)
  To: vkoul
  Cc: dmaengine, linux-kernel, dan.j.williams, grygorii.strashko, vigneshr

Hi Vinod,

Recently we have uncovered silicon and driver issues which was not addressed in
the initial driver:

1. RX channel teardown will lock up the channel if we have stale data
in the DMA FIFOs and we don't have active transfer (no descriptor for UDMA).
The workaround is to use a dummy drain packet in these cases.

2. Early TX completion handling
The delayed work approach was not working efficiently causing the UART, SPI
performance to degrade, with the patch from Vignesh we see 10x performance
increase

3. TR setup for slave_sg
It was possible that the sg_len() was not multiple of 'burst * dev_width' and
because of this we ended up with incorrect TR setups.
Using a single function for TR setup makes things simpler and error prone among
slave_sg, cyclic and memcpy

4. Pause/Resume causes kernel crash
if it was called when we did not had active transfer the uc->desc was NULL.

5. The terminated cookie was never marked as completed
client will think that it is still in progress, which is not the case.
Also adding back the check for running channel in tx_status since if the channel
is not running then it implies that it has been terminated, so no transfer is
running.

Regards,
Peter
---
Peter Ujfalusi (5):
  dmaengine: ti: k3-udma: Workaround for RX teardown with stale data in
    peer
  dmaengine: ti: k3-udma: Move the TR counter calculation to helper
    function
  dmaengine: ti: k3-udma: Use the TR counter helper for slave_sg and
    cyclic
  dmaengine: ti: k3-udma: Use the channel direction in pause/resume
    functions
  dmaengine: ti: k3-udma: Fix terminated transfer handling

Vignesh Raghavendra (1):
  dmaengine: ti: k3-udma: Use ktime/usleep_range based TX completion
    check

 drivers/dma/ti/k3-udma.c | 493 ++++++++++++++++++++++++++++-----------
 1 file changed, 361 insertions(+), 132 deletions(-)

-- 
Peter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-02-19  7:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-14  9:14 [PATCH v2 0/6] dmaengine: ti: k3-udma: Fixes for 5.6 Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 1/6] dmaengine: ti: k3-udma: Use ktime/usleep_range based TX completion check Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 2/6] dmaengine: ti: k3-udma: Workaround for RX teardown with stale data in peer Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 3/6] dmaengine: ti: k3-udma: Move the TR counter calculation to helper function Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 4/6] dmaengine: ti: k3-udma: Use the TR counter helper for slave_sg and cyclic Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 5/6] dmaengine: ti: k3-udma: Use the channel direction in pause/resume functions Peter Ujfalusi
2020-02-14  9:14 ` [PATCH v2 6/6] dmaengine: ti: k3-udma: Fix terminated transfer handling Peter Ujfalusi
2020-02-19  7:39 ` [PATCH v2 0/6] dmaengine: ti: k3-udma: Fixes for 5.6 Vinod Koul

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).