linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Osipenko <digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "Jon Hunter" <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	"Laxman Dewangan"
	<ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	"Vinod Koul" <vkoul-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"Dan Williams"
	<dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"Thierry Reding"
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Michał Mirosław"
	<mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org>
Cc: dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v7 13/19] dmaengine: tegra-apb: Don't stop cyclic DMA in a case of error condition
Date: Tue, 4 Feb 2020 18:55:03 +0300	[thread overview]
Message-ID: <ad86f2a4-6fa0-7958-aad7-1b18f02cabfe@gmail.com> (raw)
In-Reply-To: <332e8e86-dca5-19f2-9ef1-6d89a55f3651-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

04.02.2020 15:02, Jon Hunter пишет:
> 
> On 02/02/2020 22:28, Dmitry Osipenko wrote:
>> There is no harm in keeping DMA active in the case of error condition,
>> which should never happen in practice anyways. This will become useful
>> for the next patch, which will keep RPM enabled only during of DMA
>> transfer, and thus, it will be much nicer if cyclic DMA handler could
>> not touch the DMA-enable state.
>>
>> Signed-off-by: Dmitry Osipenko <digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>>  drivers/dma/tegra20-apb-dma.c | 9 +++++----
>>  1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
>> index c7dc27ef1856..50abce608318 100644
>> --- a/drivers/dma/tegra20-apb-dma.c
>> +++ b/drivers/dma/tegra20-apb-dma.c
>> @@ -571,9 +571,7 @@ static bool handle_continuous_head_request(struct tegra_dma_channel *tdc,
>>  	 */
>>  	hsgreq = list_first_entry(&tdc->pending_sg_req, typeof(*hsgreq), node);
>>  	if (!hsgreq->configured) {
>> -		tegra_dma_stop(tdc);
>> -		dev_err(tdc2dev(tdc), "Error in DMA transfer, aborting DMA\n");
>> -		tegra_dma_abort_all(tdc);
>> +		dev_err_ratelimited(tdc2dev(tdc), "Error in DMA transfer\n");
> 
> While we are at it, a more descriptive error message could be good here.
> I believe that this condition would indicate a potential underrun condition.

Yes, this error indicates the underrun and indeed the error message
could be improved. I'll change it in v8.

>>  		return false;
>>  	}
>>  
>> @@ -772,7 +770,10 @@ static int tegra_dma_terminate_all(struct dma_chan *dc)
>>  	if (!list_empty(&tdc->pending_sg_req) && was_busy) {
>>  		sgreq = list_first_entry(&tdc->pending_sg_req, typeof(*sgreq),
>>  					 node);
>> -		sgreq->dma_desc->bytes_transferred +=
>> +		dma_desc = sgreq->dma_desc;
>> +
>> +		if (dma_desc->dma_status != DMA_ERROR)
>> +			dma_desc->bytes_transferred +=
>>  				get_current_xferred_count(tdc, sgreq, wcount);
> 
> I am wondering if we need to check this here? I assume that the transfer
> count would still reflect the amount of data transferred, even if some
> was dropped. We will never know how much data was lost.

I'm wondering too.. stopping DMA in a error case removes this ambiguity
and that's why in my previous answer to v6 I suggested to drop this patch.

Do you think it's worth to keep this patch?

  parent reply	other threads:[~2020-02-04 15:55 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-02 22:28 [PATCH v7 00/19] NVIDIA Tegra APB DMA driver fixes and improvements Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 02/19] dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list Dmitry Osipenko
     [not found] ` <20200202222854.18409-1-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-02 22:28   ` [PATCH v7 01/19] dmaengine: tegra-apb: Fix use-after-free Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 03/19] dmaengine: tegra-apb: Implement synchronization hook Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 05/19] dmaengine: tegra-apb: Clean up tasklet releasing Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 06/19] dmaengine: tegra-apb: Use devm_platform_ioremap_resource Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 07/19] dmaengine: tegra-apb: Use devm_request_irq Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 10/19] dmaengine: tegra-apb: Remove assumptions about unavailable runtime PM Dmitry Osipenko
     [not found]     ` <20200202222854.18409-11-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-04 14:51       ` Jon Hunter
2020-02-02 22:28   ` [PATCH v7 12/19] dmaengine: tegra-apb: Remove handling of unrealistic error condition Dmitry Osipenko
     [not found]     ` <20200202222854.18409-13-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-04 11:52       ` Jon Hunter
     [not found]         ` <b2461a42-5939-b2b1-01fe-6f18c860dbd9-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-02-04 22:17           ` Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 15/19] dmaengine: tegra-apb: Clean up suspend-resume Dmitry Osipenko
2020-02-02 22:28   ` [PATCH v7 19/19] dmaengine: tegra-apb: Support COMPILE_TEST Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 04/19] dmaengine: tegra-apb: Prevent race conditions on channel's freeing Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 08/19] dmaengine: tegra-apb: Fix coding style problems Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 09/19] dmaengine: tegra-apb: Remove unneeded initialization of tdc->config_init Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 11/19] dmaengine: tegra-apb: Remove pending_sg_req checking from tdc_start_head_req Dmitry Osipenko
     [not found]   ` <20200202222854.18409-12-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-04 14:53     ` Jon Hunter
2020-02-02 22:28 ` [PATCH v7 13/19] dmaengine: tegra-apb: Don't stop cyclic DMA in a case of error condition Dmitry Osipenko
     [not found]   ` <20200202222854.18409-14-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-04 12:02     ` Jon Hunter
     [not found]       ` <332e8e86-dca5-19f2-9ef1-6d89a55f3651-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-02-04 15:55         ` Dmitry Osipenko [this message]
2020-02-02 22:28 ` [PATCH v7 14/19] dmaengine: tegra-apb: Keep clock enabled only during of DMA transfer Dmitry Osipenko
     [not found]   ` <20200202222854.18409-15-digetx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-06 13:50     ` Jon Hunter
     [not found]       ` <ca0f71ef-ba16-73bc-d904-1f5351c69931-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-02-06 14:31         ` Dmitry Osipenko
     [not found]           ` <3133d4e3-7623-9342-f26c-5de8b4e6b8c6-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-06 14:33             ` Jon Hunter
2020-02-02 22:28 ` [PATCH v7 16/19] dmaengine: tegra-apb: Add missing of_dma_controller_free Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 17/19] dmaengine: tegra-apb: Allow to compile as a loadable kernel module Dmitry Osipenko
2020-02-02 22:28 ` [PATCH v7 18/19] dmaengine: tegra-apb: Remove MODULE_ALIAS Dmitry Osipenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ad86f2a4-6fa0-7958-aad7-1b18f02cabfe@gmail.com \
    --to=digetx-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mirq-linux-CoA6ZxLDdyEEUmgCuDUIdw@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=vkoul-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).