Re: How to fix WARN from drivers/base/dd.c in next-20200401 if CONFIG_MODULES=y?

From: Robin Murphy
Date: Thu Apr 02 2020 - 09:20:11 EST


On 2020-04-02 11:16 am, Yoshihiro Shimoda wrote:
Hi John,

I found an issue after applied the following patches:
---
64c775f driver core: Rename deferred_probe_timeout and make it global
0e9f8d0 driver core: Remove driver_deferred_probe_check_state_continue()
bec6c0e pinctrl: Remove use of driver_deferred_probe_check_state_continue()
e2cec7d driver core: Set deferred_probe_timeout to a longer default if CONFIG_MODULES is set
c8c43ce driver core: Fix driver_deferred_probe_check_state() logic
---

Before these patches, on my environment [1], some device drivers
which has iommus property output the following message when probing:

[ 3.222205] ravb e6800000.ethernet: ignoring dependency for device, assuming no driver
[ 3.257174] ravb e6800000.ethernet eth0: Base address at 0xe6800000, 2e:09:0a:02:eb:2d, IRQ 117.

So, since ravb driver is probed within 4 seconds, we can use NFS rootfs correctly.

However, after these patches are applied, since the patches are always waiting for 30 seconds
for of_iommu_configure() when IOMMU hardware is disabled, drivers/base/dd.c output WARN.
Also, since ravb cannot be probed for 30 seconds, we cannot use NFS rootfs anymore.
JFYI, I copied the kernel log to the end of this email.

I guess the patches will be merged into v5.7-rc1 because the patches are contained from
next-20200316, I'd like to fix the issue in v5.7-rcN cycle somehow.

This already came up in a different context, and there's a proposal from John here:

https://lore.kernel.org/lkml/20200330202715.86609-1-john.stultz@xxxxxxxxxx/

Robin.