Hi Rob, Thanks for review. On Wed, Jan 31, 2024 at 03:12:27PM -0600, Rob Herring wrote: > On Tue, Jan 30, 2024 at 06:52:36PM +0800, Dawei Li wrote: > > Use implemented __of_phandle_update_cache to update phandle cache on > > device node attachment. > > > > While at it, make explicit assertion on locking dependency for > > __of_phandle_cache_inv_entry. > > 'While at it' is a red flag for should be a separate commit. Agreed. It should be in a separate commit. Thanks, Dawei > > > > > Signed-off-by: Dawei Li <dawei.li@xxxxxxxxxxxx> > > --- > > drivers/of/base.c | 6 ++++-- > > drivers/of/dynamic.c | 2 ++ > > 2 files changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/of/base.c b/drivers/of/base.c > > index 8b7da27835eb..44e542b566e1 100644 > > --- a/drivers/of/base.c > > +++ b/drivers/of/base.c > > @@ -153,6 +153,8 @@ void __of_phandle_cache_inv_entry(phandle handle) > > u32 handle_hash; > > struct device_node *np; > > > > + lockdep_assert_held(&devtree_lock); > > + > > if (!handle) > > return; > > > > @@ -195,8 +197,8 @@ void __init of_core_init(void) > > } > > for_each_of_allnodes(np) { > > __of_attach_node_sysfs(np); > > - if (np->phandle && !phandle_cache[of_phandle_cache_hash(np->phandle)]) > > - phandle_cache[of_phandle_cache_hash(np->phandle)] = np; > > + > > + __of_phandle_update_cache(np, false); > > } > > mutex_unlock(&of_mutex); > > > > diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c > > index 3bf27052832f..a68bf58f2c24 100644 > > --- a/drivers/of/dynamic.c > > +++ b/drivers/of/dynamic.c > > @@ -219,6 +219,8 @@ static void __of_attach_node(struct device_node *np) > > np->phandle = 0; > > } > > > > + __of_phandle_update_cache(np, true); > > + > > np->child = NULL; > > np->sibling = np->parent->child; > > np->parent->child = np; > > -- > > 2.27.0 > > >