linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings
@ 2020-03-30 20:27 John Stultz
  2020-03-31  6:54 ` Naresh Kamboju
  2020-04-02 13:54 ` Robin Murphy
  0 siblings, 2 replies; 3+ messages in thread
From: John Stultz @ 2020-03-30 20:27 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Robin Murphy, Andy Shevchenko, Sudeep Holla,
	Andy Shevchenko, Naresh Kamboju, Rafael J. Wysocki,
	Greg Kroah-Hartman, Basil Eljuse, Ferry Toth, Arnd Bergmann,
	Anders Roxell

In commit c8c43cee29f6 ("driver core: Fix
driver_deferred_probe_check_state() logic") and following
changes the logic was changes slightly so that if there is no
driver to match whats found in the dtb, we wait 30 seconds
for modules to be loaded by userland, and then timeout, where
as previously we'd print "ignoring dependency for device,
assuming no driver" and immediately return -ENODEV after
initcall_done.

However, in the timeout case (which previously existed but was
practicaly un-used without a boot argument), the timeout message
uses dev_WARN(). This means folks are now seeing a big backtrace
in their boot logs if there a entry in their dts that doesn't
have a driver.

To fix this, lets use dev_warn(), instead of dev_WARN() to match
the previous error path.

Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Basil Eljuse <Basil.Eljuse@arm.com>
Cc: Ferry Toth <fntoth@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Anders Roxell <anders.roxell@linaro.org>
Fixes: c8c43cee29f6 ("driver core: Fix driver_deferred_probe_check_state() logic")
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
 drivers/base/dd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 06ec0e851fa1..ca1652221c1a 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -267,7 +267,7 @@ int driver_deferred_probe_check_state(struct device *dev)
 	}
 
 	if (!driver_deferred_probe_timeout) {
-		dev_WARN(dev, "deferred probe timeout, ignoring dependency");
+		dev_warn(dev, "deferred probe timeout, ignoring dependency");
 		return -ETIMEDOUT;
 	}
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings
  2020-03-30 20:27 [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings John Stultz
@ 2020-03-31  6:54 ` Naresh Kamboju
  2020-04-02 13:54 ` Robin Murphy
  1 sibling, 0 replies; 3+ messages in thread
From: Naresh Kamboju @ 2020-03-31  6:54 UTC (permalink / raw)
  To: John Stultz
  Cc: lkml, Robin Murphy, Andy Shevchenko, Sudeep Holla,
	Andy Shevchenko, Rafael J. Wysocki, Greg Kroah-Hartman,
	Basil Eljuse, Ferry Toth, Arnd Bergmann, Anders Roxell

On Tue, 31 Mar 2020 at 01:57, John Stultz <john.stultz@linaro.org> wrote:
>
> In commit c8c43cee29f6 ("driver core: Fix
> driver_deferred_probe_check_state() logic") and following
> changes the logic was changes slightly so that if there is no
> driver to match whats found in the dtb, we wait 30 seconds
> for modules to be loaded by userland, and then timeout, where
> as previously we'd print "ignoring dependency for device,
> assuming no driver" and immediately return -ENODEV after
> initcall_done.
>
> However, in the timeout case (which previously existed but was
> practicaly un-used without a boot argument), the timeout message
> uses dev_WARN(). This means folks are now seeing a big backtrace
> in their boot logs if there a entry in their dts that doesn't
> have a driver.
>
> To fix this, lets use dev_warn(), instead of dev_WARN() to match
> the previous error path.
>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Basil Eljuse <Basil.Eljuse@arm.com>
> Cc: Ferry Toth <fntoth@gmail.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Anders Roxell <anders.roxell@linaro.org>
> Fixes: c8c43cee29f6 ("driver core: Fix driver_deferred_probe_check_state() logic")
> Signed-off-by: John Stultz <john.stultz@linaro.org>

Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>

I have applied this patch and tested.
The reported problem is fixed by patch on arm64 Juno-r2 device.
https://lkft.validation.linaro.org/scheduler/job/1323860#L556

- Naresh

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings
  2020-03-30 20:27 [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings John Stultz
  2020-03-31  6:54 ` Naresh Kamboju
@ 2020-04-02 13:54 ` Robin Murphy
  1 sibling, 0 replies; 3+ messages in thread
From: Robin Murphy @ 2020-04-02 13:54 UTC (permalink / raw)
  To: John Stultz, lkml
  Cc: Andy Shevchenko, Sudeep Holla, Andy Shevchenko, Naresh Kamboju,
	Rafael J. Wysocki, Greg Kroah-Hartman, Basil Eljuse, Ferry Toth,
	Arnd Bergmann, Anders Roxell

On 2020-03-30 9:27 pm, John Stultz wrote:
> In commit c8c43cee29f6 ("driver core: Fix
> driver_deferred_probe_check_state() logic") and following
> changes the logic was changes slightly so that if there is no
> driver to match whats found in the dtb, we wait 30 seconds
> for modules to be loaded by userland, and then timeout, where
> as previously we'd print "ignoring dependency for device,
> assuming no driver" and immediately return -ENODEV after
> initcall_done.
> 
> However, in the timeout case (which previously existed but was
> practicaly un-used without a boot argument), the timeout message
> uses dev_WARN(). This means folks are now seeing a big backtrace
> in their boot logs if there a entry in their dts that doesn't
> have a driver.

I had always figured that timeout case somehow represented more of a 
definite failure than others, but if not then great! :)

> To fix this, lets use dev_warn(), instead of dev_WARN() to match
> the previous error path.

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

However, I do now wonder if we really need these two separate cases with 
subtly different messages - after all, giving up at init vs. giving up 
30 seconds later still represents some kind of timeout out either way. 
Given that there are at least 5 underlying situations with varying 
levels of certainty and severity:

- No driver loaded for dependency (yet, if CONFIG_MODULES)
- Driver present and dependency will be probed at some point in future
- Driver present but dependency will not be probed (e.g. disabled in DT)
- Dependency itself is deferred but will be re-probed at some point
- Dependency probed, explicitly failed and will not be retried

then I'm not sure there's much value in having two slightly different 
ways of saying "any of those may have happened".

Robin.

> Cc: Robin Murphy <robin.murphy@arm.com>
> Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Basil Eljuse <Basil.Eljuse@arm.com>
> Cc: Ferry Toth <fntoth@gmail.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Anders Roxell <anders.roxell@linaro.org>
> Fixes: c8c43cee29f6 ("driver core: Fix driver_deferred_probe_check_state() logic")
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
>   drivers/base/dd.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/base/dd.c b/drivers/base/dd.c
> index 06ec0e851fa1..ca1652221c1a 100644
> --- a/drivers/base/dd.c
> +++ b/drivers/base/dd.c
> @@ -267,7 +267,7 @@ int driver_deferred_probe_check_state(struct device *dev)
>   	}
>   
>   	if (!driver_deferred_probe_timeout) {
> -		dev_WARN(dev, "deferred probe timeout, ignoring dependency");
> +		dev_warn(dev, "deferred probe timeout, ignoring dependency");
>   		return -ETIMEDOUT;
>   	}
>   
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-04-02 13:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-30 20:27 [PATCH] driver core: Use dev_warn() instead of dev_WARN() for deferred_probe_timeout warnings John Stultz
2020-03-31  6:54 ` Naresh Kamboju
2020-04-02 13:54 ` Robin Murphy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).