On Thu, Jun 23, 2022 at 6:39 PM Andy Shevchenko
[off-list ref] wrote:
On Thu, Jun 23, 2022 at 12:04:21PM +0200, sascha hauer wrote:
quoted
On Thu, Jun 23, 2022 at 01:03:43AM -0700, Saravana Kannan wrote:
...
quoted
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.