Re: [BUG] Error applying setting, reverse things back on lot of devices

Ondřej Jirman
2020-11-01T01:31:19Z

Hello Michał,

On Sat, Oct 24, 2020 at 01:53:07PM +0200, Michał Mirosław wrote:
> On Fri, Oct 23, 2020 at 10:39:43PM +0200, Corentin Labbe wrote:
> > On Fri, Oct 23, 2020 at 03:42:01PM +0200, Corentin Labbe wrote:
> > > On Wed, Oct 21, 2020 at 08:31:49PM +0200, Corentin Labbe wrote:
> > > > [ 5.796585] dcdc4: supplied by regulator-dummy
> > > > [ 5.801647] vcc-dram: supplied by regulator-dummy
> > > > [ 5.806470] vcc-gmac-phy: failed to get the current voltage: -EINVAL
> > > > [ 5.812839] axp20x-regulator axp20x-regulator: Failed to register dc1sw
> > > > [ 5.820291] axp20x-regulator: probe of axp20x-regulator failed with error -22
> > >
> > > I have just saw thoses 3 lines which are probably the real problem.
> > > I have started a new bisect with this error, but it is hitting the same "crash range" the first one.
> > >
> >
> > I have bisected the problem to commit aea6cb99703e17019e025aa71643b4d3e0a24413 ("regulator: resolve supply after creating regulator")
> > Reverting this fix my problem.
>
> Can you try the hack below?
>
> Best Regards,
> Michał Mirosław
>
> diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> index a4ffd71696da..9ad091f5f1ab 100644
> --- a/drivers/regulator/core.c
> +++ b/drivers/regulator/core.c
> @@ -1169,6 +1169,9 @@ static int machine_constraints_voltage(struct regulator_dev *rdev,
> }
>
> if (current_uV < 0) {
> + if (current_uV == -EINVAL && rdev->supply_name)
> + return -EPROBE_DEFER;
> +
> rdev_err(rdev,
> "failed to get the current voltage: %pe\n",
> ERR_PTR(current_uV));

I did hit the same problem on sun8i-a83t-tbs-a711.dts tablet.

The patch helps on top of v5.9.2, and on linus/master.

regards,
o.