Re: [PATCH 07/11] driver core: Respect all error codes from dev_pm_domain_attach()

From: Ulf Hansson
Date: Mon May 14 2018 - 14:57:27 EST


On 14 May 2018 at 17:19, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> Ulf,
>
> * Ulf Hansson <ulf.hansson@xxxxxxxxxx> [180426 09:01]:
>> The limitation of being able to check only for -EPROBE_DEFER from
>> dev_pm_domain_attach() has been removed. Hence let's respect all error
>> codes and bail out accordingly.
>>
>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
>> ---
>> drivers/base/platform.c | 17 ++++++++---------
>> 1 file changed, 8 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
>> index 8075ddc..9460139 100644
>> --- a/drivers/base/platform.c
>> +++ b/drivers/base/platform.c
>> @@ -572,17 +572,16 @@ static int platform_drv_probe(struct device *_dev)
>> return ret;
>>
>> ret = dev_pm_domain_attach(_dev, true);
>> - if (ret != -EPROBE_DEFER) {
>> - if (drv->probe) {
>> - ret = drv->probe(dev);
>> - if (ret)
>> - dev_pm_domain_detach(_dev, true);
>> - } else {
>> - /* don't fail if just dev_pm_domain_attach failed */
>> - ret = 0;
>> - }
>> + if (ret)
>> + goto out;
>> +
>> + if (drv->probe) {
>> + ret = drv->probe(dev);
>> + if (ret)
>> + dev_pm_domain_detach(_dev, true);
>> }
>>
>> +out:
>> if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) {
>> dev_warn(_dev, "probe deferral not supported\n");
>> ret = -ENXIO;
>> --
>
> Looks like this causes Linux next to not boot for me with device
> probes failing with error -17. So that's at least omaps, looks
> like kernelci has others failing too.

Yep, problem also reported for some Exynos5 platforms.

Omap suffers from the similar problem, because of its SoC specific way
of attaching devices to PM domains.

>
> Reverting for 8c123c14bbba ("driver core: Respect all error codes from
> dev_pm_domain_attach()") fixes the issue for me.
>
> Sounds like something is missing, any ideas?

This should solve the problem:

https://patchwork.kernel.org/patch/10398597/

Kind regards
Uffe