linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
	Aaron Lu <aaron.lu@intel.com>, Philip Rakity <prakity@nvidia.com>,
	Al Cooper <alcooperx@gmail.com>,
	Arend van Spriel <arend@broadcom.com>
Subject: Re: [PATCH V4 01/15] mmc: host: Add facility to support re-tuning
Date: Wed, 01 Apr 2015 14:47:54 +0300	[thread overview]
Message-ID: <551BDAEA.20405@intel.com> (raw)
In-Reply-To: <CAPDyKFrs4X+nDDkikUNSO5uz+Wsoz3TmkLJ9RwvvdjYqd8+Ygg@mail.gmail.com>

On 01/04/15 12:50, Ulf Hansson wrote:
> On 27 March 2015 at 21:57, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> Currently, there is core support for tuning during
>> initialization. There can also be a need to re-tune
>> periodically (e.g. sdhci) or to re-tune after the
>> host controller is powered off (e.g. after PM
>> runtime suspend / resume) or to re-tune in response
>> to CRC errors.
>>
>> The main requirements for re-tuning are:
> 
> It's a bit hard to follow why these requirements.

Yes they are driven by SDHCI requirements.

> 
> I am giving some comments below, also for my own reference. Please
> tell me if I am way off.
> 
>>   - ability to enable / disable re-tuning
> 
> Handled internally by the mmc core.

The host controller driver enables re-tuning based on whether the host
controller requires it for that transfer mode. For example, only the SDHCI
host controller knows if tuning is required for SDR50 mode according to the
SDHCI capability register bit 45.

> 
> Or maybe SDIO func drivers needs an API to control this?

No - it is for the host controller drivers.

> 
>>   - ability to flag that re-tuning is needed
> 
> Both from mmc core and mmc host point of view.

At the moment only the host controller driver flags re-tuning is needed.

> 
>>   - ability to re-tune before any request
> 
> Internal mechanism by the core.

Yes

> 
>>   - ability to hold off re-tuning if the card is busy
> 
> What do you mean by "card is busy"?

I guess, more accurately, any time the card is in a state that is incapable
of supporting re-tuning. For example:
	- DAT0 busy
	- between dependent commands like erase start, end, etc
	- card is asleep
Also SDIO cards can have a custom sleep state where tuning won't work.

> Is this requirement due to that the re-tune timer may complete at any
> point, which then flags that a re-tune is needed?

Primarily. But control is also needed when handling recovery. Or in the SDIO
custom sleep case.

There is also SDHCI re-tuning modes 2 and 3 (presently not supported) where
the host controller itself indicates that re-tuning is needed via the
present state and interrupt status registers.

> 
>>   - ability to hold off re-tuning if re-tuning is in
>>   progress
> 
> This I don't understand. How can a re-tune sequence be triggered when
> there is already a request ongoing towards the host. I mean the host
> is claimed during the re-tuning process, so why do we need one more
> layer of protection?

This is primarily for safety. We shouldn't have to think about what would
happen if the need_retune flag is set at an inopportune time.

> 
>>   - ability to run a re-tuning timer
> 
> As we discussed earlier, it's not obvious when it make sense to run this timer.
> 
> For the SDIO case, we should likely run it all the time, since we want
> to prevent I/O errors as long as possible.
> 
> For MMC/SD, I would rather see that we perform re-tune as a part of an
> "idle operation" and not from a timer (yes I know about the SDHCI
> spec, but it doesn't make sense). We can do this because we are able
> to re-cover from I/O errors (re-trying when getting CRC errors for
> example).

It makes sense to attempt to re-tune before CRC errors occur. If the
hardware vendor has gone to the trouble to determine when that might be,
then it makes sense to use that timeout. It is surely an approximation
(SDHCI only has values in powers-of-2 with units of seconds) but it seems
unreasonable to use a completely different value.

Doing it in the idle operation would not work because we would then runtime
suspend and just have to do it again after resuming.

> 
> I will continue to review the rest of series in more detail.

Thank you! :-)



  reply	other threads:[~2015-04-01 11:50 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-27 20:57 [PATCH V4 00/15] mmc: host: Add facility to support re-tuning Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 01/15] " Adrian Hunter
2015-04-01  9:50   ` Ulf Hansson
2015-04-01 11:47     ` Adrian Hunter [this message]
2015-04-01 15:10       ` Arend van Spriel
2015-04-02  8:43         ` Ulf Hansson
2015-04-02 10:30           ` Arend van Spriel
2015-04-02 12:10             ` Ulf Hansson
2015-04-02 12:18               ` Adrian Hunter
2015-04-02 12:25                 ` Ulf Hansson
2015-04-02 12:27                   ` Arend van Spriel
2015-04-02 12:43                     ` Adrian Hunter
2015-04-02 14:00                       ` Ulf Hansson
2015-04-03  2:59                         ` NeilBrown
2015-04-08  7:42                         ` Adrian Hunter
2015-04-13 12:07                           ` Ulf Hansson
2015-04-14 13:38                             ` Adrian Hunter
2015-04-14 16:52                               ` Arend van Spriel
2015-04-16  7:24                               ` Ulf Hansson
2015-04-16  8:59                                 ` Adrian Hunter
2015-04-16 11:28                                   ` Ulf Hansson
2015-04-02 13:05       ` Ulf Hansson
2015-04-02 16:18         ` Adrian Hunter
2015-04-13 12:30           ` Ulf Hansson
2015-04-14 13:13             ` Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 02/15] mmc: core: Disable re-tuning when card is no longer initialized Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 03/15] mmc: core: Add support for re-tuning before each request Adrian Hunter
2015-04-01 10:13   ` Ulf Hansson
2015-04-01 12:08     ` Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 04/15] mmc: core: Check re-tuning before retrying Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 05/15] mmc: core: Hold re-tuning during switch commands Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 06/15] mmc: core: Hold re-tuning during erase commands Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 07/15] mmc: core: Hold re-tuning while bkops ongoing Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 08/15] mmc: mmc: Comment that callers need to hold re-tuning if the card is put to sleep Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 09/15] mmc: core: Separate out the mmc_switch status check so it can be re-used Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 10/15] mmc: core: Add support for HS400 re-tuning Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 11/15] mmc: sdhci: Change to new way of doing re-tuning Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 12/15] mmc: sdhci: Flag re-tuning is needed on CRC or End-Bit errors Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 13/15] mmc: block: Check re-tuning in the recovery path Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 14/15] mmc: block: Retry errored data requests when re-tuning is needed Adrian Hunter
2015-03-27 20:57 ` [PATCH V4 15/15] mmc: core: Don't print reset warning if reset is not supported Adrian Hunter
2015-04-01  6:21 ` [PATCH V4 00/15] mmc: host: Add facility to support re-tuning Adrian Hunter
2015-04-10 10:39   ` Adrian Hunter
2015-04-10 10:52     ` 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=551BDAEA.20405@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=aaron.lu@intel.com \
    --cc=alcooperx@gmail.com \
    --cc=arend@broadcom.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=prakity@nvidia.com \
    --cc=ulf.hansson@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).