On 02/01/18 06:34, Rob Herring wrote: > On Wed, Jan 31, 2018 at 2:05 PM, <frowand.list@xxxxxxxxx> wrote: >> From: Frank Rowand <frank.rowand@xxxxxxxx> >> >> Create a cache of the nodes that contain a phandle property. Use this >> cache to find the node for a given phandle value instead of scanning >> the devicetree to find the node. If the phandle value is not found >> in the cache, of_find_node_by_phandle() will fall back to the tree >> scan algorithm. >> >> The cache is initialized in of_core_init(). >> >> The cache is freed via a late_initcall_sync(). >> >> Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxx> >> --- >> >> Some of_find_by_phandle() calls may occur before the cache is >> initialized or after it is freed. For example, for the qualcomm >> qcom-apq8074-dragonboard, 11 calls occur before the initialization >> and 80 occur after the cache is freed (out of 516 total calls.) > > We should be able to do this earlier. We already walk the tree twice > in unflattening. We can get the max phandle (or number of phandles > IMO) on the first pass, allocate with the early allocator and then > populate the cache in the 2nd pass. AIUI, you can alloc with memblock > and then free with kfree as the memblock allocations get transferred > to the slab. Thanks for pointing out that kfree() can be used for memory alloced with memblock. I'll change to populate the cache earlier. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html