linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG
@ 2022-11-28  8:50 Jayesh Choudhary
  2022-11-29 16:27 ` Péter Ujfalusi
  2022-12-28 11:04 ` Vinod Koul
  0 siblings, 2 replies; 3+ messages in thread
From: Jayesh Choudhary @ 2022-11-28  8:50 UTC (permalink / raw)
  To: vkoul, peter.ujfalusi; +Cc: vaishnav.a, dmaengine, linux-kernel, j-choudhary

PSIL_EP_NATIVE endpoints may not have PEER registers for BCNT and thus
udma_decrement_byte_counters() should not try to decrement these counters.
This fixes the issue of crypto IPERF testing where the client side (EVM)
hangs without transfer of packets to the server side, seen since this
function was added.

Fixes: 7c94dcfa8fcf ("dmaengine: ti: k3-udma: Reset UDMA_CHAN_RT byte counters to prevent overflow")
Signed-off-by: Jayesh Choudhary <j-choudhary@ti.com>
---
 drivers/dma/ti/k3-udma.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index ce8b80bb34d7..4c62274e0b33 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -762,11 +762,12 @@ static void udma_decrement_byte_counters(struct udma_chan *uc, u32 val)
 	if (uc->desc->dir == DMA_DEV_TO_MEM) {
 		udma_rchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
 		udma_rchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
-		udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
+		if (uc->config.ep_type != PSIL_EP_NATIVE)
+			udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
 	} else {
 		udma_tchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
 		udma_tchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
-		if (!uc->bchan)
+		if (!uc->bchan && uc->config.ep_type != PSIL_EP_NATIVE)
 			udma_tchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
 	}
 }
-- 
2.25.1


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

* Re: [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG
  2022-11-28  8:50 [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG Jayesh Choudhary
@ 2022-11-29 16:27 ` Péter Ujfalusi
  2022-12-28 11:04 ` Vinod Koul
  1 sibling, 0 replies; 3+ messages in thread
From: Péter Ujfalusi @ 2022-11-29 16:27 UTC (permalink / raw)
  To: Jayesh Choudhary, vkoul; +Cc: vaishnav.a, dmaengine, linux-kernel



On 28/11/2022 10:50, Jayesh Choudhary wrote:
> PSIL_EP_NATIVE endpoints may not have PEER registers for BCNT and thus
> udma_decrement_byte_counters() should not try to decrement these counters.
> This fixes the issue of crypto IPERF testing where the client side (EVM)
> hangs without transfer of packets to the server side, seen since this
> function was added.

Right, the BCNT is available on PDMA_XY for sure, I don't know if it is 
on AASRC/MCAN type tho, but they are not used right now.

I might clarify and use ep_type == PSIL_EP_PDMA_XY to be sure that only 
the known variant is handled, but this is fine as well.

Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>

> 
> Fixes: 7c94dcfa8fcf ("dmaengine: ti: k3-udma: Reset UDMA_CHAN_RT byte counters to prevent overflow")
> Signed-off-by: Jayesh Choudhary <j-choudhary@ti.com>
> ---
>   drivers/dma/ti/k3-udma.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
> index ce8b80bb34d7..4c62274e0b33 100644
> --- a/drivers/dma/ti/k3-udma.c
> +++ b/drivers/dma/ti/k3-udma.c
> @@ -762,11 +762,12 @@ static void udma_decrement_byte_counters(struct udma_chan *uc, u32 val)
>   	if (uc->desc->dir == DMA_DEV_TO_MEM) {
>   		udma_rchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
>   		udma_rchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
> -		udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
> +		if (uc->config.ep_type != PSIL_EP_NATIVE)
> +			udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
>   	} else {
>   		udma_tchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
>   		udma_tchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
> -		if (!uc->bchan)
> +		if (!uc->bchan && uc->config.ep_type != PSIL_EP_NATIVE)
>   			udma_tchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
>   	}
>   }

-- 
Péter

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

* Re: [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG
  2022-11-28  8:50 [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG Jayesh Choudhary
  2022-11-29 16:27 ` Péter Ujfalusi
@ 2022-12-28 11:04 ` Vinod Koul
  1 sibling, 0 replies; 3+ messages in thread
From: Vinod Koul @ 2022-12-28 11:04 UTC (permalink / raw)
  To: Jayesh Choudhary; +Cc: peter.ujfalusi, vaishnav.a, dmaengine, linux-kernel

On 28-11-22, 14:20, Jayesh Choudhary wrote:
> PSIL_EP_NATIVE endpoints may not have PEER registers for BCNT and thus
> udma_decrement_byte_counters() should not try to decrement these counters.
> This fixes the issue of crypto IPERF testing where the client side (EVM)
> hangs without transfer of packets to the server side, seen since this
> function was added.

Applied, thanks

-- 
~Vinod

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

end of thread, other threads:[~2022-12-28 11:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-28  8:50 [PATCH] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG Jayesh Choudhary
2022-11-29 16:27 ` Péter Ujfalusi
2022-12-28 11:04 ` 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).