Re: [RFC PATCH 1/5] device_tree: Add qemu_fdt_add_path
On 2/25/2021 9:25 PM, Andrew Jones wrote: On Thu, Feb 25, 2021 at 08:54:40PM +0800, Ying Fang wrote: On 2/25/2021 7:03 PM, Andrew Jones wrote: Hi Ying Fang, I don't see any change in this patch from what I have in my tree, so this should be From: Andrew Jones Thanks, drew Yes, I picked it from your qemu branch: https://github.com/rhdrjones/qemu/commit/ecfc1565f22187d2c715a99bbcd35cf3a7e428fa So what can I do to make it "From: Andrew Jones " ? Can I made it by using git commit --amend like below ? git commit --amend --author "Andrew Jones " That's one way to fix it now, but normally when you apply/cherry-pick a patch it will keep the authorship. Then, all you have to do is post like usual and the "From: ..." will show up automatically. Hmm, I know cherry-pick can do that. But sometimes there maybe conflicts, so I have to backport it by hand and copy the commit msg back, thus the authorship may be lost. Thanks, drew On Thu, Feb 25, 2021 at 04:56:23PM +0800, Ying Fang wrote: qemu_fdt_add_path() works like qemu_fdt_add_subnode(), except it also adds any missing parent nodes. We also tweak an error message of qemu_fdt_add_subnode(). Signed-off-by: Andrew Jones Signed-off-by: Ying Fang --- include/sysemu/device_tree.h | 1 + softmmu/device_tree.c| 45 ++-- 2 files changed, 44 insertions(+), 2 deletions(-) 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 { \ diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c index b9a3ddc518..1e3857ca0c 100644 --- a/softmmu/device_tree.c +++ b/softmmu/device_tree.c @@ -515,8 +515,8 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) retval = fdt_add_subnode(fdt, parent, basename); if (retval < 0) { -error_report("FDT: Failed to create subnode %s: %s", name, - fdt_strerror(retval)); +error_report("%s: Failed to create subnode %s: %s", + __func__, name, fdt_strerror(retval)); exit(1); } @@ -524,6 +524,47 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) return retval; } +/* + * Like qemu_fdt_add_subnode(), but will add all missing + * subnodes in the path. + */ +int qemu_fdt_add_path(void *fdt, const char *path) +{ +char *dupname, *basename, *p; +int parent, retval = -1; + +if (path[0] != '/') { +return retval; +} + +parent = fdt_path_offset(fdt, "/"); +p = dupname = g_strdup(path); + +while (p) { +*p = '/'; +basename = p + 1; +p = strchr(p + 1, '/'); +if (p) { +*p = '\0'; +} +retval = fdt_path_offset(fdt, dupname); +if (retval < 0 && retval != -FDT_ERR_NOTFOUND) { +error_report("%s: Invalid path %s: %s", + __func__, path, fdt_strerror(retval)); +exit(1); +} else if (retval == -FDT_ERR_NOTFOUND) { +retval = fdt_add_subnode(fdt, parent, basename); +if (retval < 0) { +break; +} +} +parent = retval; +} + +g_free(dupname); +return retval; +} + void qemu_fdt_dumpdtb(void *fdt, int size) { const char *dumpdtb = current_machine->dumpdtb; -- 2.23.0 . .
Re: [RFC PATCH 1/5] device_tree: Add qemu_fdt_add_path
On Thu, Feb 25, 2021 at 08:54:40PM +0800, Ying Fang wrote: > > > On 2/25/2021 7:03 PM, Andrew Jones wrote: > > Hi Ying Fang, > > > > I don't see any change in this patch from what I have in my > > tree, so this should be > > > > From: Andrew Jones > > > > Thanks, > > drew > > > > Yes, I picked it from your qemu branch: > https://github.com/rhdrjones/qemu/commit/ecfc1565f22187d2c715a99bbcd35cf3a7e428fa > > So what can I do to make it "From: Andrew Jones " ? > > Can I made it by using git commit --amend like below ? > > git commit --amend --author "Andrew Jones " That's one way to fix it now, but normally when you apply/cherry-pick a patch it will keep the authorship. Then, all you have to do is post like usual and the "From: ..." will show up automatically. Thanks, drew > > > On Thu, Feb 25, 2021 at 04:56:23PM +0800, Ying Fang wrote: > > > qemu_fdt_add_path() works like qemu_fdt_add_subnode(), except > > > it also adds any missing parent nodes. We also tweak an error > > > message of qemu_fdt_add_subnode(). > > > > > > Signed-off-by: Andrew Jones > > > Signed-off-by: Ying Fang > > > --- > > > include/sysemu/device_tree.h | 1 + > > > softmmu/device_tree.c| 45 ++-- > > > 2 files changed, 44 insertions(+), 2 deletions(-) > > > > > > 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 { > > > \ > > > diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c > > > index b9a3ddc518..1e3857ca0c 100644 > > > --- a/softmmu/device_tree.c > > > +++ b/softmmu/device_tree.c > > > @@ -515,8 +515,8 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) > > > retval = fdt_add_subnode(fdt, parent, basename); > > > if (retval < 0) { > > > -error_report("FDT: Failed to create subnode %s: %s", name, > > > - fdt_strerror(retval)); > > > +error_report("%s: Failed to create subnode %s: %s", > > > + __func__, name, fdt_strerror(retval)); > > > exit(1); > > > } > > > @@ -524,6 +524,47 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) > > > return retval; > > > } > > > +/* > > > + * Like qemu_fdt_add_subnode(), but will add all missing > > > + * subnodes in the path. > > > + */ > > > +int qemu_fdt_add_path(void *fdt, const char *path) > > > +{ > > > +char *dupname, *basename, *p; > > > +int parent, retval = -1; > > > + > > > +if (path[0] != '/') { > > > +return retval; > > > +} > > > + > > > +parent = fdt_path_offset(fdt, "/"); > > > +p = dupname = g_strdup(path); > > > + > > > +while (p) { > > > +*p = '/'; > > > +basename = p + 1; > > > +p = strchr(p + 1, '/'); > > > +if (p) { > > > +*p = '\0'; > > > +} > > > +retval = fdt_path_offset(fdt, dupname); > > > +if (retval < 0 && retval != -FDT_ERR_NOTFOUND) { > > > +error_report("%s: Invalid path %s: %s", > > > + __func__, path, fdt_strerror(retval)); > > > +exit(1); > > > +} else if (retval == -FDT_ERR_NOTFOUND) { > > > +retval = fdt_add_subnode(fdt, parent, basename); > > > +if (retval < 0) { > > > +break; > > > +} > > > +} > > > +parent = retval; > > > +} > > > + > > > +g_free(dupname); > > > +return retval; > > > +} > > > + > > > void qemu_fdt_dumpdtb(void *fdt, int size) > > > { > > > const char *dumpdtb = current_machine->dumpdtb; > > > -- > > > 2.23.0 > > > > > > > > > > . > > >
Re: [RFC PATCH 1/5] device_tree: Add qemu_fdt_add_path
On 2/25/2021 7:03 PM, Andrew Jones wrote: Hi Ying Fang, I don't see any change in this patch from what I have in my tree, so this should be From: Andrew Jones Thanks, drew Yes, I picked it from your qemu branch: https://github.com/rhdrjones/qemu/commit/ecfc1565f22187d2c715a99bbcd35cf3a7e428fa So what can I do to make it "From: Andrew Jones " ? Can I made it by using git commit --amend like below ? git commit --amend --author "Andrew Jones " On Thu, Feb 25, 2021 at 04:56:23PM +0800, Ying Fang wrote: qemu_fdt_add_path() works like qemu_fdt_add_subnode(), except it also adds any missing parent nodes. We also tweak an error message of qemu_fdt_add_subnode(). Signed-off-by: Andrew Jones Signed-off-by: Ying Fang --- include/sysemu/device_tree.h | 1 + softmmu/device_tree.c| 45 ++-- 2 files changed, 44 insertions(+), 2 deletions(-) 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 { \ diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c index b9a3ddc518..1e3857ca0c 100644 --- a/softmmu/device_tree.c +++ b/softmmu/device_tree.c @@ -515,8 +515,8 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) retval = fdt_add_subnode(fdt, parent, basename); if (retval < 0) { -error_report("FDT: Failed to create subnode %s: %s", name, - fdt_strerror(retval)); +error_report("%s: Failed to create subnode %s: %s", + __func__, name, fdt_strerror(retval)); exit(1); } @@ -524,6 +524,47 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) return retval; } +/* + * Like qemu_fdt_add_subnode(), but will add all missing + * subnodes in the path. + */ +int qemu_fdt_add_path(void *fdt, const char *path) +{ +char *dupname, *basename, *p; +int parent, retval = -1; + +if (path[0] != '/') { +return retval; +} + +parent = fdt_path_offset(fdt, "/"); +p = dupname = g_strdup(path); + +while (p) { +*p = '/'; +basename = p + 1; +p = strchr(p + 1, '/'); +if (p) { +*p = '\0'; +} +retval = fdt_path_offset(fdt, dupname); +if (retval < 0 && retval != -FDT_ERR_NOTFOUND) { +error_report("%s: Invalid path %s: %s", + __func__, path, fdt_strerror(retval)); +exit(1); +} else if (retval == -FDT_ERR_NOTFOUND) { +retval = fdt_add_subnode(fdt, parent, basename); +if (retval < 0) { +break; +} +} +parent = retval; +} + +g_free(dupname); +return retval; +} + void qemu_fdt_dumpdtb(void *fdt, int size) { const char *dumpdtb = current_machine->dumpdtb; -- 2.23.0 .
Re: [RFC PATCH 1/5] device_tree: Add qemu_fdt_add_path
Hi Ying Fang, I don't see any change in this patch from what I have in my tree, so this should be From: Andrew Jones Thanks, drew On Thu, Feb 25, 2021 at 04:56:23PM +0800, Ying Fang wrote: > qemu_fdt_add_path() works like qemu_fdt_add_subnode(), except > it also adds any missing parent nodes. We also tweak an error > message of qemu_fdt_add_subnode(). > > Signed-off-by: Andrew Jones > Signed-off-by: Ying Fang > --- > include/sysemu/device_tree.h | 1 + > softmmu/device_tree.c| 45 ++-- > 2 files changed, 44 insertions(+), 2 deletions(-) > > 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 { > \ > diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c > index b9a3ddc518..1e3857ca0c 100644 > --- a/softmmu/device_tree.c > +++ b/softmmu/device_tree.c > @@ -515,8 +515,8 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) > > retval = fdt_add_subnode(fdt, parent, basename); > if (retval < 0) { > -error_report("FDT: Failed to create subnode %s: %s", name, > - fdt_strerror(retval)); > +error_report("%s: Failed to create subnode %s: %s", > + __func__, name, fdt_strerror(retval)); > exit(1); > } > > @@ -524,6 +524,47 @@ int qemu_fdt_add_subnode(void *fdt, const char *name) > return retval; > } > > +/* > + * Like qemu_fdt_add_subnode(), but will add all missing > + * subnodes in the path. > + */ > +int qemu_fdt_add_path(void *fdt, const char *path) > +{ > +char *dupname, *basename, *p; > +int parent, retval = -1; > + > +if (path[0] != '/') { > +return retval; > +} > + > +parent = fdt_path_offset(fdt, "/"); > +p = dupname = g_strdup(path); > + > +while (p) { > +*p = '/'; > +basename = p + 1; > +p = strchr(p + 1, '/'); > +if (p) { > +*p = '\0'; > +} > +retval = fdt_path_offset(fdt, dupname); > +if (retval < 0 && retval != -FDT_ERR_NOTFOUND) { > +error_report("%s: Invalid path %s: %s", > + __func__, path, fdt_strerror(retval)); > +exit(1); > +} else if (retval == -FDT_ERR_NOTFOUND) { > +retval = fdt_add_subnode(fdt, parent, basename); > +if (retval < 0) { > +break; > +} > +} > +parent = retval; > +} > + > +g_free(dupname); > +return retval; > +} > + > void qemu_fdt_dumpdtb(void *fdt, int size) > { > const char *dumpdtb = current_machine->dumpdtb; > -- > 2.23.0 > >