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. Rob