In the U-Boot pre-relocation stage, if the parent node lacks bootph* property and the driver lacks a pre-reloc flag, all of its subsequent subnodes gets skipped over from driver binding—even if they have a bootph* property.
This series addresses the issue by scanning through all the subnodes of the current node for the bootph* property and propagate it to all of its supernodes, ensuring that all of the applicable drivers are bound and probed prior to relocation. This series implements one of the solutions mentioned in [0]. Since, all the nodes which are not having any bootph* property will also be traversed, we will have to incur some overheads in boot time, hence protecting the feature under a config. Boot time overheads: Baseline: Upstream u-boot Patch test: Baseline + remove all bootph-all properties from *-u-boot.dtsi except the ones which are supposed to be probed but have no bootph in any of its subnode. J7200 delta from baseline : ~100ms J784S4 delta from baseline : ~350ms Boot logs with the patch: https://gist.github.com/Jamm02/d6e76233437525b266ec96f8a7982096 References: [0] https://lore.kernel.org/u-boot/CAFLszTiEZYoo+=+MJg7sgN93k144zEi18A5_Hk+J3sce00g+=w...@mail.gmail.com/ Moteen Shah (2): arch: arm: Kconfig: Add config to use subnode's bootph property for binding drivers drivers: core: lists.c: Bind drivers using bootph* property in subnodes arch/arm/Kconfig | 11 ++++++ drivers/core/lists.c | 88 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 97 insertions(+), 2 deletions(-) -- 2.34.1