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?
next prev 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).