From: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
To: Joel Fernandes <agnel.joel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Mark Brown <broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
Sricharan R <r.sricharan-l0cyMroinI0@public.gmane.org>,
Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
Joel Fernandes <joelf-l0cyMroinI0@public.gmane.org>,
Lokesh Vutla <lokeshvutla-l0cyMroinI0@public.gmane.org>,
Chris Ball <cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Rajendra Nayak <rnayak-l0cyMroinI0@public.gmane.org>,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
Jason Kridner <jkridner-hcmAuCOw+vXj4SYmN/TMmA@public.gmane.org>,
Linux OMAP List
<linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Linux ARM Kernel List
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
Linux DaVinci Kernel List
<davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org>,
Balaji TK <balajitk-l0cyMroinI0@public.gmane.org>,
Linux MMC List
<linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Linux Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v3 02/12] ARM: edma: Don't clear EMR of channel in edma_stop
Date: Mon, 12 Aug 2013 11:54:11 +0530 [thread overview]
Message-ID: <52087F8B.1080002@ti.com> (raw)
In-Reply-To: <CAD=GYpa75vqz120O2McxTXsPCWFb+RsO+7dZ4WRNQJgb3W=E=A@mail.gmail.com>
On Monday 12 August 2013 09:59 AM, Joel Fernandes wrote:
> On Sun, Aug 11, 2013 at 11:25 PM, Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org> wrote:
>> On 8/8/2013 5:19 PM, Sekhar Nori wrote:
>>> On Monday 05 August 2013 09:44 PM, Joel Fernandes wrote:
>>>> We certainly don't want error conditions to be cleared any other
>>>> place but the EDMA error handler, as this will make us 'forget'
>>>> about missed events we might need to know errors have occurred.
>>>>
>>>> This fixes a race condition where the EMR was being cleared
>>>> by the transfer completion interrupt handler.
>>>>
>>>> Basically, what was happening was:
>>>>
>>>> Missed event
>>>> |
>>>> |
>>>> V
>>>> SG1-SG2-SG3-Null
>>>> \
>>>> \__TC Interrupt (Almost same time as ARM is executing
>>>> TC interrupt handler, an event got missed and also forgotten
>>>> by clearing the EMR).
>>>>
>>>> This causes the following problems:
>>>>
>>>> 1.
>>>> If error interrupt is also pending and TC interrupt clears the EMR
>>>> by calling edma_stop as has been observed in the edma_callback function,
>>>> the ARM will execute the error interrupt even though the EMR is clear.
>>>> As a result, the dma_ccerr_handler returns IRQ_NONE. If this happens
>>>> enough number of times, IRQ subsystem disables the interrupt thinking
>>>> its spurious which makes error handler never execute again.
>>>>
>>>> 2.
>>>> Also even if error handler doesn't return IRQ_NONE, the removing of EMR
>>>> removes the knowledge about which channel had a missed event, and thus
>>>> a manual trigger on such channels cannot be performed.
>>>>
>>>> The EMR is ultimately being cleared by the Error interrupt handler
>>>> once it is handled so we remove code that does it in edma_stop and
>>>> allow it to happen there.
>>>>
>>>> Signed-off-by: Joel Fernandes <joelf-l0cyMroinI0@public.gmane.org>
>>>
>>> Queuing this for v3.11 fixes. While committing, I changed the headline
>>> to remove capitalization and made it more readable by removing register
>>> level details. The new headline is:
>>>
>>> ARM: edma: don't clear missed events in edma_stop()
>>
>> Forgot to ask, should this be tagged for stable? IOW, how serious is
>> this race in current kernel (without the entire series applied)? I have
>> never observed it myself - so please provide details how easy/difficult
>> it is to hit this condition.
>
> The race was uncovered by recent EDMA patch series, So this patch can
> go in for next kernel release as such, I am not aware of any other DMA
> user that maybe uncovering the race condition.
Okay, I wont queue for -rc then. If Vinod wants to take this along with
rest of the series, you can add my:
Acked-by: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
Thanks,
Sekhar
WARNING: multiple messages have this Message-ID (diff)
From: nsekhar@ti.com (Sekhar Nori)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 02/12] ARM: edma: Don't clear EMR of channel in edma_stop
Date: Mon, 12 Aug 2013 11:54:11 +0530 [thread overview]
Message-ID: <52087F8B.1080002@ti.com> (raw)
In-Reply-To: <CAD=GYpa75vqz120O2McxTXsPCWFb+RsO+7dZ4WRNQJgb3W=E=A@mail.gmail.com>
On Monday 12 August 2013 09:59 AM, Joel Fernandes wrote:
> On Sun, Aug 11, 2013 at 11:25 PM, Sekhar Nori <nsekhar@ti.com> wrote:
>> On 8/8/2013 5:19 PM, Sekhar Nori wrote:
>>> On Monday 05 August 2013 09:44 PM, Joel Fernandes wrote:
>>>> We certainly don't want error conditions to be cleared any other
>>>> place but the EDMA error handler, as this will make us 'forget'
>>>> about missed events we might need to know errors have occurred.
>>>>
>>>> This fixes a race condition where the EMR was being cleared
>>>> by the transfer completion interrupt handler.
>>>>
>>>> Basically, what was happening was:
>>>>
>>>> Missed event
>>>> |
>>>> |
>>>> V
>>>> SG1-SG2-SG3-Null
>>>> \
>>>> \__TC Interrupt (Almost same time as ARM is executing
>>>> TC interrupt handler, an event got missed and also forgotten
>>>> by clearing the EMR).
>>>>
>>>> This causes the following problems:
>>>>
>>>> 1.
>>>> If error interrupt is also pending and TC interrupt clears the EMR
>>>> by calling edma_stop as has been observed in the edma_callback function,
>>>> the ARM will execute the error interrupt even though the EMR is clear.
>>>> As a result, the dma_ccerr_handler returns IRQ_NONE. If this happens
>>>> enough number of times, IRQ subsystem disables the interrupt thinking
>>>> its spurious which makes error handler never execute again.
>>>>
>>>> 2.
>>>> Also even if error handler doesn't return IRQ_NONE, the removing of EMR
>>>> removes the knowledge about which channel had a missed event, and thus
>>>> a manual trigger on such channels cannot be performed.
>>>>
>>>> The EMR is ultimately being cleared by the Error interrupt handler
>>>> once it is handled so we remove code that does it in edma_stop and
>>>> allow it to happen there.
>>>>
>>>> Signed-off-by: Joel Fernandes <joelf@ti.com>
>>>
>>> Queuing this for v3.11 fixes. While committing, I changed the headline
>>> to remove capitalization and made it more readable by removing register
>>> level details. The new headline is:
>>>
>>> ARM: edma: don't clear missed events in edma_stop()
>>
>> Forgot to ask, should this be tagged for stable? IOW, how serious is
>> this race in current kernel (without the entire series applied)? I have
>> never observed it myself - so please provide details how easy/difficult
>> it is to hit this condition.
>
> The race was uncovered by recent EDMA patch series, So this patch can
> go in for next kernel release as such, I am not aware of any other DMA
> user that maybe uncovering the race condition.
Okay, I wont queue for -rc then. If Vinod wants to take this along with
rest of the series, you can add my:
Acked-by: Sekhar Nori <nsekhar@ti.com>
Thanks,
Sekhar
WARNING: multiple messages have this Message-ID (diff)
From: Sekhar Nori <nsekhar@ti.com>
To: Joel Fernandes <agnel.joel@gmail.com>
Cc: Joel Fernandes <joelf@ti.com>, Mark Brown <broonie@linaro.org>,
Tony Lindgren <tony@atomide.com>,
Grant Likely <grant.likely@secretlab.ca>,
Sricharan R <r.sricharan@ti.com>,
Russell King <linux@arm.linux.org.uk>,
Vinod Koul <vinod.koul@intel.com>,
Lokesh Vutla <lokeshvutla@ti.com>, Chris Ball <cjb@laptop.org>,
Arnd Bergmann <arnd@arndb.de>, Rajendra Nayak <rnayak@ti.com>,
Rob Herring <rob.herring@calxeda.com>,
Jason Kridner <jkridner@beagleboard.org>,
Linux OMAP List <linux-omap@vger.kernel.org>,
Linux ARM Kernel List <linux-arm-kernel@lists.infradead.org>,
Linux DaVinci Kernel List
<davinci-linux-open-source@linux.davincidsp.com>,
Balaji TK <balajitk@ti.com>,
Linux MMC List <linux-mmc@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Santosh Shilimkar <santosh.shilimkar@ti.com>,
Dan Williams <djbw@fb.com>, Olof Johansson <olof@lixom.net>,
Benoit Cousson <benoit.cousson@linaro.org>
Subject: Re: [PATCH v3 02/12] ARM: edma: Don't clear EMR of channel in edma_stop
Date: Mon, 12 Aug 2013 11:54:11 +0530 [thread overview]
Message-ID: <52087F8B.1080002@ti.com> (raw)
In-Reply-To: <CAD=GYpa75vqz120O2McxTXsPCWFb+RsO+7dZ4WRNQJgb3W=E=A@mail.gmail.com>
On Monday 12 August 2013 09:59 AM, Joel Fernandes wrote:
> On Sun, Aug 11, 2013 at 11:25 PM, Sekhar Nori <nsekhar@ti.com> wrote:
>> On 8/8/2013 5:19 PM, Sekhar Nori wrote:
>>> On Monday 05 August 2013 09:44 PM, Joel Fernandes wrote:
>>>> We certainly don't want error conditions to be cleared any other
>>>> place but the EDMA error handler, as this will make us 'forget'
>>>> about missed events we might need to know errors have occurred.
>>>>
>>>> This fixes a race condition where the EMR was being cleared
>>>> by the transfer completion interrupt handler.
>>>>
>>>> Basically, what was happening was:
>>>>
>>>> Missed event
>>>> |
>>>> |
>>>> V
>>>> SG1-SG2-SG3-Null
>>>> \
>>>> \__TC Interrupt (Almost same time as ARM is executing
>>>> TC interrupt handler, an event got missed and also forgotten
>>>> by clearing the EMR).
>>>>
>>>> This causes the following problems:
>>>>
>>>> 1.
>>>> If error interrupt is also pending and TC interrupt clears the EMR
>>>> by calling edma_stop as has been observed in the edma_callback function,
>>>> the ARM will execute the error interrupt even though the EMR is clear.
>>>> As a result, the dma_ccerr_handler returns IRQ_NONE. If this happens
>>>> enough number of times, IRQ subsystem disables the interrupt thinking
>>>> its spurious which makes error handler never execute again.
>>>>
>>>> 2.
>>>> Also even if error handler doesn't return IRQ_NONE, the removing of EMR
>>>> removes the knowledge about which channel had a missed event, and thus
>>>> a manual trigger on such channels cannot be performed.
>>>>
>>>> The EMR is ultimately being cleared by the Error interrupt handler
>>>> once it is handled so we remove code that does it in edma_stop and
>>>> allow it to happen there.
>>>>
>>>> Signed-off-by: Joel Fernandes <joelf@ti.com>
>>>
>>> Queuing this for v3.11 fixes. While committing, I changed the headline
>>> to remove capitalization and made it more readable by removing register
>>> level details. The new headline is:
>>>
>>> ARM: edma: don't clear missed events in edma_stop()
>>
>> Forgot to ask, should this be tagged for stable? IOW, how serious is
>> this race in current kernel (without the entire series applied)? I have
>> never observed it myself - so please provide details how easy/difficult
>> it is to hit this condition.
>
> The race was uncovered by recent EDMA patch series, So this patch can
> go in for next kernel release as such, I am not aware of any other DMA
> user that maybe uncovering the race condition.
Okay, I wont queue for -rc then. If Vinod wants to take this along with
rest of the series, you can add my:
Acked-by: Sekhar Nori <nsekhar@ti.com>
Thanks,
Sekhar
next prev parent reply other threads:[~2013-08-12 6:24 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-05 16:14 [PATCH v3 00/12] edma: Add support for SG lists of any length Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 03/12] dma: edma: remove limits on number of slots Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-4-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-12 7:17 ` Sekhar Nori
2013-08-12 7:17 ` Sekhar Nori
2013-08-12 7:17 ` Sekhar Nori
2013-08-05 16:14 ` [PATCH v3 04/12] dma: edma: Write out and handle MAX_NR_SG at a given time Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 05/12] ARM: edma: Add function to enable interrupt for a PaRAM slot Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 06/12] ARM: edma: Add pr_debug in edma_link Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 07/12] dma: edma: Add function to dump a PaRAM set from PaRAM Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-8-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-12 5:52 ` Sekhar Nori
2013-08-12 5:52 ` Sekhar Nori
2013-08-12 5:52 ` Sekhar Nori
[not found] ` <52087824.60002-l0cyMroinI0@public.gmane.org>
2013-08-13 1:06 ` Joel Fernandes
2013-08-13 1:06 ` Joel Fernandes
2013-08-13 1:06 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 08/12] dma: edma: Add one more required slot to MAX slots Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-12 5:56 ` Sekhar Nori
2013-08-12 5:56 ` Sekhar Nori
2013-08-12 5:56 ` Sekhar Nori
2013-08-12 13:31 ` Mark Brown
2013-08-12 13:31 ` Mark Brown
2013-08-12 13:31 ` Mark Brown
[not found] ` <20130812133111.GZ6427-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-08-12 18:19 ` Joel Fernandes
2013-08-12 18:19 ` Joel Fernandes
2013-08-12 18:19 ` Joel Fernandes
[not found] ` <52087921.8040101-l0cyMroinI0@public.gmane.org>
2013-08-13 1:08 ` Joel Fernandes
2013-08-13 1:08 ` Joel Fernandes
2013-08-13 1:08 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 09/12] dma: edma: Implement multiple linked sets for continuity Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-10-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-12 18:56 ` Sekhar Nori
2013-08-12 18:56 ` Sekhar Nori
2013-08-12 18:56 ` Sekhar Nori
[not found] ` <52092FF7.7040508-l0cyMroinI0@public.gmane.org>
2013-08-13 1:00 ` Joel Fernandes
2013-08-13 1:00 ` Joel Fernandes
2013-08-13 1:00 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 10/12] dma: edma: Check if MAX_NR_SG is even in prep function Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 11/12] dma: edma: Keep tracking of Pending interrupts (pending_acks) Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 12/12] dma: edma: Return if nothing left todo in edma_execute Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-1-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-05 16:14 ` [PATCH v3 01/12] dma: edma: Setup parameters to DMA MAX_NR_SG at a time Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-2-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-12 7:15 ` Sekhar Nori
2013-08-12 7:15 ` Sekhar Nori
2013-08-12 7:15 ` Sekhar Nori
[not found] ` <52088B8B.9040000-l0cyMroinI0@public.gmane.org>
2013-08-12 23:55 ` Joel Fernandes
2013-08-12 23:55 ` Joel Fernandes
2013-08-12 23:55 ` Joel Fernandes
[not found] ` <52097604.7010503-l0cyMroinI0@public.gmane.org>
2013-08-13 0:19 ` Joel Fernandes
2013-08-13 0:19 ` Joel Fernandes
2013-08-13 0:19 ` Joel Fernandes
2013-08-13 0:05 ` Joel Fernandes
2013-08-13 0:05 ` Joel Fernandes
2013-08-13 0:05 ` Joel Fernandes
2013-08-05 16:14 ` [PATCH v3 02/12] ARM: edma: Don't clear EMR of channel in edma_stop Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
2013-08-05 16:14 ` Joel Fernandes
[not found] ` <1375719297-12871-3-git-send-email-joelf-l0cyMroinI0@public.gmane.org>
2013-08-08 11:49 ` Sekhar Nori
2013-08-08 11:49 ` Sekhar Nori
2013-08-08 11:49 ` Sekhar Nori
[not found] ` <520385D3.1060408-l0cyMroinI0@public.gmane.org>
2013-08-12 4:25 ` Sekhar Nori
2013-08-12 4:25 ` Sekhar Nori
2013-08-12 4:25 ` Sekhar Nori
2013-08-12 4:29 ` Joel Fernandes
2013-08-12 4:29 ` Joel Fernandes
2013-08-12 4:29 ` Joel Fernandes
2013-08-12 6:24 ` Sekhar Nori [this message]
2013-08-12 6:24 ` Sekhar Nori
2013-08-12 6:24 ` Sekhar Nori
2013-08-16 5:57 ` [PATCH v3 00/12] edma: Add support for SG lists of any length Joel Fernandes
2013-08-16 5:57 ` Joel Fernandes
2013-08-16 5:57 ` Joel Fernandes
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=52087F8B.1080002@ti.com \
--to=nsekhar-l0cymroini0@public.gmane.org \
--cc=agnel.joel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=balajitk-l0cyMroinI0@public.gmane.org \
--cc=broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org \
--cc=davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org \
--cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
--cc=jkridner-hcmAuCOw+vXj4SYmN/TMmA@public.gmane.org \
--cc=joelf-l0cyMroinI0@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lokeshvutla-l0cyMroinI0@public.gmane.org \
--cc=r.sricharan-l0cyMroinI0@public.gmane.org \
--cc=rnayak-l0cyMroinI0@public.gmane.org \
--cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
--cc=vinod.koul-ral2JQCrhuEAvxtiuMwx3w@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.