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