devicetree-spec.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Cyril Novikov <cnovikov-wte42BQEg7M@public.gmane.org>
To: devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: Virtualization difficulty -- phandles
Date: Mon, 17 Jul 2017 18:37:47 -0700	[thread overview]
Message-ID: <okjp46$s1v$1@blaine.gmane.org> (raw)
In-Reply-To: <20170716053548.GL17539-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>

On 7/15/2017 10:35 PM, David Gibson wrote:

> But.. I'm very uneasy about the idea.
> 
> The first thing, is that this relies on the dts file containing the
> &whatever phandle reference syntax wherever there should be a phandle
> reference.  That's normal, but nothing stops a user from simply
> putting an actual number there, manually assigning that number to
> another node's phandle and generating a valid dtb that way.
> 
> More importantly, it won't detect phandles if the tree comes from a
> source other than a dts - for example if you flatten /proc/device-tree
> with -I fs, or have code which flattens a tree presented by real Open
> Firmware it won't have that phandle metadata, just integer values.

Yeah, so the metadata does not contain full information. That's fine 
because it's still better than nothing.

> Now those might not be something that happens in your use case, but
> I'm pretty concerned that if I added this functionality, people are
> going to forget that properties are all, fundamentally, bytestrings
> and get surprised when tools don't magically know where the phandles
> are in some cases.
> 
> That said, I'm open to persuasion if a good enough case is made for
> this functionality.

So, what we need fundamentally is a way to detect dependencies in the 
devicetree. Mark is arguing that we cannot *automate* the assignment of 
dependent devices to the same VM. However, just detecting that there is 
a missing dependency goes a long way. What we have now is guest drivers 
failing in various manners, but what they cannot do is point the user to 
the specific device that they need, because they don't have the host FDT 
in their VM.

For example, a driver may print something like

[    2.035071] xuartps ff000000.serial: pclk clock not found.

To resolve this, the user needs to be proficient with the device tree. 
Of course, "pclk" is not a node name in the host FDT. However, if 
configuration software could detect this at the time the set of the VM's 
assigned physical devices was created, it could give the user the name 
of the device that *probably* also needs to be assigned to the same VM. 
The user wouldn't need to learn anything about devicetree, they would 
just need to do a few mouse clicks to assign the dependent device. And 
now it's the software's concern if that assignment is not trivial, as 
Mark warns us.

To summarize, full automation is unfeasible and it is understood, but 
just the dependency information is very helpful too.

> But then, as Mark Rutland says in his other replies, locating phandles
> is far from the only problem in trying to passthrough random DT nodes
> to a guest.

--
Cyril

  parent reply	other threads:[~2017-07-18  1:37 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 [this message]
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
     [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='okjp46$s1v$1@blaine.gmane.org' \
    --to=cnovikov-wte42bqeg7m@public.gmane.org \
    --cc=devicetree-spec-u79uwXL29TY76Z2rM5mHXA@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 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).