Message ID | 20191014051748.20190-17-amitay@ozlabs.org |
---|---|
State | Accepted |
Headers | show |
Series | Add system device tree to libpdbg | expand |
Reviewed-by: Alistair Popple <alistair@popple.id.au> On Monday, 14 October 2019 4:17:34 PM AEDT Amitay Isaacs wrote: > This ensures that the virtual nodes have correct status in the system > device tree view. > > Signed-off-by: Amitay Isaacs <amitay@ozlabs.org> > --- > libpdbg/target.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/libpdbg/target.c b/libpdbg/target.c > index 627a44e..84aa510 100644 > --- a/libpdbg/target.c > +++ b/libpdbg/target.c > @@ -360,7 +360,7 @@ struct pdbg_target_class *get_target_class(struct pdbg_target *target) > * exist but don't */ > enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) > { > - struct pdbg_target *parent; > + struct pdbg_target *parent, *vnode; > enum pdbg_target_status status; > > assert(target); > @@ -374,7 +374,7 @@ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) > * it's status won't have changed */ > return status; > > - parent = target->parent; > + parent = get_parent(target, false); > if (parent) { > /* Recurse up the tree to probe and set parent target status */ > pdbg_target_probe(parent); > @@ -406,6 +406,11 @@ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) > } > } > > + /* Make sure any virtual nodes are also probed */ > + vnode = target_to_virtual(target, true); > + if (vnode) > + pdbg_target_probe(vnode); > + > /* At this point any parents must exist and have already been probed */ > if (target->probe && target->probe(target)) { > /* Could not find the target */ >
diff --git a/libpdbg/target.c b/libpdbg/target.c index 627a44e..84aa510 100644 --- a/libpdbg/target.c +++ b/libpdbg/target.c @@ -360,7 +360,7 @@ struct pdbg_target_class *get_target_class(struct pdbg_target *target) * exist but don't */ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) { - struct pdbg_target *parent; + struct pdbg_target *parent, *vnode; enum pdbg_target_status status; assert(target); @@ -374,7 +374,7 @@ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) * it's status won't have changed */ return status; - parent = target->parent; + parent = get_parent(target, false); if (parent) { /* Recurse up the tree to probe and set parent target status */ pdbg_target_probe(parent); @@ -406,6 +406,11 @@ enum pdbg_target_status pdbg_target_probe(struct pdbg_target *target) } } + /* Make sure any virtual nodes are also probed */ + vnode = target_to_virtual(target, true); + if (vnode) + pdbg_target_probe(vnode); + /* At this point any parents must exist and have already been probed */ if (target->probe && target->probe(target)) { /* Could not find the target */
This ensures that the virtual nodes have correct status in the system device tree view. Signed-off-by: Amitay Isaacs <amitay@ozlabs.org> --- libpdbg/target.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)