Message ID | 20210225085627.2263-2-fangying1@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/arm/virt: Introduce cpu topology support | expand |
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 <drjones@redhat.com> 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 <drjones@redhat.com> > Signed-off-by: Ying Fang <fangying1@huawei.com> > --- > 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 > >
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 <drjones@redhat.com> > > 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 <drjones@redhat.com>" ? Can I made it by using git commit --amend like below ? git commit --amend --author "Andrew Jones <drjones@redhat.com>" > 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 <drjones@redhat.com> >> Signed-off-by: Ying Fang <fangying1@huawei.com> >> --- >> 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 >> >> > > . >
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 <drjones@redhat.com> > > > > 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 <drjones@redhat.com>" ? > > Can I made it by using git commit --amend like below ? > > git commit --amend --author "Andrew Jones <drjones@redhat.com>" 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 <drjones@redhat.com> > > > Signed-off-by: Ying Fang <fangying1@huawei.com> > > > --- > > > 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 > > > > > > > > > > . > > >
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 <drjones@redhat.com> >>> >>> 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 <drjones@redhat.com>" ? >> >> Can I made it by using git commit --amend like below ? >> >> git commit --amend --author "Andrew Jones <drjones@redhat.com>" > > 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 <drjones@redhat.com> >>>> Signed-off-by: Ying Fang <fangying1@huawei.com> >>>> --- >>>> 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 >>>> >>>> >>> >>> . >>> >> > > . >
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;