On Wed, Jun 17, 2020 at 3:12 PM Rob Herring <robh@xxxxxxxxxx> wrote: > > On Tue, 09 Jun 2020 18:19:34 -0700, Saravana Kannan wrote: > > Consider this example where -> means LHS device is a consumer of RHS > > device and indentation represents "child of" of the previous device. > > > > Device A -> Device C > > > > Device B -> Device A > > Device C > > > > Without this commit: > > 1. Device A is added. > > 2. Device A is added to waiting for supplier list (Device C) > > 3. Device B is added > > 4. Device B is linked as a consumer to Device A > > 5. Device A doesn't probe because it's waiting for Device C to be added. > > 6. Device B doesn't probe because Device A hasn't probed. > > 7. Device C will never be added because it's parent hasn't probed. > > > > So, Device A, B and C will be in a probe/add deadlock. > > > > This commit detects this scenario and stops trying to create a device > > link between Device A and Device C since doing so would create the > > following cycle: > > Device A -> Devic C -(parent)-> Device B -> Device A. > > > > With this commit: > > 1. Device A is added. > > 3. Device B is added > > 4. Device B is linked as a consumer to Device A > > 5. Device A probes. > > 6. Device B probes because Device A has probed. > > 7. Device C is added and probed. > > > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > > --- > > drivers/of/property.c | 62 ++++++++++++++++++++++++++++++++++++++----- > > 1 file changed, 56 insertions(+), 6 deletions(-) > > > > Both patches applied. Thanks! -Saravana