Re: [PATCH v2] driver core: Extend returning EPROBE_DEFER for two minutes after late_initcall

From: Rob Herring
Date: Sat Feb 15 2020 - 16:33:00 EST


On Fri, Feb 14, 2020 at 5:32 PM John Stultz <john.stultz@xxxxxxxxxx> wrote:
>
> Due to commit e01afc3250255 ("PM / Domains: Stop deferring probe
> at the end of initcall"), along with commit 25b4e70dcce9
> ("driver core: allow stopping deferred probe after init") after
> late_initcall, drivers will stop getting EPROBE_DEFER, and
> instead see an error causing the driver to fail to load.
>
> That change causes trouble when trying to use many clk drivers
> as modules, as the clk modules may not load until much later
> after init has started. If a dependent driver loads and gets an
> error instead of EPROBE_DEFER, it won't try to reload later when
> the dependency is met, and will thus fail to load.
>
> Instead of reverting that patch, this patch tries to extend the
> time that EPROBE_DEFER is retruned by 30 seconds, to (hopefully)
> ensure that everything has had a chance to load.
>
> 30 seconds was chosen to match the similar timeout used by the
> regulator code here in commit 55576cf18537 ("regulator: Defer
> init completion for a while after late_initcall")

My intention was not to copy the timeout value, but use the same
timeout (which should be configurable on the command line IMO). There
doesn't seem to be an easy way to hook the regulator code into the
deferred probe code though. Maybe just make the timeout value a global
var.

Rob