From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Florian Fainelli
<f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Cyril Novikov <cnovikov-wte42BQEg7M@public.gmane.org>,
devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Pantelis Antoniou
<pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>,
Tom Rini <trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
Subject: Re: Virtualization difficulty -- phandles
Date: Tue, 25 Jul 2017 17:50:34 +1000 [thread overview]
Message-ID: <20170725075034.GD8978@umbus.fritz.box> (raw)
In-Reply-To: <597629DC.5060800-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 4532 bytes --]
On Mon, Jul 24, 2017 at 10:09:48AM -0700, Frank Rowand wrote:
> Hi David,
>
> (Adding Pantelis and Tom, since I'm going somewhat off-topic from
> the original thread, and they are impacted by what I am asking.)
>
> On 07/15/17 22:35, David Gibson wrote:
> > On Thu, Jul 13, 2017 at 09:47:01AM -0700, Florian Fainelli wrote:
> >> On 07/12/2017 09:23 PM, Cyril Novikov wrote:
> >>> On 7/12/2017 10:10 AM, Florian Fainelli wrote:
> >>>> On 07/11/2017 11:15 PM, Cyril Novikov wrote:
> >>>>> Hi, all!
> >>>>>
>
> < snip >
>
> > The
> > phandle fixup information goes into the special __local_fixups__ and
> > __fixups__ nodes (which have gratuitiously different format, but
> > that's a rant for elsewhere).
>
> < snip >
>
> And in another email, David describes the __local_fixups__ format
> nicely, so I'll just copy that here instead of re-inventing it:
>
>
> > Well, I don't want to invent a new encoding if we can possibly avoid
> > it. The current encoding used for overlay generation looks like this
> >
> > / {
> > target: node@0 {
> > };
> > node@1 {
> > ref = <&target>;
> > };
> > __local_fixups__ = {
> > node@1 {
> > ref = <0>;
> > };
> > };
> > };
> >
> > Basically, __local_fixups__ has a subtree which paralells the main
> > tree. Each property found under __local_fixups__ is a list of offsets
> > at which phandle references appear in the corresponding property in
> > the main tree.
>
> I share your desire to rant about the different formats between
> __local_fixups__ and __fixups__. But I have not come up with an
> alternate format for __local_fixups__ that makes me happy. The
> best format that I have come up with so far would be:
Well to fix it minimally, I'd go the other way - make __fixups__ look
like __local_fixups__ but augmented with labels. Strings that need
parsing aren't a normal thing in the DT.
> / {
> target: node@0 {
> };
> node@1 {
> ref = <&target>;
> ref2 = <&target 42 &target_2>;
> };
> target_2: node@2 {
> };
> __local_fixups__ = {
> x1 = <"node@1/ref" 0>;
> x2 = <"node@1/ref2" 0 8>;
> };
> };
> };
>
> x1 and x2 are abitrary property names.
> The format of each __local_fixups__ property is
> - path of property referencing a phandle
> - list of offsets of the phandle in the property
>
> As another alternative, Grant was thinking about adding
> a new block to the FDT format to contain the phandle
> information. That would remove the need to come up
> with a convoluted dts syntax, but adds in the problem
> of bootloaders corrupting the new block if they were
> not aware of it. He had thoughts about versioning
> and checksums to detect the corruption it if did
> occur.
>
> If we were starting from scratch, do you have any other
> approach that might be fruitful? It seems like maybe
> I am missing something that requires thinking outside
> the box.
I thought about this the other day a bit. If going from scratch, I
think the way to do it would be to add a new FDT_REF tag to the
structure block stream. After the FDT_PROP tag and its contents,
you'd have an arbitrary number of FDT_REF tags, each giving an offset
in the preceding property and a label to fix it up to match. Not
sure if you'd want separate FDT_REF and FDT_LOCAL_REF or just use an
empty label to describe a local ref.
This would also allow for extension to say FDT_PATH_REF to insert
paths rather than phandles (i.e. a runtime equivalent of prop = &foo;
rather than prop = < &foo >;).
For encoding the fragments of an overlay, I'd suggest giving them
simply as separate subtrees in the structure block, all before the
FDT_END tag. At the moment there has to be only a single subtree
before the FDT_END, and the top-level FDT_BEGIN is expected to have an
empty name. We can extend that to overlays by allowing multiple
subtrees, and making the top-level "name" the target label instead.
Incidentally, I'd take "label" in all the above to be represented as
an old-style OF path. That is, either an absolute path /foo/bar/baz,
or a path relative to an alias, alias/foo/bar/baz. That means we can
just use the existing defined /aliases, rather than re-inventing it as
__symbols__.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2017-07-25 7:50 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-12 6:15 Virtualization difficulty -- phandles Cyril Novikov
2017-07-12 17:10 ` Florian Fainelli
[not found] ` <180baf3e-9e7b-c791-3be2-81d807b14759-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-13 4:23 ` Cyril Novikov
2017-07-13 16:47 ` Florian Fainelli
[not found] ` <4594fc97-9b9f-267e-ee8e-8cbe89341fe7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-16 5:35 ` David Gibson
[not found] ` <20170716053548.GL17539-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-18 1:37 ` Cyril Novikov
2017-07-19 3:30 ` David Gibson
2017-07-24 17:09 ` Frank Rowand
[not found] ` <597629DC.5060800-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-25 7:50 ` David Gibson [this message]
[not found] ` <20170725075034.GD8978-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-27 20:58 ` Frank Rowand
[not found] ` <597A53E1.4010002-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-27 21:59 ` Pantelis Antoniou
2017-07-28 4:25 ` David Gibson
2017-07-14 10:58 ` Mark Rutland
2017-07-18 1:47 ` Cyril Novikov
2017-07-19 3:40 ` David Gibson
[not found] ` <20170719034029.GT3140-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-07-22 4:24 ` Cyril Novikov
2017-07-24 6:14 ` David Gibson
2017-07-24 16:27 ` Frank Rowand
[not found] ` <59762000.7000302-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-24 23:00 ` Cyril Novikov
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=20170725075034.GD8978@umbus.fritz.box \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=cnovikov-wte42BQEg7M@public.gmane.org \
--cc=devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org \
--cc=trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.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 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.