On Thu, Dec 14, 2023 at 03:09:36PM +0100, Johan Hovold wrote: > On Thu, Dec 14, 2023 at 04:04:49PM +0200, Dmitry Baryshkov wrote: > > On Thu, 14 Dec 2023 at 16:01, Johan Hovold <johan@xxxxxxxxxx> wrote: > > > On Thu, Dec 14, 2023 at 01:04:43PM +0200, Dmitry Baryshkov wrote: > > > > This is a known problem. Successful probes during the probe deferral > > > > loop causes the whole loop to be reiterated. Creating child devices > > > > usually results in a successful probe. Aso I thought that just > > > > creating new device also causes a reprobe, but I can not find any > > > > evidence now. > > > > > > This still needs to be described in the commit message. > > > > > > Only a successful probe should trigger a reprobe, and when the child > > > devices are registered the parent is not yet on the deferred probe list. > > > So something is not right or missing here. > > > > Child devices can be successfully probed, then the parent gets > > -EPROBE_DEFER, removes children and then it goes on and on. > > So what? As I described above, the successful probe of the children > should have nothing to do with whether the parent is reprobed. > > If that isn't the case, then explain how. I took a closer look at this and indeed we do have code that triggers a reprobe of a device in case there was a successful probe while the device was probing. This was introduced by commit 58b116bce136 ("drivercore: deferral race condition fix") and the workaround for the reprobe-loop bug that hack led to is to not return -EPROBE_DEFER after registering child devices as no one managed to come up with a proper fix. This was documented here: fbc35b45f9f6 ("Add documentation on meaning of -EPROBE_DEFER") But please spell this out in some more detail in the commit message, and add a Fixes and CC stable tag. Johan