From: Alexander Graf <agraf@suse.de>
To: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
patches@linaro.org, qemu-devel@nongnu.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [PATCH 1/2] device_tree: Add qemu_devtree_setprop_sized_cells() utility function
Date: Wed, 26 Jun 2013 14:44:17 +0200 [thread overview]
Message-ID: <51CAE221.2000607@suse.de> (raw)
In-Reply-To: <CAEgOgz7CJ=+Uj3p5ZMxpKcRuJuJk1=tAgPaTE3zj3VfhQazBxQ@mail.gmail.com>
On 06/26/2013 02:38 PM, Peter Crosthwaite wrote:
> Hi,
>
> On Wed, Jun 26, 2013 at 8:50 PM, Peter Maydell<peter.maydell@linaro.org> wrote:
>> On 26 June 2013 11:31, Alexander Graf<agraf@suse.de> wrote:
>>> I think it makes sense to make this API special-purpose for "reg".
>>> We currently have a generic "put any number of 32bit values into the
>>> property" function (qemu_devtree_setprop_cells).
>> Yes, but that doesn't work for things that aren't simple arrays
>> of 32 bit values, so I think that a generic way to deal
>> with those too would be useful. If you wanted to write a
>> "ranges" property you'd need this too, so it doesn't just
>> apply to "reg".
>>
> +1. And wouldn't an implementation of such a reg-specific function
> back onto Peter's new function quite nicely anyway?
>
>> I think we could avoid the "varargs doesn't promote" problem
>> by using a varargs-macro wrapper:
>>
>> #define qemu_devtree_setprop_sized_cells(fdt, node, prop, ...) \
>> do { \
>> uint64_t args[] = { __VA_ARGS__ }; \
>> do_qemu_devtree_setprop_sized_cells(fdt, node, prop, \
>> args, sizeof(args));
>> } while (0)
>>
> Are statement expressions sanctioned? Or do we need to give up the
> nice caller accessible return codes?
>
> And can we factor out common functionality (mainly the error checking)
> with existing set_prop_cells to make the interfaces consistent? (we
> need to get rid of those aborts sooner or later)
>
>> which will promote everything (including the size arguments,
>> harmlessly) to uint64_t, and avoids having a varargs function.
>>
>>> Can't we also just add a qemu_devtree_setprop_reg() that walks
>>> the tree downwards in search for #address-cells and #size-cells
>>> and assembles the correct reg property from a list of 64bit
>>> arguments?
> I have a patch in my tree that generalises qemu_devtree_getprop* to
> allow you walk parents for properties (as per the #foo-cells
> semantic). I use it for interrupt cells however, which kinda suggests
> that this wish for parent traversal is more generic than just
> populating reg. I think that Peters patch, along with a parent search
> friendly property search will be enough to be able to do whatever you
> want in only a handful of lines.
>
>> Do we have an actual use for this? It seems pretty complicated.
>> I would expect that in practice there are two major use cases:
>> (a) create your own fdt from scratch (in which case you can
>> just make everything 64 bits and in any case will know
>> when creating nodes what the #address-cells etc are)
>> (b) modify an existing fdt, in which case you definitely don't
>> want to go poking around too deeply in the tree; anything
>> more than just "put an extra node in the root" is starting
>> to get pretty chancy.
>>
> Looking to the future, what about -device adding a periph then having
> qemu add it to the dtb before boot?
I've had a lengthy discussion about that with Anthony a while ago. His
take was that this is perfectly reasonable, as long as the device tree
generation code stays within the machine model. The machine would just
traverse the QOM hierachy and generate device tree nodes for everything
it knows.
Alex
next prev parent reply other threads:[~2013-06-26 12:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-24 10:22 [Qemu-devel] [PATCH 0/2] device_tree: add qemu_devtree_setprop_sized_cells() Peter Maydell
2013-06-24 10:22 ` [Qemu-devel] [PATCH 1/2] device_tree: Add qemu_devtree_setprop_sized_cells() utility function Peter Maydell
2013-06-24 10:56 ` Alexander Graf
2013-06-24 11:02 ` Peter Maydell
2013-06-25 23:38 ` David Gibson
2013-06-26 8:49 ` Peter Maydell
2013-06-26 10:31 ` Alexander Graf
2013-06-26 10:50 ` Peter Maydell
2013-06-26 11:42 ` Alexander Graf
2013-06-26 12:38 ` Peter Crosthwaite
2013-06-26 12:44 ` Alexander Graf [this message]
2013-06-27 0:17 ` David Gibson
2013-06-27 0:27 ` Anthony Liguori
2013-06-26 13:13 ` Peter Maydell
2013-06-26 13:31 ` Peter Maydell
2013-06-27 0:15 ` David Gibson
2013-06-27 0:10 ` David Gibson
2013-06-24 10:22 ` [Qemu-devel] [PATCH 2/2] arm/boot: Use qemu_devtree_setprop_sized_cells() Peter Maydell
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=51CAE221.2000607@suse.de \
--to=agraf@suse.de \
--cc=david@gibson.dropbear.id.au \
--cc=patches@linaro.org \
--cc=peter.crosthwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).