Re: [PATCH v2 resend] driver core: Make deferred_probe_timeout default a Kconfig option

From: Danilo Krummrich

Date: Mon Mar 30 2026 - 15:14:09 EST


On Sat Mar 14, 2026 at 9:49 AM CET, Hans de Goede wrote:
> Code using driver_deferred_probe_check_state() differs from most
> EPROBE_DEFER handling in the kernel. Where other EPROBE_DEFER handling
> (e.g. clks, gpios and regulators) waits indefinitely for suppliers to
> show up, code using driver_deferred_probe_check_state() will fail
> after the deferred_probe_timeout.
>
> This is a problem for generic distro kernels which want to support many
> boards using a single kernel build. These kernels want as much drivers to
> be modular as possible. The initrd also should be as small as possible,
> so the initrd will *not* have drivers not needing to get the rootfs.
>
> Combine this with waiting for a full-disk encryption password in
> the initrd and it is pretty much guaranteed that the default 10s timeout
> will be hit, causing probe() failures when drivers on the rootfs happen
> to get modprobe-d before other rootfs modules providing their suppliers.
>
> Make the default timeout configurable from Kconfig to allow distro kernel
> configs where many of the supplier drivers are modules to set the default
> through Kconfig.
>
> While at it document that a value of -1 can be used to disable the timeout
> (wait indefinitely).
>
> Acked-by: Saravana Kannan <saravanak@xxxxxxxxxx>
> Signed-off-by: Hans de Goede <johannes.goede@xxxxxxxxxxxxxxxx>

Applied to driver-core-testing, thanks!

[ Drop deferred_probe_timeout documentation change in
kernel-parameters.txt. - Danilo ]

Sorry for the delay -- I dropped the documentation change as I think it deserves
a separate patch and I think that just adding "Set to -1 to wait indefinitely."
at the end doesn't read very well.

(Also, I think every negative value will result in waiting indefinitely.)

I also upgraded Saravana's ACK (which already was conditional on this change
before) to an RB, as offered in [1].

deferred_probe_timeout=
[KNL] Debugging option to set a timeout in seconds for
deferred probe to give up waiting on dependencies to
probe. Only specific dependencies (subsystems or
drivers) that have opted in will be ignored. A timeout
of 0 will timeout at the end of initcalls. If the time
out hasn't expired, it'll be restarted by each
successful driver registration. This option will also
dump out devices still on the deferred probe list after
retrying. Set to -1 to wait indefinitely.

Maybe something like this?

deferred_probe_timeout=
[KNL] Debugging option to set a timeout in seconds for
deferred probe to give up waiting on dependencies to
probe. Only specific dependencies (subsystems or
drivers) that have opted in will be ignored. A timeout
of 0 will timeout at the end of initcalls; a negative value
is treated as an infinite timeout value. If the timeout
hasn't expired, it'll be restarted by each successful
driver registration. This option will also dump out devices
still on the deferred probe list after retrying.

[1] https://lore.kernel.org/all/CACRMN=eacrCNQodiYZJ-XH8rA6ZTEKNGrGi3JTrjFFGfMgSh5g@xxxxxxxxxxxxxx/