From: richard.zhao@linaro.org (Richard Zhao)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 6/6] dma/imx-sdma: check whether event_id0 < 32 when set event_mask
Date: Wed, 11 Jan 2012 20:35:57 +0800 [thread overview]
Message-ID: <20120111123555.GA1916@richard-laptop> (raw)
In-Reply-To: <CAMPhdO9sGWTomtyMSTe_jC2GfvtdLR=M-z3Uzpesm9efBzhSqA@mail.gmail.com>
On Wed, Jan 11, 2012 at 02:37:08PM +0800, Eric Miao wrote:
> On Wed, Jan 11, 2012 at 9:47 AM, Richard Zhao
> <richard.zhao@freescale.com> wrote:
> > On Wed, Jan 11, 2012 at 08:53:23AM +0800, Richard Zhao wrote:
> >> On Tue, Jan 10, 2012 at 11:38:39PM +0800, Shawn Guo wrote:
> >> > On Tue, Jan 10, 2012 at 10:29:42PM +0800, Richard Zhao wrote:
> >> > > On Tue, Jan 10, 2012 at 10:20:10PM +0800, Shawn Guo wrote:
> >> > > > On Tue, Jan 10, 2012 at 03:01:50PM +0800, Richard Zhao wrote:
> >> > > > > Signed-off-by: Richard Zhao <richard.zhao@linaro.org>
> >> > > > > ---
> >> > > >
> >> > > > I think it deserves a sensible commit message explaining why the patch
> >> > > > is needed.
> >> > > If event_id0 < 32, 1 << (sdmac->event_id0 - 32) is not zero.
> >> This meant to make you clear about the patch. I'll add it in commit
> >> message.
> > unsigned int t = 31;
> > printf("%d %08x\n", t, 1 << (t-32));
> >
> > I test above code on both x86 and arm. They shows different results.
> > x86: 31 80000000
> > arm: 31 00000000
> >
> > I think we still need this patch. we shoud not let it depends on gcc's
> > behavior.
> >
> > Thanks
> > Richard
> >> > >
> >> > My point is you may explain the exact problem you are seeing without
> >> > this patch
> >> The kernel don't have event_id < 32 case yet. I found the bug when
> >> I review the code.
> >> > and how the patch helps here. ?In general, doing so would
> >> > win a warm feeling from reviewers much more easily than leaving the
> >> > commit message empty there.
> >> I understand your point that comment as much as possible.
> >>
>
> Shawn,
>
> I think Richard has made the issue quite clear here, the original
> code does seem to have some problems even to me, who do not
> understand the very details of the SDMA:
>
> - sdmac->event_mask0 = 1 << sdmac->event_id0;
> - sdmac->event_mask1 = 1 << (sdmac->event_id0 - 32);
>
> 1. if sdmac->event_id0 >= 32, which will cause event_mask0 to be incorrect
> 2. if sdmac->event_id < 32, sdmac->event_mask1 will be incorrect
>
> An alternate way is to use the standard bit operations:
>
> struct sdma_channel {
>
> ...
>
> unsigned long event_mask[2];
>
> ...
> };
>
> set_bit(sdmac->event_id0, event_mask);
>
> Which avoids branch instructions and add a bit protection for the operation
> to be atomic enough (event_mask0/1 won't be inconsistent).
It's a good idea.
Thanks
Richard
WARNING: multiple messages have this Message-ID (diff)
From: Richard Zhao <richard.zhao@linaro.org>
To: Eric Miao <eric.miao@linaro.org>
Cc: Richard Zhao <richard.zhao@freescale.com>,
Shawn Guo <shawn.guo@linaro.org>,
patches@linaro.org, vinod.koul@intel.com,
linux-kernel@vger.kernel.org, kernel@pengutronix.de,
dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 6/6] dma/imx-sdma: check whether event_id0 < 32 when set event_mask
Date: Wed, 11 Jan 2012 20:35:57 +0800 [thread overview]
Message-ID: <20120111123555.GA1916@richard-laptop> (raw)
In-Reply-To: <CAMPhdO9sGWTomtyMSTe_jC2GfvtdLR=M-z3Uzpesm9efBzhSqA@mail.gmail.com>
On Wed, Jan 11, 2012 at 02:37:08PM +0800, Eric Miao wrote:
> On Wed, Jan 11, 2012 at 9:47 AM, Richard Zhao
> <richard.zhao@freescale.com> wrote:
> > On Wed, Jan 11, 2012 at 08:53:23AM +0800, Richard Zhao wrote:
> >> On Tue, Jan 10, 2012 at 11:38:39PM +0800, Shawn Guo wrote:
> >> > On Tue, Jan 10, 2012 at 10:29:42PM +0800, Richard Zhao wrote:
> >> > > On Tue, Jan 10, 2012 at 10:20:10PM +0800, Shawn Guo wrote:
> >> > > > On Tue, Jan 10, 2012 at 03:01:50PM +0800, Richard Zhao wrote:
> >> > > > > Signed-off-by: Richard Zhao <richard.zhao@linaro.org>
> >> > > > > ---
> >> > > >
> >> > > > I think it deserves a sensible commit message explaining why the patch
> >> > > > is needed.
> >> > > If event_id0 < 32, 1 << (sdmac->event_id0 - 32) is not zero.
> >> This meant to make you clear about the patch. I'll add it in commit
> >> message.
> > unsigned int t = 31;
> > printf("%d %08x\n", t, 1 << (t-32));
> >
> > I test above code on both x86 and arm. They shows different results.
> > x86: 31 80000000
> > arm: 31 00000000
> >
> > I think we still need this patch. we shoud not let it depends on gcc's
> > behavior.
> >
> > Thanks
> > Richard
> >> > >
> >> > My point is you may explain the exact problem you are seeing without
> >> > this patch
> >> The kernel don't have event_id < 32 case yet. I found the bug when
> >> I review the code.
> >> > and how the patch helps here. In general, doing so would
> >> > win a warm feeling from reviewers much more easily than leaving the
> >> > commit message empty there.
> >> I understand your point that comment as much as possible.
> >>
>
> Shawn,
>
> I think Richard has made the issue quite clear here, the original
> code does seem to have some problems even to me, who do not
> understand the very details of the SDMA:
>
> - sdmac->event_mask0 = 1 << sdmac->event_id0;
> - sdmac->event_mask1 = 1 << (sdmac->event_id0 - 32);
>
> 1. if sdmac->event_id0 >= 32, which will cause event_mask0 to be incorrect
> 2. if sdmac->event_id < 32, sdmac->event_mask1 will be incorrect
>
> An alternate way is to use the standard bit operations:
>
> struct sdma_channel {
>
> ...
>
> unsigned long event_mask[2];
>
> ...
> };
>
> set_bit(sdmac->event_id0, event_mask);
>
> Which avoids branch instructions and add a bit protection for the operation
> to be atomic enough (event_mask0/1 won't be inconsistent).
It's a good idea.
Thanks
Richard
next prev parent reply other threads:[~2012-01-11 12:35 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-10 7:01 [PATCH 1/6] dma/imx-sdma: let sdma_run_channel call sdma_enable_channel Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 7:01 ` [PATCH 2/6] dma/imx-sdma: use readl_relaxed/writel_relaxed and use writel when necessary Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 7:01 ` [PATCH 3/6] dma/imx-sdma: call sdma_set_channel_priority after sdma_request_channel Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 7:01 ` [PATCH 4/6] dma/imx-sdma: move clk_enable out of sdma_request_channel Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 7:01 ` [PATCH 5/6] dma/imx-sdma: use num_events to validate event_id0 Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 14:02 ` Dirk Behme
2012-01-10 14:02 ` Dirk Behme
2012-01-10 14:16 ` Shawn Guo
2012-01-10 14:16 ` Shawn Guo
2012-01-10 7:01 ` [PATCH 6/6] dma/imx-sdma: check whether event_id0 < 32 when set event_mask Richard Zhao
2012-01-10 7:01 ` Richard Zhao
2012-01-10 14:20 ` Shawn Guo
2012-01-10 14:20 ` Shawn Guo
2012-01-10 14:29 ` Richard Zhao
2012-01-10 14:29 ` Richard Zhao
2012-01-10 15:38 ` Shawn Guo
2012-01-10 15:38 ` Shawn Guo
2012-01-11 0:53 ` Richard Zhao
2012-01-11 0:53 ` Richard Zhao
2012-01-11 1:47 ` Richard Zhao
2012-01-11 1:47 ` Richard Zhao
2012-01-11 6:37 ` Eric Miao
2012-01-11 6:37 ` Eric Miao
2012-01-11 12:35 ` Richard Zhao [this message]
2012-01-11 12:35 ` Richard Zhao
2012-01-11 12:53 ` Richard Zhao
2012-01-11 12:53 ` Richard Zhao
2012-01-12 14:23 ` Richard Zhao
2012-01-12 14:23 ` Richard Zhao
2012-01-11 13:16 ` Shawn Guo
2012-01-11 13:16 ` Shawn Guo
2012-01-11 13:09 ` Richard Zhao
2012-01-11 13:09 ` Richard Zhao
2012-01-11 13:35 ` Shawn Guo
2012-01-11 13:35 ` Shawn Guo
2012-01-11 13:48 ` Eric Miao
2012-01-11 13:48 ` Eric Miao
2012-01-11 13:11 ` Shawn Guo
2012-01-11 13:11 ` Shawn Guo
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=20120111123555.GA1916@richard-laptop \
--to=richard.zhao@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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.