From: Andrew Morton <akpm@linux-foundation.org>
To: Matt Fleming <matt@console-pimps.org>
Cc: Yusuke Goda <yusuke.goda.sx@renesas.com>,
linux-mmc@vger.kernel.org, Magnus Damm <magnus.damm@gmail.com>,
Ian Molton <ian@mnementh.co.uk>, Paul Mundt <lethal@linux-sh.org>
Subject: Re: [PATCH] tmio_mmc: Prevents unexpected status clear
Date: Wed, 25 Aug 2010 16:07:22 -0700 [thread overview]
Message-ID: <20100825160722.9c9c38c8.akpm@linux-foundation.org> (raw)
In-Reply-To: <20100825231107.45227d6a@linux-g6p1.site>
On Wed, 25 Aug 2010 23:11:07 +0100
Matt Fleming <matt@console-pimps.org> wrote:
> On Thu, 15 Jul 2010 13:25:52 -0700
> Andrew Morton <akpm@linux-foundation.org> wrote:
>
> > On Tue, 13 Jul 2010 10:16:39 +0900
> > Yusuke Goda <yusuke.goda.sx@renesas.com> wrote:
> >
> > > Hi Andrew
> > >
> > > Thank you for your comment.
> > >
> > > >> #define ack_mmc_irqs(host, i) \
> > > >> do { \
> > > >> - u32 mask;\
> > > >> - mask = sd_ctrl_read32((host), CTL_STATUS); \
> > > >> - mask &= ~((i) & TMIO_MASK_IRQ); \
> > > >> - sd_ctrl_write32((host), CTL_STATUS, mask); \
> > > >> + sd_ctrl_write32((host), CTL_STATUS, ~(i)); \
> > > >> } while (0)
> > > >
> > > > Can we have a better changelog please?
> > > >
> > > > What was wrong with the old code?
> > > >
> > > > How does the patch fix it?
> > > >
> > > > What are the user-visible runtime effects of the bug?
> > > >
> > > > (It looks like that was a pretty gross bug - how did it pass testing??)
> > > Example
> > > - CMD53(Single block read / Received data size : 64Byte)
> > >
> > > 1) Send CMD53
> > > 2) Receive "CMD53 response"
> > > 3) Call tmio_mmc_cmd_irq(host, status);
> > > -- original code ----------------------------------------------------
> > > #define ack_mmc_irqs(host, i) \
> > > do { \
> > > u32 mask;\
> > > mask = sd_ctrl_read32((host), CTL_STATUS); \
> > > < case 1 >
> > > mask &= ~((i) & TMIO_MASK_IRQ); \
> > > < case 2 >
> > > sd_ctrl_write32((host), CTL_STATUS, mask); \
> > > } while (0)
> > > ---------------------------------------------------------------------
> > >
> > > TMIO_STAT_RXRDY status will be cleared by "sd_ctrl_write32((host), CTL_STATUS, mask);"
> > > if TMIO_STAT_RXRDY becomes effective between "< case 1 >" and "< case 2 >".
> > >
> > > This causes the phenomenon that a TMIO_STAT_RXRDY interrupt does not occur.
> > > When received data are small, it rarely occurs.
> > >
> >
> > OK..
> >
> > But with both this patch and "tmio_mmc-revise-limit-on-data-size.patch"
> > the changelogs fail to describe the impact of the bug upon our users.
> > So when I sit here trying to work out whether the patches should be
> > applied to 2.6.35 and whether they should be backported into -stable, I
> > don't have enough information.
> >
> > What are your thoughts on this?
>
> Goda, do you have any more ideas on updating the changelog for this
> patch? It looks to me like this patch is a candidate for stable
> (whereas the "tmio_mmc-revise-limit-on-data-size.patch" is not, sorry
> about replying to that one first, I'm reading my mail backwards)
> because, without this patch, it's possible to miss interrupts because
> the ack_mmc_irqs() macro clears bit in the CTL_STATUS register that it
> should not do? Is that correct?
>
> If that is the case then would this be a more appropriate changelog,
>
> "tmio_mmc: Don't clear unhandled pending interrupts
>
> Previously, it was possible for ack_mmc_irqs() to clear pending
> interrupt bits in the CTL_STATUS register, even though the interrupt
> handler had not been called. This was because of a race that existed
> when doing a read-modify-write sequence on CTL_STATUS. After the
> read step in this sequence, if an interrupt occurred (causing one of the
> bits in CTL_STATUS to be set) the write step would inadvertently clear
> it.
>
> This patch eliminates this race by only writing to CTL_STATUS and
> clearing the interrupts that were passed as an argument to
> ack_mmc_irqs()."
hm, I seem to have secretly dropped this patch as well.
Oh well. I restored it as
tmio_mmc-dont-clear-unhandled-pending-interrupts.patch and tagged it
for a -stable backport. Unless I hear otherwise I'll send it in to
Linus when we return from Brazil a couple of weeks from now.
next prev parent reply other threads:[~2010-08-25 23:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-07 1:59 [PATCH] tmio_mmc: Prevents unexpected status clear Yusuke Goda
2010-07-08 21:46 ` Andrew Morton
2010-07-13 1:16 ` Yusuke Goda
2010-07-15 20:25 ` Andrew Morton
2010-08-25 22:11 ` Matt Fleming
2010-08-25 23:07 ` Andrew Morton [this message]
2010-08-26 0:53 ` Yusuke Goda
2010-08-26 6:53 ` Matt Fleming
2010-08-26 6:58 ` Magnus Damm
2010-08-26 7:26 ` Matt Fleming
2010-08-26 21:12 ` Andrew Morton
2010-08-26 22:10 ` Matt Fleming
2010-08-26 22:16 ` Andrew Morton
2010-08-26 22:30 ` Matt Fleming
2010-08-27 8:02 ` Magnus Damm
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=20100825160722.9c9c38c8.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=ian@mnementh.co.uk \
--cc=lethal@linux-sh.org \
--cc=linux-mmc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=matt@console-pimps.org \
--cc=yusuke.goda.sx@renesas.com \
/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.