Re: [PATCH] livetree: add missing type markers in generated overlay properties

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Mon, Jun 10, 2019 at 11:31:14AM -0600, Rob Herring wrote:
> On Fri, May 17, 2019 at 2:28 PM Rob Herring <robh@xxxxxxxxxx> wrote:
> >
> > The YAML output fails for overlays and when symbol generation are enabled
> > due to missing markers in the generated properties.
> >
> > Add type markers when generating properties under '__symbols__' and
> > '__fixups__' nodes as well as target-path properties. As a side effect of
> > append_to_property() changes, this also sets type markers in
> > '__local_fixups__' node properties.
> >
> > Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> > ---
> >  dtc.h      |  3 ++-
> >  livetree.c | 18 +++++++++++-------
> >  2 files changed, 13 insertions(+), 8 deletions(-)
> 
> Ping.

Sorry, this one fell off my radar.  Applied now.

> 
> >
> > diff --git a/dtc.h b/dtc.h
> > index 789e0b1bc057..0d5fa215ac87 100644
> > --- a/dtc.h
> > +++ b/dtc.h
> > @@ -231,7 +231,8 @@ void add_child(struct node *parent, struct node *child);
> >  void delete_node_by_name(struct node *parent, char *name);
> >  void delete_node(struct node *node);
> >  void append_to_property(struct node *node,
> > -                       char *name, const void *data, int len);
> > +                       char *name, const void *data, int len,
> > +                       enum markertype type);
> >
> >  const char *get_unitname(struct node *node);
> >  struct property *get_property(struct node *node, const char *propname);
> > diff --git a/livetree.c b/livetree.c
> > index 7a2e6446a17b..a18529f7474b 100644
> > --- a/livetree.c
> > +++ b/livetree.c
> > @@ -249,6 +249,7 @@ struct node * add_orphan_node(struct node *dt, struct node *new_node, char *ref)
> >         char *name;
> >
> >         if (ref[0] == '/') {
> > +               d = data_add_marker(d, TYPE_STRING, ref);
> >                 d = data_append_data(d, ref, strlen(ref) + 1);
> >
> >                 p = build_property("target-path", d, NULL);
> > @@ -350,17 +351,20 @@ void delete_node(struct node *node)
> >  }
> >
> >  void append_to_property(struct node *node,
> > -                                   char *name, const void *data, int len)
> > +                       char *name, const void *data, int len,
> > +                       enum markertype type)
> >  {
> >         struct data d;
> >         struct property *p;
> >
> >         p = get_property(node, name);
> >         if (p) {
> > -               d = data_append_data(p->val, data, len);
> > +               d = data_add_marker(p->val, type, name);
> > +               d = data_append_data(d, data, len);
> >                 p->val = d;
> >         } else {
> > -               d = data_append_data(empty_data, data, len);
> > +               d = data_add_marker(empty_data, type, name);
> > +               d = data_append_data(d, data, len);
> >                 p = build_property(name, d, NULL);
> >                 add_property(node, p);
> >         }
> > @@ -858,8 +862,8 @@ static void generate_label_tree_internal(struct dt_info *dti,
> >
> >                         /* insert it */
> >                         p = build_property(l->label,
> > -                               data_copy_mem(node->fullpath,
> > -                                               strlen(node->fullpath) + 1),
> > +                               data_copy_escape_string(node->fullpath,
> > +                                               strlen(node->fullpath)),
> >                                 NULL);
> >                         add_property(an, p);
> >                 }
> > @@ -910,7 +914,7 @@ static void add_fixup_entry(struct dt_info *dti, struct node *fn,
> >
> >         xasprintf(&entry, "%s:%s:%u",
> >                         node->fullpath, prop->name, m->offset);
> > -       append_to_property(fn, m->ref, entry, strlen(entry) + 1);
> > +       append_to_property(fn, m->ref, entry, strlen(entry) + 1, TYPE_STRING);
> >
> >         free(entry);
> >  }
> > @@ -993,7 +997,7 @@ static void add_local_fixup_entry(struct dt_info *dti,
> >         free(compp);
> >
> >         value_32 = cpu_to_fdt32(m->offset);
> > -       append_to_property(wn, prop->name, &value_32, sizeof(value_32));
> > +       append_to_property(wn, prop->name, &value_32, sizeof(value_32), TYPE_UINT32);
> >  }
> >
> >  static void generate_local_fixups_tree_internal(struct dt_info *dti,
> >
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux