All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: eric.auger@st.com, "QEMU Developers" <qemu-devel@nongnu.org>,
	qemu-arm <qemu-arm@nongnu.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"Peter Crosthwaite" <crosthwaitepeter@gmail.com>,
	"Patch Tracking" <patches@linaro.org>,
	"Christoffer Dall" <christoffer.dall@linaro.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Baptiste Reynal" <b.reynal@virtualopensystems.com>,
	"Suravee Suthikulpanit" <suravee.suthikulpanit@amd.com>,
	thomas.lendacky@amd.com
Subject: Re: [PATCH v5 6/8] hw/arm/sysbus-fdt: helpers for clock node generation
Date: Mon, 25 Jan 2016 15:09:49 +0100	[thread overview]
Message-ID: <56A62CAD.50405@linaro.org> (raw)
In-Reply-To: <CAFEAcA9ZximjpaZ_rSdfM1JRyhW9dz1DZfcRRqQR+03heSPg2A@mail.gmail.com>

Hi Peter,
On 01/25/2016 03:05 PM, Peter Maydell wrote:
> On 18 January 2016 at 15:16, Eric Auger <eric.auger@linaro.org> wrote:
>> Some passthrough'ed devices depend on clock nodes. Those need to be
>> generated in the guest device tree. This patch introduces some helpers
>> to build a clock node from information retrieved in the host device tree.
>>
>> - copy_properties_from_host copies properties from a host device tree
>>   node to a guest device tree node
>> - fdt_build_clock_node builds a guest clock node and checks the host
>>   fellow clock is a fixed one.
>>
>> fdt_build_clock_node will become static as soon as it gets used. A
>> dummy pre-declaration is needed for compilation of this patch.
>>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> 
>> +
>> +/**
>> + * copy_properties_from_host
>> + *
>> + * copies properties listed in an array from host device tree to
>> + * guest device tree. If a non optional property is not found, the
>> + * function self-asserts. An optional property is ignored if not found
> 
> This is just "asserts", not "self-asserts".
ok
> 
>> + * in the host device tree.
>> + * @props: array of HostProperty to copy
>> + * @nb_props: number of properties in the array
>> + * @host_dt: host device tree blob
>> + * @guest_dt: guest device tree blob
>> + * @node_path: host dt node path where the property is supposed to be
>> +              found
>> + * @nodename: guest node name the properties should be added to
>> + */
> 
>> +/**
>> + * fdt_build_clock_node
>> + *
>> + * Build a guest clock node, used as a dependency from a passthrough'ed
>> + * device. Most information are retrieved from the host clock node.
>> + * Also check the host clock is a fixed one.
>> + *
>> + * @host_fdt: host device tree blob from which info are retrieved
>> + * @guest_fdt: guest device tree blob where the clock node is added
>> + * @host_phandle: phandle of the clock in host device tree
>> + * @guest_phandle: phandle to assign to the guest node
>> + */
>> +void fdt_build_clock_node(void *host_fdt, void *guest_fdt,
>> +                         uint32_t host_phandle,
>> +                         uint32_t guest_phandle);
>> +void fdt_build_clock_node(void *host_fdt, void *guest_fdt,
>> +                         uint32_t host_phandle,
>> +                         uint32_t guest_phandle)
>> +{
>> +    char *node_path = NULL;
>> +    char *nodename;
>> +    const void *r;
>> +    int ret, node_offset, prop_len, path_len = 16;
>> +
>> +    node_offset = fdt_node_offset_by_phandle(host_fdt, host_phandle);
>> +    if (node_offset <= 0) {
>> +        error_setg(&error_fatal,
>> +                   "not able to locate clock handle %d in host device tree",
>> +                   host_phandle);
> 
> Don't we want to return here, rather than continuing with the
> rest of the function? ("goto err;" with an err: label before
> the g_free() at the bottom of the function probably best since
> some of the error paths need to free that.)
due to the &error_fatal, we are going to exit here. I thought it is not
worth going further if we can't find the clock node.

Best Regards

Eric
> 
>> +    }
>> +    node_path = g_malloc(path_len);
>> +    while ((ret = fdt_get_path(host_fdt, node_offset, node_path, path_len))
>> +            == -FDT_ERR_NOSPACE) {
>> +        path_len += 16;
>> +        node_path = g_realloc(node_path, path_len);
>> +    }
>> +    if (ret < 0) {
>> +        error_setg(&error_fatal,
>> +                   "not able to retrieve node path for clock handle %d",
>> +                   host_phandle);
>> +    }
>> +
>> +    r = qemu_fdt_getprop(host_fdt, node_path, "compatible", &prop_len,
>> +                         &error_fatal);
>> +    if (strcmp(r, "fixed-clock")) {
>> +        error_setg(&error_fatal,
>> +                   "clock handle %d is not a fixed clock", host_phandle);
>> +    }
>> +
>> +    nodename = strrchr(node_path, '/');
>> +    qemu_fdt_add_subnode(guest_fdt, nodename);
>> +
>> +    copy_properties_from_host(clock_copied_properties,
>> +                              ARRAY_SIZE(clock_copied_properties),
>> +                              host_fdt, guest_fdt,
>> +                              node_path, nodename);
>> +
>> +    qemu_fdt_setprop_cell(guest_fdt, nodename, "phandle", guest_phandle);
>> +
>> +    g_free(node_path);
>> +}
>> +
>>  /* Device Specific Code */
> 
> thanks
> -- PMM
> 

