Message ID | 20180515095748.6794-3-jbrunet@baylibre.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Jerome, On 15 May 2018 at 11:57, Jerome Brunet <jbrunet@baylibre.com> wrote: > Trigger the reset line of the mmc controller while probing, if available. > The reset should be optional for now, at least until all related DT nodes > have the reset property. > > Reviewed-by: Kevin Hilman <khilman@baylibre.com> > Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> I got a regression boot report from kernelci. The bisect doesn't point to a certain commit, but I found $subject patch a possible cause. Is it something you can have a look at and see if it's a valid problem? https://kernelci.org/boot/id/5b0d68a859b514726179a899/ Kind regards Uffe > --- > drivers/mmc/host/meson-gx-mmc.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c > index 4f972b879fe6..9bca359f7936 100644 > --- a/drivers/mmc/host/meson-gx-mmc.c > +++ b/drivers/mmc/host/meson-gx-mmc.c > @@ -35,6 +35,7 @@ > #include <linux/clk.h> > #include <linux/clk-provider.h> > #include <linux/regulator/consumer.h> > +#include <linux/reset.h> > #include <linux/interrupt.h> > #include <linux/bitfield.h> > #include <linux/pinctrl/consumer.h> > @@ -1184,6 +1185,14 @@ static int meson_mmc_probe(struct platform_device *pdev) > goto free_host; > } > > + ret = device_reset_optional(&pdev->dev); > + if (ret) { > + if (ret != -EPROBE_DEFER) > + dev_err(&pdev->dev, "device reset failed: %d\n", ret); > + > + return ret; > + } > + > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > host->regs = devm_ioremap_resource(&pdev->dev, res); > if (IS_ERR(host->regs)) { > -- > 2.14.3 >
On Wed, 2018-05-30 at 09:27 +0200, Ulf Hansson wrote: > Jerome, > > On 15 May 2018 at 11:57, Jerome Brunet <jbrunet@baylibre.com> wrote: > > Trigger the reset line of the mmc controller while probing, if available. > > The reset should be optional for now, at least until all related DT nodes > > have the reset property. > > > > Reviewed-by: Kevin Hilman <khilman@baylibre.com> > > Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> > > I got a regression boot report from kernelci. The bisect doesn't point > to a certain commit, but I found $subject patch a possible cause. Is > it something you can have a look at and see if it's a valid problem? > https://kernelci.org/boot/id/5b0d68a859b514726179a899/ Hi Ulf, Looking at the log, there is an "un-explained" power reset in the middle of the boot sequence. With the maintainer of this lab, we have been over the logs of this board and we have seen several other power reset at different stages. There is no trace, error or warning, the board just resets. A few other boards show the same issue in this lab ATM. There has been some work done in this lab lately and we suspect a problem with the relays controlling the power supplies. We have taken this board offline until the problem is solved. Thanks for reporting the problem. Regards Jerome > > Kind regards > Uffe > > > --- > > drivers/mmc/host/meson-gx-mmc.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c > > index 4f972b879fe6..9bca359f7936 100644 > > --- a/drivers/mmc/host/meson-gx-mmc.c > > +++ b/drivers/mmc/host/meson-gx-mmc.c > > @@ -35,6 +35,7 @@ > > #include <linux/clk.h> > > #include <linux/clk-provider.h> > > #include <linux/regulator/consumer.h> > > +#include <linux/reset.h> > > #include <linux/interrupt.h> > > #include <linux/bitfield.h> > > #include <linux/pinctrl/consumer.h> > > @@ -1184,6 +1185,14 @@ static int meson_mmc_probe(struct platform_device *pdev) > > goto free_host; > > } > > > > + ret = device_reset_optional(&pdev->dev); > > + if (ret) { > > + if (ret != -EPROBE_DEFER) > > + dev_err(&pdev->dev, "device reset failed: %d\n", ret); > > + > > + return ret; > > + } > > + > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > host->regs = devm_ioremap_resource(&pdev->dev, res); > > if (IS_ERR(host->regs)) { > > -- > > 2.14.3 > >
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 4f972b879fe6..9bca359f7936 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -35,6 +35,7 @@ #include <linux/clk.h> #include <linux/clk-provider.h> #include <linux/regulator/consumer.h> +#include <linux/reset.h> #include <linux/interrupt.h> #include <linux/bitfield.h> #include <linux/pinctrl/consumer.h> @@ -1184,6 +1185,14 @@ static int meson_mmc_probe(struct platform_device *pdev) goto free_host; } + ret = device_reset_optional(&pdev->dev); + if (ret) { + if (ret != -EPROBE_DEFER) + dev_err(&pdev->dev, "device reset failed: %d\n", ret); + + return ret; + } + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); host->regs = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(host->regs)) {