lkml.org 
[lkml]   [2017]   [Mar]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4.10 012/167] mmc: sdhci-acpi: support deferred probe
    From
    Date
    On Mon, 2017-03-27 at 18:36 +0200, Greg Kroah-Hartman wrote:
    > On Mon, Mar 27, 2017 at 10:40:23AM +0800, Zhang Rui wrote:
    > >
    > > On Sun, 2017-03-26 at 12:26 +0100, Andrey Utkin wrote:
    > > >
    > > > On Fri, Mar 10, 2017 at 10:07:35AM +0100, Greg Kroah-Hartman
    > > > wrote:
    > > > >
    > > > >
    > > > > 4.10-stable review patch.  If anyone has any objections, please
    > > > > let
    > > > > me know.
    > > > >
    > > > > ------------------
    > > > >
    > > > > From: Zhang Rui <rui.zhang@intel.com>
    > > > >
    > > > > commit e28d6f048799acb0014491e6b74e580d84bd7916 upstream.
    > > > >
    > > > > With commit 67bf5156edc4 ("gpio / ACPI: fix returned error from
    > > > > acpi_dev_gpio_irq_get()"), mmc_gpiod_request_cd() returns
    > > > > -EPROBE_DEFER if
    > > > > GPIO is not ready when sdhci-acpi driver is probed, and sdhci-
    > > > > acpi
    > > > > driver
    > > > > should be probed again later in this case.
    > > > >
    > > > > This fixes an order issue when both GPIO and sdhci-acpi drivers
    > > > > are
    > > > > built
    > > > > as modules.
    > > > >
    > > > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177101htt
    > > > > ps://bugzilla.kernel.org/show_bug.cgi?id=177101
    > > > > Tested-by: Jonas Aaberg <cja@gmx.net>
    > > > > Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    > > > > Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    > > > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    > > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    > > > >
    > > > > ---
    > > > >  drivers/mmc/host/sdhci-acpi.c |    5 ++++-
    > > > >  1 file changed, 4 insertions(+), 1 deletion(-)
    > > > >
    > > > > --- a/drivers/mmc/host/sdhci-acpi.c
    > > > > +++ b/drivers/mmc/host/sdhci-acpi.c
    > > > > @@ -467,7 +467,10 @@ static int sdhci_acpi_probe(struct platf
    > > > >   if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {
    > > > >   bool v = sdhci_acpi_flag(c,
    > > > > SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL);
    > > > >  
    > > > > - if (mmc_gpiod_request_cd(host->mmc, NULL, 0,
    > > > > v, 0,
    > > > > NULL)) {
    > > > > + err = mmc_gpiod_request_cd(host->mmc, NULL, 0,
    > > > > v,
    > > > > 0, NULL);
    > > > > + if (err) {
    > > > > + if (err == -EPROBE_DEFER)
    > > > > + goto err_free;
    > > > >   dev_warn(dev, "failed to setup card
    > > > > detect
    > > > > gpio\n");
    > > > >   c->use_runtime_pm = false;
    > > > >   }
    > > > >
    > > > >
    > > > Regression reported: https://bugzilla.kernel.org/show_bug.cgi?id=
    > > > 1948
    > > > 71
    > > >
    > > > Reverting this patch is said to fix the issue for 4.10.2.
    > > thanks for raising the issue. Let's see check why it breaks in the
    > > bugzilla report.
    > Is this also broken in Linus's tree?
    >
    Well, I think so.

    Although it's still under debugging, the root cause of the problem
    seems to be that, when mmc_gpiod_request_cd() returns -EPROBE_DEFER, it
    means either the GPIO controller driver is not probed at the moment, OR
    the GPIO controller driver is not available at all. The later case
     causes the problem like this because sdhci-acpi driver is made to wait
    for the GPIO controller, in the patch above. 

    This is not a problem for distro kernel when all the driver are built
    as modules. And the problem should be fixed by enabling the GPIO
    controller driver in kernel config.

    thanks,
    rui

    \
     
     \ /
      Last update: 2017-03-28 07:55    [W:4.209 / U:1.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site