|
From: | Ying Fang |
Subject: | Re: [RFC PATCH 04/12] device_tree: add qemu_fdt_add_path |
Date: | Thu, 17 Sep 2020 21:55:05 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
On 9/17/2020 4:12 PM, Andrew Jones wrote:
On Thu, Sep 17, 2020 at 11:20:25AM +0800, Ying Fang wrote:From: Andrew Jones <drjones@redhat.com> qemu_fdt_add_path works like qemu_fdt_add_subnode, except it also recursively adds any missing parent nodes. Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com> Cc: Alexander Graf <agraf@suse.de> Signed-off-by: Andrew Jones <drjones@redhat.com> --- device_tree.c | 24 ++++++++++++++++++++++++ include/sysemu/device_tree.h | 1 + 2 files changed, 25 insertions(+) diff --git a/device_tree.c b/device_tree.c index b335dae707..1854be3a02 100644 --- a/device_tree.c +++ b/device_tree.c @@ -524,6 +524,30 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) return retval; }+int qemu_fdt_add_path(void *fdt, const char *path)+{ + char *parent; + int offset; + + offset = fdt_path_offset(fdt, path); + if (offset < 0 && offset != -FDT_ERR_NOTFOUND) { + error_report("%s Couldn't find node %s: %s", __func__, path, + fdt_strerror(offset)); + exit(1); + } + + if (offset != -FDT_ERR_NOTFOUND) { + return offset; + } + + parent = g_strdup(path); + strrchr(parent, '/')[0] = '\0'; + qemu_fdt_add_path(fdt, parent); + g_free(parent); + + return qemu_fdt_add_subnode(fdt, path); +}Igor didn't like the recursion when I posted this before so I changed it when doing the refresh[*] that I gave to Salil Mehta. Salil also works for Huawei, are you guys not working together? [*] https://github.com/rhdrjones/qemu/commits/virt-cpu-topology-refresh
Thanks for the sync. I'll look into it. I did not know about the refreshand the effort Salil Mehta has made on this. We are not in the same dept and work for different projects.
Thanks Ying.
Thanks, drew+ void qemu_fdt_dumpdtb(void *fdt, int size) { const char *dumpdtb = qemu_opt_get(qemu_get_machine_opts(), "dumpdtb"); diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h index 982c89345f..15fb98af98 100644 --- a/include/sysemu/device_tree.h +++ b/include/sysemu/device_tree.h @@ -104,6 +104,7 @@ uint32_t qemu_fdt_get_phandle(void *fdt, const char *path); uint32_t qemu_fdt_alloc_phandle(void *fdt); int qemu_fdt_nop_node(void *fdt, const char *node_path); int qemu_fdt_add_subnode(void *fdt, const char *name); +int qemu_fdt_add_path(void *fdt, const char *path);#define qemu_fdt_setprop_cells(fdt, node_path, property, ...) \do { \ -- 2.23.0.
[Prev in Thread] | Current Thread | [Next in Thread] |