Messages in this thread | | | Date | Tue, 17 Sep 2013 10:54:57 +0530 | From | Vineet Gupta <> | Subject | Re: [PATCH 03/28] of: create unflatten_and_copy_device_tree |
| |
On 09/17/2013 04:38 AM, Rob Herring wrote: > From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@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/DxBDgjK7y7TUQ@public.gmane.org> > Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@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 */ >
| |