On Thu, Jun 23, 2022 at 6:39 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Thu, Jun 23, 2022 at 12:04:21PM +0200, sascha hauer wrote: > > On Thu, Jun 23, 2022 at 01:03:43AM -0700, Saravana Kannan wrote: > > ... > > > I wonder if it wouldn't be a better approach to just probe all devices > > and record the device(node) they are waiting on. Then you know that you > > don't need to probe them again until the device they are waiting for > > is available. > > There may be no device, but resource. And we become again to the something like > deferred probe ugly hack. > > The real solution is to rework device driver model in the kernel that it will > create a graph of dependencies and then simply follow it. But actually it should > be more than 1 graph, because there are resources and there are power, clock and > resets that may be orthogonal to the higher dependencies (like driver X provides > a resource to driver Y). There is one graph, or it wouldn't be possible to shut down the system orderly. The problem is that this graph is generally dynamic, especially during system init, and following dependencies in transient states is generally hard. Device links allow the already known dependencies to be recorded and taken into account later, so we already have a graph for those. The unknown dependencies obviously cannot be used for creating a graph of any sort, though, and here we are in the business of guessing what the unknown dependencies may be IIUC.