lkml.org 
[lkml]   [2013]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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 */
    >



    \
     
     \ /
      Last update: 2013-09-17 07:41    [W:4.103 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site