All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yusuke Goda <yusuke.goda.sx@renesas.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Matt Fleming <matt@console-pimps.org>,
	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: Thu, 26 Aug 2010 09:53:33 +0900	[thread overview]
Message-ID: <4C75BB0D.2030202@renesas.com> (raw)
In-Reply-To: <20100825160722.9c9c38c8.akpm@linux-foundation.org>

Hi Matt, Andrew

Andrew Morton wrote:
> 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.

Thank you for your actions.
I agree to new changelog.

In fact, I contributed the patch which changed changelog.
 http://www.spinics.net/lists/linux-mmc/msg02623.html
 http://www.spinics.net/lists/linux-mmc/msg02624.html
However, these will not be necessary.

Thanks,
Goda


  reply	other threads:[~2010-08-26  0:54 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
2010-08-26  0:53           ` Yusuke Goda [this message]
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=4C75BB0D.2030202@renesas.com \
    --to=yusuke.goda.sx@renesas.com \
    --cc=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 \
    /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.