WARNING: multiple messages have this Message-ID (diff)
From: Eric Auger <eric.auger@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Baptiste Reynal" <b.reynal@virtualopensystems.com>,
	"Thomas Huth" <thuth@redhat.com>,
	eric.auger@st.com, "Patch Tracking" <patches@linaro.org>,
	"Peter Crosthwaite" <crosthwaitepeter@gmail.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	qemu-arm <qemu-arm@nongnu.org>,
	"Suravee Suthikulpanit" <suravee.suthikulpanit@amd.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	thomas.lendacky@amd.com, "Alex Bennée" <alex.bennee@linaro.org>,
	"Christoffer Dall" <christoffer.dall@linaro.org>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [PATCH v5 6/8] hw/arm/sysbus-fdt: helpers for clock node generation
Date: Mon, 25 Jan 2016 15:09:49 +0100	[thread overview]
Message-ID: <56A62CAD.50405@linaro.org> (raw)
In-Reply-To: <CAFEAcA9ZximjpaZ_rSdfM1JRyhW9dz1DZfcRRqQR+03heSPg2A@mail.gmail.com>

Hi Peter,
On 01/25/2016 03:05 PM, Peter Maydell wrote:
> On 18 January 2016 at 15:16, Eric Auger <eric.auger@linaro.org> wrote:
>> Some passthrough'ed devices depend on clock nodes. Those need to be
>> generated in the guest device tree. This patch introduces some helpers
>> to build a clock node from information retrieved in the host device tree.
>>
>> - copy_properties_from_host copies properties from a host device tree
>>   node to a guest device tree node
>> - fdt_build_clock_node builds a guest clock node and checks the host
>>   fellow clock is a fixed one.
>>
>> fdt_build_clock_node will become static as soon as it gets used. A
>> dummy pre-declaration is needed for compilation of this patch.
>>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> 
>> +
>> +/**
>> + * copy_properties_from_host
>> + *
>> + * copies properties listed in an array from host device tree to
>> + * guest device tree. If a non optional property is not found, the
>> + * function self-asserts. An optional property is ignored if not found
> 
> This is just "asserts", not "self-asserts".
ok
> 
>> + * in the host device tree.
>> + * @props: array of HostProperty to copy
>> + * @nb_props: number of properties in the array
>> + * @host_dt: host device tree blob
>> + * @guest_dt: guest device tree blob
>> + * @node_path: host dt node path where the property is supposed to be
>> +              found
>> + * @nodename: guest node name the properties should be added to
>> + */
> 
>> +/**
>> + * fdt_build_clock_node
>> + *
>> + * Build a guest clock node, used as a dependency from a passthrough'ed
>> + * device. Most information are retrieved from the host clock node.
>> + * Also check the host clock is a fixed one.
>> + *
>> + * @host_fdt: host device tree blob from which info are retrieved
>> + * @guest_fdt: guest device tree blob where the clock node is added
>> + * @host_phandle: phandle of the clock in host device tree
>> + * @guest_phandle: phandle to assign to the guest node
>> + */
>> +void fdt_build_clock_node(void *host_fdt, void *guest_fdt,
>> +                         uint32_t host_phandle,
>> +                         uint32_t guest_phandle);
>> +void fdt_build_clock_node(void *host_fdt, void *guest_fdt,
>> +                         uint32_t host_phandle,
>> +                         uint32_t guest_phandle)
>> +{
>> +    char *node_path = NULL;
>> +    char *nodename;
>> +    const void *r;
>> +    int ret, node_offset, prop_len, path_len = 16;
>> +
>> +    node_offset = fdt_node_offset_by_phandle(host_fdt, host_phandle);
>> +    if (node_offset <= 0) {
>> +        error_setg(&error_fatal,
>> +                   "not able to locate clock handle %d in host device tree",
>> +                   host_phandle);
> 
> Don't we want to return here, rather than continuing with the
> rest of the function? ("goto err;" with an err: label before
> the g_free() at the bottom of the function probably best since
> some of the error paths need to free that.)
due to the &error_fatal, we are going to exit here. I thought it is not
worth going further if we can't find the clock node.

Best Regards

Eric
> 
>> +    }
>> +    node_path = g_malloc(path_len);
>> +    while ((ret = fdt_get_path(host_fdt, node_offset, node_path, path_len))
>> +            == -FDT_ERR_NOSPACE) {
>> +        path_len += 16;
>> +        node_path = g_realloc(node_path, path_len);
>> +    }
>> +    if (ret < 0) {
>> +        error_setg(&error_fatal,
>> +                   "not able to retrieve node path for clock handle %d",
>> +                   host_phandle);
>> +    }
>> +
>> +    r = qemu_fdt_getprop(host_fdt, node_path, "compatible", &prop_len,
>> +                         &error_fatal);
>> +    if (strcmp(r, "fixed-clock")) {
>> +        error_setg(&error_fatal,
>> +                   "clock handle %d is not a fixed clock", host_phandle);
>> +    }
>> +
>> +    nodename = strrchr(node_path, '/');
>> +    qemu_fdt_add_subnode(guest_fdt, nodename);
>> +
>> +    copy_properties_from_host(clock_copied_properties,
>> +                              ARRAY_SIZE(clock_copied_properties),
>> +                              host_fdt, guest_fdt,
>> +                              node_path, nodename);
>> +
>> +    qemu_fdt_setprop_cell(guest_fdt, nodename, "phandle", guest_phandle);
>> +
>> +    g_free(node_path);
>> +}
>> +
>>  /* Device Specific Code */
> 
> thanks
> -- PMM
> 

  reply	other threads:[~2016-01-25 14:10 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-18 15:16 [PATCH v5 0/8] AMD XGBE KVM platform passthrough Eric Auger
2016-01-18 15:16 ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 1/8] hw/vfio/platform: amd-xgbe device Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 2/8] device_tree: introduce load_device_tree_from_sysfs Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-25 14:13   ` Peter Maydell
2016-01-25 14:13     ` [Qemu-devel] " Peter Maydell
2016-02-01 13:11     ` Eric Auger
2016-02-01 13:11       ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 3/8] device_tree: introduce qemu_fdt_node_path Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-25 14:26   ` Peter Maydell
2016-01-25 14:26     ` [Qemu-devel] " Peter Maydell
2016-01-25 14:41     ` Eric Auger
2016-01-25 14:41       ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 4/8] device_tree: qemu_fdt_getprop converted to use the error API Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 5/8] device_tree: qemu_fdt_getprop_cell " Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 6/8] hw/arm/sysbus-fdt: helpers for clock node generation Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-25 14:05   ` Peter Maydell
2016-01-25 14:05     ` [Qemu-devel] " Peter Maydell
2016-01-25 14:09     ` Eric Auger [this message]
2016-01-25 14:09       ` Eric Auger
2016-01-25 14:34       ` Peter Maydell
2016-01-25 14:34         ` [Qemu-devel] " Peter Maydell
2016-01-25 14:43         ` Peter Maydell
2016-01-25 14:43           ` [Qemu-devel] " Peter Maydell
2016-01-25 14:51           ` Eric Auger
2016-01-25 14:51             ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 7/8] hw/arm/sysbus-fdt: enable amd-xgbe dynamic instantiation Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger
2016-01-25 14:33   ` Peter Maydell
2016-01-25 14:33     ` [Qemu-devel] " Peter Maydell
2016-02-01 13:11     ` Eric Auger
2016-02-01 13:11       ` [Qemu-devel] " Eric Auger
2016-01-18 15:16 ` [PATCH v5 8/8] hw/arm/sysbus-fdt: remove qemu_fdt_setprop returned value check Eric Auger
2016-01-18 15:16   ` [Qemu-devel] " Eric Auger

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=56A62CAD.50405@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.