From: "Du, Alek" <alek.du@intel.com>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: linux-mmc@vger.kernel.org, ulf.hansson@linaro.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sdhci: fix the fake timeout bug
Date: Sat, 1 Dec 2018 13:42:51 +0800 [thread overview]
Message-ID: <20181201134251.26573207@xdu1-mobl> (raw)
In-Reply-To: <c580be57-8a49-59f3-791e-c605d892266b@intel.com>
On Fri, 30 Nov 2018 16:40:04 +0200
Adrian Hunter <adrian.hunter@intel.com> wrote:
> So you are saying this only happens under virtualization?
>
Yes, I saw the issue under ACRN virtualization Service OS (4.19 kernel).
But theoretically it can happen in other case when scheduling is not
that good. (due to bad driver or other high priority task)
> >
> > Please look at the sdhci_enable_clk() below, there is a window in
> > clock stabilization check. The first check is to check status
> > register, the second check is to check if time passed. That's why I
> > can capture a case that after time passed, the actually clock
> > control register indicated that clock is stable. So the error
> > handling is wrong...
>
> Sure, but "Internal clock never stabilised." is not one of the
> errors you listed.
Sorry my bad not listing all the error log:
Case 1. clock stabilization timeout: (the below clock control dump shows clock is good)
[159525.255629] mmc1: Internal clock never stabilised.
[159525.255818] mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========
[159525.256049] mmc1: sdhci: Sys addr: 0x00000000 | Version: 0x00001002
[159525.256277] mmc1: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
[159525.256523] mmc1: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
[159525.256752] mmc1: sdhci: Present: 0x1fff0000 | Host ctl: 0x00000000
[159525.256979] mmc1: sdhci: Power: 0x0000000b | Blk gap: 0x00000080
[159525.257205] mmc1: sdhci: Wake-up: 0x00000000 | Clock: 0x0000fa03
Case 2. Reset timeout: (the same check window in sdhci_reset())
[ 7639.968613] mmc1: Reset 0x4 never completed.
Case 3. Hardware interrupt timeout
[ 1049.561728] mmc1: Timeout waiting for hardware interrupt.
>
> >
> > Also the sdhci_send_command commands is not in spin lock There is a
> > windows between mod_timer and real command send...
>
> What code path does not have a spin lock?
Ouch my bad, the sdhci_send_command are called either from spinlock or IRQ handler,
so this part is good ...
I'll send a new patch to cover case 1 and case 2 if you agree.
Thanks,
Alek
next prev parent reply other threads:[~2018-12-01 5:42 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-30 7:00 [PATCH] sdhci: fix the fake timeout bug Du, Alek
2018-11-30 9:19 ` Adrian Hunter
2018-11-30 14:13 ` Du, Alek
2018-11-30 14:40 ` Adrian Hunter
2018-12-01 5:42 ` Du, Alek [this message]
2018-12-04 1:01 ` [PATCH V2] sdhci: fix the timeout check window for clock and reset Du, Alek
2018-12-04 12:24 ` Adrian Hunter
2018-12-05 3:14 ` [PATCH V3] " Du, Alek
2018-12-05 11:16 ` Adrian Hunter
2018-12-05 14:20 ` Ulf Hansson
2018-12-05 23:33 ` [PATCH V3 rebase] mmc: " Du, Alek
2018-12-06 7:55 ` Ulf Hansson
2018-12-06 9:28 ` Du, Alek
2018-12-04 12:47 ` [PATCH] sdhci: fix the fake timeout bug Adrian Hunter
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=20181201134251.26573207@xdu1-mobl \
--to=alek.du@intel.com \
--cc=adrian.hunter@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--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