On Fri, Jul 10, 2026 at 03:51:21PM +0200, Bartosz Golaszewski wrote: > Software nodes can be used to describe supplier-consumer relationships > between devices they represent using reference property entries. Unlike > for OF-nodes, driver core cannot yet use these references to create a > probe order that avoids needless probe deferrals on missing providers. > > Implement software_node_add_links() modelled on of_fwnode_add_links(). > For every DEV_PROP_REF property we resolve each referenced supplier and > create an fwnode link from the node to it. The driver core later promotes > these to device links and defers the consumer until the suppliers are > ready. > > There's no allowlist like the one DT needs - devicetree phandles appear > in plenty of non-supplier contexts, but a software node only carries a > reference property when its author explicitly points at another node, so > we treat every reference as an intentional supplier dependency and link > all of them. Graph "remote-endpoint" references are skipped for now: they > go 2-ways between endpoint nodes and would create graph cycles without > the port-parent lifting DT does via get_con_dev(). References to > suppliers that aren't registered yet and self-references are ignored. > > fw_devlink resolves the supplier device through fwnode->dev but the core > only records the owning device on the primary fwnode. When the software > node is a device's secondary fwnode, mirror the device pointer onto it in > software_node_notify() so the consumer can actually find the supplier > instead of deferring forever. > > While at it: purge the fwnode links in software_node_release() now that > software nodes can own them.
Acked-by: Andy Shevchenko <[email protected]> -- With Best Regards, Andy Shevchenko

