From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031911AbeEXRv1 (ORCPT ); Thu, 24 May 2018 13:51:27 -0400 Received: from mail-yb0-f193.google.com ([209.85.213.193]:37045 "EHLO mail-yb0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031361AbeEXRut (ORCPT ); Thu, 24 May 2018 13:50:49 -0400 X-Google-Smtp-Source: AB8JxZq9EGtRDV57p9yWBwYQ6N7XV/EKQlqmcjE0feuvafT8tZnCi9AJW4Mup/hjAQcxhxDtTuqScA== From: Rob Herring To: Greg Kroah-Hartman , Linus Walleij , Alexander Graf , Bjorn Andersson , "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Joerg Roedel , Robin Murphy , Mark Brown , Frank Rowand Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, boot-architecture@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Pavel Machek , Len Brown , linux-pm@vger.kernel.org Subject: [PATCH v2 8/8] PM / Domains: Stop deferring probe at the end of initcall Date: Thu, 24 May 2018 12:50:24 -0500 Message-Id: <20180524175024.19874-9-robh@kernel.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180524175024.19874-1-robh@kernel.org> References: <20180524175024.19874-1-robh@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org All PM domain drivers must be built-in (at least those using DT), so there is no point deferring probe after initcalls are done. Continuing to defer probe may prevent booting successfully even if managing PM domains is not required. This can happen if the user failed to enable the driver or if power-domains are added to a platform's DT, but there is not yet a driver (e.g. a new DTB with an old kernel). Call the driver core function driver_deferred_probe_check_init_done() instead of just returning -EPROBE_DEFER to stop deferring probe when initcalls are done. Cc: "Rafael J. Wysocki" Cc: Kevin Hilman Cc: Ulf Hansson Cc: Pavel Machek Cc: Len Brown Cc: Greg Kroah-Hartman Cc: linux-pm@vger.kernel.org Signed-off-by: Rob Herring --- drivers/base/power/domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 1ea0e2502e8e..6398cf786e6a 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2218,7 +2218,7 @@ int genpd_dev_pm_attach(struct device *dev) mutex_unlock(&gpd_list_lock); dev_dbg(dev, "%s() failed to find PM domain: %ld\n", __func__, PTR_ERR(pd)); - return -EPROBE_DEFER; + return driver_deferred_probe_check_init_done(dev, true); } dev_dbg(dev, "adding to PM domain %s\n", pd->name); -- 2.17.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: robh@kernel.org (Rob Herring) Date: Thu, 24 May 2018 12:50:24 -0500 Subject: [PATCH v2 8/8] PM / Domains: Stop deferring probe at the end of initcall In-Reply-To: <20180524175024.19874-1-robh@kernel.org> References: <20180524175024.19874-1-robh@kernel.org> Message-ID: <20180524175024.19874-9-robh@kernel.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org All PM domain drivers must be built-in (at least those using DT), so there is no point deferring probe after initcalls are done. Continuing to defer probe may prevent booting successfully even if managing PM domains is not required. This can happen if the user failed to enable the driver or if power-domains are added to a platform's DT, but there is not yet a driver (e.g. a new DTB with an old kernel). Call the driver core function driver_deferred_probe_check_init_done() instead of just returning -EPROBE_DEFER to stop deferring probe when initcalls are done. Cc: "Rafael J. Wysocki" Cc: Kevin Hilman Cc: Ulf Hansson Cc: Pavel Machek Cc: Len Brown Cc: Greg Kroah-Hartman Cc: linux-pm at vger.kernel.org Signed-off-by: Rob Herring --- drivers/base/power/domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 1ea0e2502e8e..6398cf786e6a 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2218,7 +2218,7 @@ int genpd_dev_pm_attach(struct device *dev) mutex_unlock(&gpd_list_lock); dev_dbg(dev, "%s() failed to find PM domain: %ld\n", __func__, PTR_ERR(pd)); - return -EPROBE_DEFER; + return driver_deferred_probe_check_init_done(dev, true); } dev_dbg(dev, "adding to PM domain %s\n", pd->name); -- 2.17.0