On 09/17/2013 04:38 AM, Rob Herring wrote: > From: Rob Herring <rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org> > > Several architectures using DT support built-in dtb's in the init > section. These platforms need to copy the dtb from init since the > strings are referenced after unflattening. Every arch has their own > copying routine which do the same thing. Create a common function, > unflatten_and_copy_device_tree, to copy the dtb when unflattening the > dtb. > > Signed-off-by: Rob Herring > <rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org> > Cc: Grant Likely <grant.likely-qsej5fyqhm4dnm+yrof...@public.gmane.org> > --- > drivers/of/fdt.c | 13 +++++++++++++ > include/linux/of_fdt.h | 2 ++ > 2 files changed, 15 insertions(+) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index 229dd9d..eca1810 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -802,6 +802,19 @@ void __init unflatten_device_tree(void) > of_alias_scan(early_init_dt_alloc_memory_arch); > } > > +void __init unflatten_and_copy_device_tree(void) > +{
Can we add a comment here why exactly is the copy needed (unflattening doesn't copy strings which are referenced to by the DT APIs). Will help first time readers. > + int size = __be32_to_cpu(initial_boot_params->totalsize); > + void *dt = early_init_dt_alloc_memory_arch(size, > + __alignof__(struct boot_param_header)); > + > + if (dt) { > + memcpy(dt, initial_boot_params, size); > + initial_boot_params = dt; > + } > + unflatten_device_tree(); > +} > + > #endif /* CONFIG_OF_EARLY_FLATTREE */ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/