All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Fleming <matt@console-pimps.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Yusuke Goda <yusuke.goda.sx@renesas.com>,
	linux-mmc@vger.kernel.org, Magnus Damm <magnus.damm@gmail.com>
Subject: Re: [PATCH] tmio_mmc: Prevents unexpected status clear
Date: Wed, 25 Aug 2010 23:11:07 +0100	[thread overview]
Message-ID: <20100825231107.45227d6a@linux-g6p1.site> (raw)
In-Reply-To: <20100715132552.fcb5791b.akpm@linux-foundation.org>

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()."

  reply	other threads:[~2010-08-25 22:11 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 [this message]
2010-08-25 23:07         ` Andrew Morton
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=20100825231107.45227d6a@linux-g6p1.site \
    --to=matt@console-pimps.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --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.