From: Joakim Tjernlund <joakim.tjernlund@transmode.se>
To: "haokexin@gmail.com" <haokexin@gmail.com>
Cc: "ulf.hansson@linaro.org" <ulf.hansson@linaro.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH] Revert "sdhci-of-esdhc: Support 8BIT bus width."
Date: Fri, 15 May 2015 07:24:55 +0000 [thread overview]
Message-ID: <1431674695.13197.14.camel@transmode.se> (raw)
In-Reply-To: <1431673364.13197.10.camel@transmode.se>
On Fri, 2015-05-15 at 09:02 +0200, an unknown sender wrote:
> On Fri, 2015-05-15 at 14:29 +0800, Kevin Hao wrote:
> > This reverts commit 459fe0cfda71835eacc0b24571e8425cea975688.
> > It causes kernel panic due to a null pointer reference to .set_bus_width
> > on fsl p2020rdb board.
> > Unable to handle kernel paging request for instruction fetch
> > Faulting instruction address: 0x00000000
> > Oops: Kernel access of bad area, sig: 11 [#1]
> > SMP NR_CPUS=8 P2020 RDB
> > Modules linked in:
> > CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc3-next-20150514-00001-g76c7a15bee83 #103
> > task: ea858000 ti: ea846000 task.ti: ea846000
> > NIP: 00000000 LR: c048036c CTR: 00000000
> > REGS: ea847c70 TRAP: 0400 Not tainted (4.1.0-rc3-next-20150514-00001-g76c7a15bee83)
> > MSR: 00021000 <CE,ME> CR: 22010022 XER: 00000000
> >
> > GPR00: c04802c4 ea847d20 ea858000 eaa3ab00 00000000 00000f20 00000002 00000000
> > GPR08: 00000000 00000000 00000000 90000000 22010022 00000000 c0002a68 00000000
> > GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 c08a64e0 000000e9
> > GPR24: c080f398 c08a0000 00000000 0000000e 00029000 eaa3ab28 eaa3a9f0 eaa3ab00
> > NIP [00000000] (null)
> > LR [c048036c] sdhci_do_set_ios+0x164/0x824
> > Call Trace:
> > [ea847d20] [c04802c4] sdhci_do_set_ios+0xbc/0x824 (unreliable)
> > [ea847d40] [c0480a60] sdhci_set_ios+0x34/0x4c
> > [ea847d50] [c046c96c] mmc_power_up.part.16+0x3c/0x120
> > [ea847d70] [c046da10] mmc_start_host+0x50/0xa4
> > [ea847d80] [c046ee28] mmc_add_host+0x50/0x78
> > [ea847d90] [c0481438] sdhci_add_host+0x8c4/0xcc0
> > [ea847db0] [c0485824] sdhci_esdhc_probe+0xa8/0xc8
> > [ea847dd0] [c032ed28] platform_drv_probe+0x3c/0xa4
> > [ea847df0] [c032d170] driver_probe_device+0x1f0/0x2c4
> > [ea847e10] [c032d370] __driver_attach+0xbc/0xc0
> > [ea847e30] [c032b178] bus_for_each_dev+0x6c/0xb8
> > [ea847e60] [c032c6b8] bus_add_driver+0x168/0x220
> > [ea847e80] [c032da70] driver_register+0x88/0x130
> > [ea847e90] [c000234c] do_one_initcall+0x8c/0x1e0
> > [ea847f00] [c0815b08] kernel_init_freeable+0x138/0x1d4
> > [ea847f30] [c0002a7c] kernel_init+0x14/0x100
> > [ea847f40] [c000e838] ret_from_kernel_thread+0x5c/0x64
> >
> > Signed-off-by: Kevin Hao <haokexin@gmail.com>
>
> Reverting this seem a bit to much. Looking in the log it seems commit
> 2317f56c055fcad524bf6a873df48a754e7ebc4d
> introduced the error by not checking for host->ops->set_bus_width before
> calling it.
>
> How does this work for you?
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index c80287a..23603b2 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1528,7 +1528,10 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
> if (host->ops->platform_send_init_74_clocks)
> host->ops->platform_send_init_74_clocks(host, ios->power_mode);
>
> - host->ops->set_bus_width(host, ios->bus_width);
> + if (host->ops->set_bus_width)
> + host->ops->set_bus_width(host, ios->bus_width);
> + else
> + sdhci_set_bus_width(host, ios->bus_width);
Ahh, now I see. Drivers are supposed to call sdhci_set_bus_width instead of NULL:
Instead of reverting this add:
diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c
index 7a98a22..07b9df2 100644
--- a/drivers/mmc/host/sdhci-of-esdhc.c
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
@@ -283,6 +283,7 @@ static const struct sdhci_ops sdhci_esdhc_ops = {
.get_min_clock = esdhc_of_get_min_clock,
.platform_init = esdhc_of_platform_init,
.adma_workaround = esdhci_of_adma_workaround,
+ .set_bus_width = sdhci_set_bus_width,
.reset = esdhc_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
};
Should I repost the full "sdhci-of-esdhc: Support 8BIT bus width." with this fix added
of just the above fix?
Jocke
next prev parent reply other threads:[~2015-05-15 7:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-15 6:29 [PATCH] Revert "sdhci-of-esdhc: Support 8BIT bus width." Kevin Hao
2015-05-15 7:02 ` Joakim Tjernlund
2015-05-15 7:24 ` Joakim Tjernlund [this message]
2015-05-15 7:42 ` Kevin Hao
2015-05-15 8:00 ` Joakim Tjernlund
2015-05-15 8:20 ` Joakim Tjernlund
2015-05-15 12:40 ` Joakim Tjernlund
2015-05-17 5:06 ` Kevin Hao
2015-05-17 8:36 ` Joakim Tjernlund
2015-05-18 7:58 ` Ulf Hansson
2015-05-19 9:20 ` Kevin Hao
2015-05-20 14:54 ` Joakim Tjernlund
2015-05-21 1:07 ` Kevin Hao
2015-05-21 9:24 ` Joakim Tjernlund
2015-05-21 10:56 ` Kevin Hao
2015-05-21 11:45 ` Joakim Tjernlund
2015-05-22 13:46 ` Ulf Hansson
2015-05-15 7:36 ` Kevin Hao
2015-05-15 7:49 ` Joakim Tjernlund
2015-05-17 5:04 ` Kevin Hao
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=1431674695.13197.14.camel@transmode.se \
--to=joakim.tjernlund@transmode.se \
--cc=haokexin@gmail.com \
--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 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.