From: Eric Auger <eric.auger@linaro.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: eric.auger@st.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org, alex.williamson@redhat.com,
alex.bennee@linaro.org, thuth@redhat.com,
crosthwaitepeter@gmail.com, patches@linaro.org,
christoffer.dall@linaro.org, pbonzini@redhat.com,
b.reynal@virtualopensystems.com, suravee.suthikulpanit@amd.com,
thomas.lendacky@amd.com
Subject: Re: [PATCH v2 3/7] device_tree: introduce qemu_fdt_node_path
Date: Mon, 11 Jan 2016 11:35:50 +0100 [thread overview]
Message-ID: <56938586.5050503@linaro.org> (raw)
In-Reply-To: <20160111023853.GB22925@voom.redhat.com>
Hi David,
On 01/11/2016 03:38 AM, David Gibson wrote:
> On Wed, Jan 06, 2016 at 03:13:21PM +0000, Eric Auger wrote:
>> This new helper routine returns the node path of a device
>> referred to by its node name and compat string.
>
> What if there are multiple nodes matching the name and compat?
The function would return the first one. I can improve the doc comment.
Do you think it is a problem stopping at the first one? Is it a real
life test case I have to handle here?
Thanks
Eric
>
>>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>>
>> ---
>>
>> v1 -> v2:
>> - move doc comment in header file
>> - do not use a fixed size buffer
>> - break on errors in while loop
>> - use strcmp instead of strncmp
>>
>> RFC -> v1:
>> - improve error handling according to Alex' comments
>> ---
>> device_tree.c | 37 +++++++++++++++++++++++++++++++++++++
>> include/sysemu/device_tree.h | 14 ++++++++++++++
>> 2 files changed, 51 insertions(+)
>>
>> diff --git a/device_tree.c b/device_tree.c
>> index b262c2d..8441e01 100644
>> --- a/device_tree.c
>> +++ b/device_tree.c
>> @@ -231,6 +231,43 @@ static int findnode_nofail(void *fdt, const char *node_path)
>> return offset;
>> }
>>
>> +int qemu_fdt_node_path(void *fdt, const char *name, char *compat,
>> + char **node_path)
>> +{
>> + int offset, len, ret;
>> + const char *iter_name;
>> + unsigned int path_len = 16;
>> + char *path;
>> +
>> + *node_path = NULL;
>> + offset = fdt_node_offset_by_compatible(fdt, -1, compat);
>> +
>> + while (offset >= 0) {
>> + iter_name = fdt_get_name(fdt, offset, &len);
>> + if (!iter_name) {
>> + offset = len;
>> + break;
>> + }
>> + if (!strcmp(iter_name, name)) {
>> + goto found;
>> + }
>> + offset = fdt_node_offset_by_compatible(fdt, offset, compat);
>> + }
>> + return offset;
>> +
>> +found:
>> + path = g_malloc(path_len);
>> + while ((ret = fdt_get_path(fdt, offset, path, path_len))
>> + == -FDT_ERR_NOSPACE) {
>> + path_len += 16;
>> + path = g_realloc(path, path_len);
>> + }
>> + if (!ret) {
>> + *node_path = path;
>> + }
>> + return ret;
>> +}
>> +
>> int qemu_fdt_setprop(void *fdt, const char *node_path,
>> const char *property, const void *val, int size)
>> {
>> diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
>> index fdf25a4..269cb1c 100644
>> --- a/include/sysemu/device_tree.h
>> +++ b/include/sysemu/device_tree.h
>> @@ -20,6 +20,20 @@ void *load_device_tree(const char *filename_path, int *sizep);
>> void *load_device_tree_from_sysfs(void);
>> #endif
>>
>> +/**
>> + * qemu_fdt_node_path: return the node path of a device, given its
>> + * node name and its compat string
>> + * @fdt: pointer to the dt blob
>> + * @name: device node name
>> + * @compat: compatibility string of the device
>> + * @node_path: returned node path
>> + *
>> + * upon success, the path is output at node_path address
>> + * returns 0 on success, < 0 on failure
>> + */
>> +int qemu_fdt_node_path(void *fdt, const char *name, char *compat,
>> + char **node_path);
>> +
>> int qemu_fdt_setprop(void *fdt, const char *node_path,
>> const char *property, const void *val, int size);
>> int qemu_fdt_setprop_cell(void *fdt, const char *node_path,
>
WARNING: multiple messages have this Message-ID (diff)
From: Eric Auger <eric.auger@linaro.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: b.reynal@virtualopensystems.com, peter.maydell@linaro.org,
thuth@redhat.com, eric.auger@st.com, patches@linaro.org,
crosthwaitepeter@gmail.com, qemu-devel@nongnu.org,
alex.williamson@redhat.com, qemu-arm@nongnu.org,
suravee.suthikulpanit@amd.com, pbonzini@redhat.com,
thomas.lendacky@amd.com, alex.bennee@linaro.org,
christoffer.dall@linaro.org
Subject: Re: [Qemu-devel] [PATCH v2 3/7] device_tree: introduce qemu_fdt_node_path
Date: Mon, 11 Jan 2016 11:35:50 +0100 [thread overview]
Message-ID: <56938586.5050503@linaro.org> (raw)
In-Reply-To: <20160111023853.GB22925@voom.redhat.com>
Hi David,
On 01/11/2016 03:38 AM, David Gibson wrote:
> On Wed, Jan 06, 2016 at 03:13:21PM +0000, Eric Auger wrote:
>> This new helper routine returns the node path of a device
>> referred to by its node name and compat string.
>
> What if there are multiple nodes matching the name and compat?
The function would return the first one. I can improve the doc comment.
Do you think it is a problem stopping at the first one? Is it a real
life test case I have to handle here?
Thanks
Eric
>
>>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>>
>> ---
>>
>> v1 -> v2:
>> - move doc comment in header file
>> - do not use a fixed size buffer
>> - break on errors in while loop
>> - use strcmp instead of strncmp
>>
>> RFC -> v1:
>> - improve error handling according to Alex' comments
>> ---
>> device_tree.c | 37 +++++++++++++++++++++++++++++++++++++
>> include/sysemu/device_tree.h | 14 ++++++++++++++
>> 2 files changed, 51 insertions(+)
>>
>> diff --git a/device_tree.c b/device_tree.c
>> index b262c2d..8441e01 100644
>> --- a/device_tree.c
>> +++ b/device_tree.c
>> @@ -231,6 +231,43 @@ static int findnode_nofail(void *fdt, const char *node_path)
>> return offset;
>> }
>>
>> +int qemu_fdt_node_path(void *fdt, const char *name, char *compat,
>> + char **node_path)
>> +{
>> + int offset, len, ret;
>> + const char *iter_name;
>> + unsigned int path_len = 16;
>> + char *path;
>> +
>> + *node_path = NULL;
>> + offset = fdt_node_offset_by_compatible(fdt, -1, compat);
>> +
>> + while (offset >= 0) {
>> + iter_name = fdt_get_name(fdt, offset, &len);
>> + if (!iter_name) {
>> + offset = len;
>> + break;
>> + }
>> + if (!strcmp(iter_name, name)) {
>> + goto found;
>> + }
>> + offset = fdt_node_offset_by_compatible(fdt, offset, compat);
>> + }
>> + return offset;
>> +
>> +found:
>> + path = g_malloc(path_len);
>> + while ((ret = fdt_get_path(fdt, offset, path, path_len))
>> + == -FDT_ERR_NOSPACE) {
>> + path_len += 16;
>> + path = g_realloc(path, path_len);
>> + }
>> + if (!ret) {
>> + *node_path = path;
>> + }
>> + return ret;
>> +}
>> +
>> int qemu_fdt_setprop(void *fdt, const char *node_path,
>> const char *property, const void *val, int size)
>> {
>> diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
>> index fdf25a4..269cb1c 100644
>> --- a/include/sysemu/device_tree.h
>> +++ b/include/sysemu/device_tree.h
>> @@ -20,6 +20,20 @@ void *load_device_tree(const char *filename_path, int *sizep);
>> void *load_device_tree_from_sysfs(void);
>> #endif
>>
>> +/**
>> + * qemu_fdt_node_path: return the node path of a device, given its
>> + * node name and its compat string
>> + * @fdt: pointer to the dt blob
>> + * @name: device node name
>> + * @compat: compatibility string of the device
>> + * @node_path: returned node path
>> + *
>> + * upon success, the path is output at node_path address
>> + * returns 0 on success, < 0 on failure
>> + */
>> +int qemu_fdt_node_path(void *fdt, const char *name, char *compat,
>> + char **node_path);
>> +
>> int qemu_fdt_setprop(void *fdt, const char *node_path,
>> const char *property, const void *val, int size);
>> int qemu_fdt_setprop_cell(void *fdt, const char *node_path,
>
next prev parent reply other threads:[~2016-01-11 10:36 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-06 15:13 [PATCH v2 0/7] AMD XGBE KVM platform passthrough Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 1/7] hw/vfio/platform: amd-xgbe device Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 2/7] device_tree: introduce load_device_tree_from_sysfs Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 3/7] device_tree: introduce qemu_fdt_node_path Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-11 2:38 ` David Gibson
2016-01-11 2:38 ` [Qemu-devel] " David Gibson
2016-01-11 10:35 ` Eric Auger [this message]
2016-01-11 10:35 ` Eric Auger
2016-01-12 4:28 ` David Gibson
2016-01-12 4:28 ` [Qemu-devel] " David Gibson
2016-01-12 17:02 ` Eric Auger
2016-01-12 17:02 ` [Qemu-devel] " Eric Auger
2016-01-12 23:07 ` David Gibson
2016-01-12 23:07 ` [Qemu-devel] " David Gibson
2016-01-06 15:13 ` [PATCH v2 4/7] device_tree: qemu_fdt_getprop converted to use the error API Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-07 0:20 ` Peter Crosthwaite
2016-01-07 0:20 ` [Qemu-devel] " Peter Crosthwaite
2016-01-07 8:50 ` Eric Auger
2016-01-07 8:50 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 5/7] hw/arm/sysbus-fdt: helpers for clock node generation Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-11 2:41 ` David Gibson
2016-01-11 2:41 ` [Qemu-devel] " David Gibson
2016-01-11 10:23 ` Eric Auger
2016-01-11 10:23 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 6/7] hw/arm/sysbus-fdt: enable amd-xgbe dynamic instantiation Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-06 15:13 ` [PATCH v2 7/7] hw/arm/sysbus-fdt: remove qemu_fdt_setprop returned value check Eric Auger
2016-01-06 15:13 ` [Qemu-devel] " Eric Auger
2016-01-11 2:45 ` David Gibson
2016-01-11 2:45 ` [Qemu-devel] " David Gibson
2016-01-11 11:18 ` Eric Auger
2016-01-11 11:18 ` [Qemu-devel] " Eric Auger
2016-01-12 4:31 ` David Gibson
2016-01-12 4:31 ` [Qemu-devel] " David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56938586.5050503@linaro.org \
--to=eric.auger@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=alex.williamson@redhat.com \
--cc=b.reynal@virtualopensystems.com \
--cc=christoffer.dall@linaro.org \
--cc=crosthwaitepeter@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=eric.auger@st.com \
--cc=patches@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=suravee.suthikulpanit@amd.com \
--cc=thomas.lendacky@amd.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.