Hi Saravana, On Wed, Jan 13, 2021 at 3:34 AM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > On Mon, Jan 11, 2021 at 11:11 PM Marek Szyprowski > <m.szyprowski@xxxxxxxxxxx> wrote: > > On 11.01.2021 22:47, Saravana Kannan wrote: > > > On Mon, Jan 11, 2021 at 6:18 AM Marek Szyprowski > > > <m.szyprowski@xxxxxxxxxxx> wrote: > > >> On 11.01.2021 12:12, Marek Szyprowski wrote: > > >>> On 18.12.2020 04:17, Saravana Kannan wrote: > > >>>> Cyclic dependencies in some firmware was one of the last remaining > > >>>> reasons fw_devlink=on couldn't be set by default. Now that cyclic > > >>>> dependencies don't block probing, set fw_devlink=on by default. > > >>>> > > >>>> Setting fw_devlink=on by default brings a bunch of benefits (currently, > > >>>> only for systems with device tree firmware): > > >>>> * Significantly cuts down deferred probes. > > >>>> * Device probe is effectively attempted in graph order. > > >>>> * Makes it much easier to load drivers as modules without having to > > >>>> worry about functional dependencies between modules (depmod is still > > >>>> needed for symbol dependencies). > > >>>> > > >>>> If this patch prevents some devices from probing, it's very likely due > > >>>> to the system having one or more device drivers that "probe"/set up a > > >>>> device (DT node with compatible property) without creating a struct > > >>>> device for it. If we hit such cases, the device drivers need to be > > >>>> fixed so that they populate struct devices and probe them like normal > > >>>> device drivers so that the driver core is aware of the devices and their > > >>>> status. See [1] for an example of such a case. > > >>>> > > >>>> [1] - > > >>>> https://lore.kernel.org/lkml/CAGETcx9PiX==mLxB9PO8Myyk6u2vhPVwTMsA5NkD-ywH5xhusw@xxxxxxxxxxxxxx/ > > >>>> Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > > >>> This patch landed recently in linux next-20210111 as commit > > >>> e590474768f1 ("driver core: Set fw_devlink=on by default"). Sadly it > > >>> breaks Exynos IOMMU operation, what causes lots of devices being > > >>> deferred and not probed at all. I've briefly checked and noticed that > > >>> exynos_sysmmu_probe() is never called after this patch. This is really > > >>> strange for me, as the SYSMMU controllers on Exynos platform are > > >>> regular platform devices registered by the OF code. The driver code is > > >>> here: drivers/iommu/exynos-iommu.c, example dts: > > >>> arch/arm/boot/dts/exynos3250.dtsi (compatible = "samsung,exynos-sysmmu"). > > >> Okay, I found the source of this problem. It is caused by Exynos power > > >> domain driver, which is not platform driver yet. I will post a patch, > > >> which converts it to the platform driver. > > > Thanks Marek! Hopefully the debug logs I added were sufficient to > > > figure out the reason. > > > > Frankly, it took me a while to figure out that device core waits for the > > power domain devices. Maybe it would be possible to add some more debug > > messages or hints? Like the reason of the deferred probe in > > /sys/kernel/debug/devices_deferred ? > > There's already a /sys/devices/.../<device>/waiting_for_supplier file > that tells you if the device is waiting for a supplier device to be > added. That file goes away once the device probes. If the file has 1, > then it's waiting for the supplier device to be added (like your > case). If it's 0, then the device is just waiting on one of the > existing suppliers to probe. You can find the existing suppliers > through /sys/devices/.../<device>/supplier:*/supplier. Also, flip > these dev_dbg() to dev_info() if you need more details about deferred > probing. How are we supposed to check the contents of that file, if the system doesn't even boot into userspace with a ramdisk? All hardware drivers fail to probe. The only thing that works is "earlycon keep_bootcon", and kernel output just stops after a while. Thanks for your suggestions! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds