All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ulf Hansson <ulf.hansson@stericsson.com>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: "linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	Chris Ball <cjb@laptop.org>,
	Per FORLIN <per.forlin@stericsson.com>,
	Johan RUDHOLM <johan.rudholm@stericsson.com>,
	Lee Jones <lee.jones@linaro.org>
Subject: Re: [PATCH] mmc: core: Force a "detect" to handle non-properly removed cards
Date: Fri, 13 Jan 2012 14:14:28 +0100	[thread overview]
Message-ID: <4F102E34.6030704@stericsson.com> (raw)
In-Reply-To: <4F101ED5.9090007@intel.com>

>>>> In principles this means the following sequence:
>>>>
>>>> We will rely on that the get_cd function will return 0 (indicating card is
>>>> removed) when the card is "slowly" removed at the point when the rescan
>>>> function is calling it through the bus_ops->detect -->
>>>> _mmc_detect_card_removed function.
>>>>
>>>> This then becomes a race, meaning that the rescan function must be executing
>>>> at the same time the get_cd function will returns 0. Otherwise the rescan
>>>> function will not remove the card.
>>>>
>>>> Thus my conclusion is that "[PATCH 2/4 v4] MMC/SD: Add callback function to
>>>> detect card" will likely improve behavior but is not the safe solution to
>>>> handle "slowly" removed cards.
>>>>
>>>> Again, to be sure, we must let the mmc_detect_card_remove function trigger a
>>>> rescan when _mmc_detect_card_removed has detected that the card is removed.
>>>> This should be safe in all circumstances.
>>> sdhci has no problem because it does this:
>>>
>>>     - the host controller debounces the card detect line
>>>     - the host controller records whether or not the card is present
>>>     - the sdhci driver prevents (errors out) requests when the card is
>>>     not present
>> Debouncing will just be a way of triggering the problem more seldom. Or in
>> worst case, state the card has been removed even if it has not.
> 
> If a delay is used with mmc_detect_change, debouncing is not necessary.
> 
>> Just because you get a GPIO irq on the detect line does not mean the card is
>> removed, debouncing or not. I consider this as pure mechanical switch which
>> likely has glitches and I don't see that we should trust it fully. We only
>> want to trigger a detect work, which is exactly what is done in the patch
>> from Guennadi Liakhovetski "mmc: add a generic GPIO card-detect helper".
> 
> The original problem was "slow card removal".  "Unreliable card detect"
> is a separate problem.  Currently there is polling (MMC_CAP_NEEDS_POLL)
> for that.  Alternatively there is MMC_CAP2_RESCAN_ON_ERROR as we have discussed.

I do not understand why you mention "Unreliable card detect"? That has 
nothing to do with this patch.

So to conclude the discussion, do you believe that this patch is 
acceptable as long as we add a CAPS2 option "MMC_CAP2_RESCAN_ON_ERROR", 
which if not set will prevent the detect work from being scheduled from 
mmc_detect_card_removed?

> 
>> If each host driver that supports GPIO card detect makes use of the
>> card-detect helper and if we accept a version of this patch, I think the
>> situation should be safe in all cases. Moreover GPIO debouncing will never
>> be needed for GPIO card detect for your sdhci driver either.
> 
> Safe in all cases, except at least the 3 already given:
> 	- card is buggy and sometimes fails several commands in a row
I doubt this will become a real problem. If a card fails several times 
in a row, upper FS layers wont be happy either. So likely we are screwed 
anyway. Don't you think?
> 	- upper layers want to attempt to recover an unresponsive card
This is not implemented as of right now. I see no problem that my patch 
will prevent this from being implemented in the future.
> 	- even in the case of slow removal, the vendor wants the card
> 	to show as removed immediately whether or not there is any I/O
That is correct and can not be fully solved unless you use 
MMC_CAP_NEEDS_POLL. I doubt that one would like to use polling in favor 
of card detect only to take care of this issue though. So I believe it 
is more likely you want to trigger a card removal when receiving I/O. 
Kind of "Better late than never". :-)


By the way, thanks for keeping up the frequency in this quite long 
discussion.

BR
Ulf Hansson

  reply	other threads:[~2012-01-13 13:15 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-03 10:33 [PATCH] mmc: core: Force a "detect" to handle non-properly removed cards Ulf Hansson
2012-01-04  9:40 ` Linus Walleij
2012-01-04 21:26 ` Adrian Hunter
2012-01-09 11:02   ` Ulf Hansson
2012-01-09 12:07     ` Adrian Hunter
2012-01-09 13:14       ` Ulf Hansson
2012-01-09 13:53         ` Adrian Hunter
2012-01-09 14:27           ` Ulf Hansson
2012-01-10  9:22             ` Adrian Hunter
2012-01-10 10:59               ` Ulf Hansson
2012-01-10 12:10                 ` Adrian Hunter
2012-01-13 10:04                   ` Ulf Hansson
2012-01-13 10:43                     ` Adrian Hunter
2012-01-13 11:31                       ` Ulf Hansson
2012-01-13 12:08                         ` Adrian Hunter
2012-01-13 13:14                           ` Ulf Hansson [this message]
2012-01-13 13:43                             ` Adrian Hunter
2012-01-13 14:35                               ` Ulf Hansson
2012-01-16  7:45                                 ` Adrian Hunter
2012-01-16 11:09                                   ` Ulf Hansson
2012-01-10  9:33             ` Adrian Hunter
2012-01-10 11:03               ` Ulf Hansson
2012-01-10 12:21                 ` Adrian Hunter
2012-01-09 14:34           ` Ulf Hansson

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=4F102E34.6030704@stericsson.com \
    --to=ulf.hansson@stericsson.com \
    --cc=adrian.hunter@intel.com \
    --cc=cjb@laptop.org \
    --cc=johan.rudholm@stericsson.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=per.forlin@stericsson.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.