All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Anderson <dianders@chromium.org>
To: Seungwon Jeon <tgih.jun@samsung.com>
Cc: Jaehoon Chung <jh80.chung@samsung.com>,
	Chris Ball <cjb@laptop.org>, Olof Johansson <olof@lixom.net>,
	James Hogan <james.hogan@imgtec.com>,
	Grant Grundler <grundler@chromium.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Abhilash Kesavan <a.kesavan@samsung.com>,
	Tomasz Figa <tomasz.figa@gmail.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume
Date: Thu, 22 Aug 2013 09:25:54 -0700	[thread overview]
Message-ID: <CAD=FV=VdmRnE+2mOQU19JG7V8Dh5PwXn=-SS_=+4Db1uijcuuw@mail.gmail.com> (raw)
In-Reply-To: <CAD=FV=WVFGwG7KGBritORUMvWUVH19uaoMLyQufnL5D-Rd76Ww@mail.gmail.com>

Seungwon,

On Wed, Aug 21, 2013 at 5:54 PM, Doug Anderson <dianders@chromium.org> wrote:
>> Doug, your analysis is right.
>> But, let me suggest another approach.
>> After step #1, core layer actually call mmc_power_off because slot is empthy(get_cd() is '0').
>> Then, set_ios is requested with 'ios->clock'.
>> However, because current implementation doesn't update current_speed in case ios->clock is '0'.
>> It causes current_speed has invalid clock rate in resume of dw-mmc.
>>
>> So, if we can update slot->clock properly, it will be fixed.
>>
>> -static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>> +static void dw_mci_setup_bus(struct dw_mci_slot *slot)
>>  {
>>         struct dw_mci *host = slot->host;
>>         u32 div;
>>         u32 clk_en_a;
>>
>> -       if (slot->clock != host->current_speed || force_clkinit) {
>> +       if (slot->clock && (slot->clock != host->current_speed)) {
>>
>>
>> @@ -807,13 +807,11 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>>
>>         mci_writel(slot->host, UHS_REG, regs);
>>
>> -       if (ios->clock) {
>> -               /*
>> -                * Use mirror of ios->clock to prevent race with mmc
>> -                * core ios update when finding the minimum.
>> -                */
>> -               slot->clock = ios->clock;
>> -       }
>> +       /*
>> +        * Use mirror of ios->clock to prevent race with mmc
>> +        * core ios update when finding the minimum.
>> +        */
>> +       slot->clock = ios->clock;
>
> So this scares me a little bit but you're correct that it's probably
> the right thing.  Mostly it scares me to remove code that someone
> clearly added on purpose without understanding why they originally
> added it and why that reason is not valid (or is no longer valid due
> to other changes).

OK, I posted up a new patch series.  Hopefully this looks good to you.
 I did a suspend/resume stress test last night on our chromeos-3.8
branch and things worked well.


> I've come up with a new patch that's a little bit more than just your
> patch.  It actually does something in the case of a zero clock (it
> turns the clock off).  My patch seems to work OK on my 3.8 branch but
> I want to do a little more testing tomorrow.  ...but booting on ToT
> linux seems broken now on the ARM chromebook (it fails in several
> different ways and sometimes works).  Sigh.

Somehow this morning ToT linux (same revision) was working much better
on exynos5250-snow.  I was able to boot reliably and even
suspend/resume reliably.  I think there may be a few niggling issues
that we'll have to track down before too long, though...

-Doug

  reply	other threads:[~2013-08-22 16:25 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-09 17:31 [PATCH 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-09 17:31 ` Doug Anderson
2013-07-09 17:31 ` [PATCH 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-09 17:31 ` [PATCH 2/5] mmc: dw_mmc: Add suspend/resume callbacks; disable irq during suspend Doug Anderson
2013-07-09 21:17   ` James Hogan
2013-07-09 21:31     ` Doug Anderson
2013-07-09 17:31 ` [PATCH 3/5] mmc: dw_mmc: Add exynos resume callback to clear WAKEUP_INT Doug Anderson
2013-07-09 17:31   ` Doug Anderson
2013-07-09 17:31   ` Doug Anderson
2013-07-09 19:09   ` Doug Anderson
2013-07-09 19:09     ` Doug Anderson
2013-07-09 19:09     ` Doug Anderson
2013-07-11  0:43     ` Grant Grundler
2013-07-11  0:43       ` Grant Grundler
2013-07-11  0:43       ` Grant Grundler
2013-07-09 17:31 ` [PATCH 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-09 17:31 ` [PATCH 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-07-09 23:19 ` [PATCH v2 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-09 23:19   ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-09 23:19   ` [PATCH v2 2/5] mmc: dw_mmc: Add suspend_noirq/resume_noirq callbacks for dw_mmc-pltfm Doug Anderson
2013-07-10  8:37     ` James Hogan
2013-07-10  8:37       ` James Hogan
2013-07-10 15:08       ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 3/5] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-07-09 23:19     ` Doug Anderson
2013-07-10 14:54     ` Seungwon Jeon
2013-07-10 14:54       ` Seungwon Jeon
2013-07-10 15:05       ` Doug Anderson
2013-07-10 15:05         ` Doug Anderson
2013-07-10 15:05         ` Doug Anderson
2013-07-15 12:09         ` Seungwon Jeon
2013-07-15 12:09           ` Seungwon Jeon
2013-07-31 16:18           ` Doug Anderson
2013-07-31 16:18             ` Doug Anderson
2013-07-31 16:18             ` Doug Anderson
2013-08-06 21:36             ` Doug Anderson
2013-08-06 21:36               ` Doug Anderson
2013-08-06 21:36               ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-09 23:19   ` [PATCH v2 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-07-10 14:54     ` Seungwon Jeon
2013-07-10 15:42   ` [PATCH v3 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-10 15:42     ` Doug Anderson
2013-07-10 15:42     ` [PATCH v3 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-10 15:42     ` [PATCH v3 2/5] mmc: dw_mmc: Add suspend_noirq/resume_noirq callbacks for dw_mmc-pltfm Doug Anderson
2013-07-15 12:09       ` Seungwon Jeon
2013-08-06 21:32         ` Doug Anderson
2013-07-10 15:42     ` [PATCH v3 3/5] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-07-10 15:42       ` Doug Anderson
2013-07-16  1:36       ` Jaehoon Chung
2013-07-16  1:36         ` Jaehoon Chung
2013-07-10 15:42     ` [PATCH v3 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-10 15:42     ` [PATCH v3 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-06 21:37     ` [PATCH v4 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-08-06 21:37       ` Doug Anderson
2013-08-06 21:37       ` [PATCH v4 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-08-06 21:58         ` Tomasz Figa
2013-08-08  5:14         ` Jaehoon Chung
2013-08-09 13:32         ` Seungwon Jeon
2013-08-09 15:22           ` Doug Anderson
2013-08-12  7:14             ` Seungwon Jeon
2013-08-22  0:54               ` Doug Anderson
2013-08-22 16:25                 ` Doug Anderson [this message]
2013-08-06 21:37       ` [PATCH v4 2/4] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-08-06 21:37         ` Doug Anderson
2013-08-06 21:58         ` Tomasz Figa
2013-08-06 21:58           ` Tomasz Figa
2013-08-06 22:09           ` Doug Anderson
2013-08-06 22:09             ` Doug Anderson
2013-08-06 22:09             ` Doug Anderson
2013-08-06 22:20             ` Tomasz Figa
2013-08-06 22:20               ` Tomasz Figa
2013-08-06 22:20               ` Tomasz Figa
2013-08-09 13:33         ` Seungwon Jeon
2013-08-09 13:33           ` Seungwon Jeon
2013-08-09 15:05           ` Doug Anderson
2013-08-09 15:05             ` Doug Anderson
2013-08-09 15:05             ` Doug Anderson
2013-08-06 21:37       ` [PATCH v4 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-08-06 22:01         ` Tomasz Figa
2013-08-09 13:35         ` Seungwon Jeon
2013-08-09 15:43           ` Doug Anderson
2013-08-12  7:20             ` Seungwon Jeon
2013-08-06 21:37       ` [PATCH v4 4/4] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-06 22:02         ` Tomasz Figa
2013-08-09 16:33       ` [PATCH v5 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-08-09 16:33         ` Doug Anderson
2013-08-09 16:33         ` [PATCH v5 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-08-09 16:33         ` [PATCH v5 2/4] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-08-09 16:33           ` Doug Anderson
2013-08-09 16:41           ` Fabio Estevam
2013-08-09 16:41             ` Fabio Estevam
2013-08-09 16:48             ` Doug Anderson
2013-08-09 16:48               ` Doug Anderson
2013-08-09 16:48               ` Doug Anderson
2013-08-12  7:21           ` Seungwon Jeon
2013-08-12  7:21             ` Seungwon Jeon
2013-08-09 16:33         ` [PATCH v5 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-08-09 16:33         ` [PATCH v5 4/4] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-21 11:48         ` [PATCH v5 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Seungwon Jeon
2013-08-21 11:48           ` Seungwon Jeon
2013-08-21 15:13           ` Doug Anderson
2013-08-21 15:13             ` Doug Anderson
2013-08-21 15:13             ` Doug Anderson

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='CAD=FV=VdmRnE+2mOQU19JG7V8Dh5PwXn=-SS_=+4Db1uijcuuw@mail.gmail.com' \
    --to=dianders@chromium.org \
    --cc=a.kesavan@samsung.com \
    --cc=alim.akhtar@samsung.com \
    --cc=cjb@laptop.org \
    --cc=grundler@chromium.org \
    --cc=james.hogan@imgtec.com \
    --cc=jh80.chung@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=olof@lixom.net \
    --cc=tgih.jun@samsung.com \
    --cc=tomasz.figa@gmail.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.