On Thu, May 24, 2018 at 1:18 PM, Mark Brown broonie@kernel.org wrote:
On Thu, May 24, 2018 at 12:50:17PM -0500, Rob Herring wrote:
Subsystems or drivers may opt-in to this behavior by calling driver_deferred_probe_check_init_done() instead of just returning -EPROBE_DEFER. They may use additional information from DT or kernel's config to decide whether to continue to defer probe or not.
Should userspace have some involvement in this decision? It knows if it's got any intention of loading modules for example. Kernel config checks might be good enough, though it's going to be a pain to work out if the relevant driver is built as a module for example.
I looked into whether we could hook into uevents in some way. If we knew when all the coldplug events had been handled, that would be sufficient. But it doesn't look to me like we can tell when that happens with the uevent netlink socket. I think about the only thing we can tell is if userspace has opened a socket. I'm not all that familiar with how the whole sequence works, so other opinions on this would be helpful.
Also, for this to work with serial consoles, we have to make the decision before we get to userspace. I couldn't get systemd to create serial gettys either if we deferred later. There's some dependence on /dev/console, but I didn't get to the bottom of it.
Rob
boot-architecture@lists.linaro.org