All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: Ian Campbell <ian.campbell@citrix.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	xen-devel@lists.xen.org
Subject: Re: Sharing display between guests
Date: Thu, 9 Jul 2015 11:24:59 +0200	[thread overview]
Message-ID: <20150709092459.GT28632@lukather> (raw)
In-Reply-To: <1436192610.25646.98.camel@citrix.com>


[-- Attachment #1.1: Type: text/plain, Size: 6206 bytes --]

On Mon, Jul 06, 2015 at 03:23:30PM +0100, Ian Campbell wrote:
> On Mon, 2015-07-06 at 16:10 +0200, Maxime Ripard wrote:
> > On Mon, Jul 06, 2015 at 01:41:34PM +0100, Ian Campbell wrote:
> > > On Mon, 2015-07-06 at 14:26 +0200, Maxime Ripard wrote:
> > > > Hi Ian,
> > > > 
> > > > On Mon, Jul 06, 2015 at 12:53:49PM +0100, Ian Campbell wrote:
> > > > > (switching to my work address) 
> > > > > 
> > > > > On Thu, 2015-07-02 at 13:13 +0200, Maxime Ripard wrote:
> > > > > > Hi,
> > > > > > 
> > > > > > I've started using Xen on an Allwinner A33, which works great as an
> > > > > > headless device using the latest PSCI patches in U-Boot.
> > > > > > 
> > > > > > However, we would like to do something more with it, and we would need
> > > > > > to have two VMs accessing the display at once, each one drawing in its
> > > > > > own part of the framebuffer.
> > > > > > 
> > > > > > Something that would look like this:
> > > > > > 
> > > > > >    Framebuffer
> > > > > > +---------------+
> > > > > > |               |
> > > > > > |    Guest 1    |
> > > > > > |               |
> > > > > > +---------------+
> > > > > > |               |
> > > > > > |               |
> > > > > > |               |
> > > > > > |    Guest 2    |
> > > > > > |               |
> > > > > > |               |
> > > > > > |               |
> > > > > > +---------------+
> > > > > > 
> > > > > > Where thing start to get interesting is that the second guest would be
> > > > > > running Android, and as such would need OpenGL support, and access to
> > > > > > the GPU, and that ideally the first guest would need to be able to
> > > > > > draw over all the screen to create some kind of a drop-down menu.
> > > > > > 
> > > > > > Our first thought was to use two different planes of a DRM/KMS driver,
> > > > > > one for each VM, with the second guest having the primary plane, and
> > > > > > the first guest having an overlay, and we would set it up in dom0.
> > > > > > 
> > > > > > That would mean that we would have a static "composition", that would
> > > > > > be setup once and we could forget about it during the life of the
> > > > > > system.
> > > > > > 
> > > > > > This way, we would also have a fixed size framebuffer assigned to
> > > > > > Android, which is much easier to support, and since we have total
> > > > > > control over the application in the first guest, we would be able to
> > > > > > control how much "transparency" we want to leave (== how much of
> > > > > > Android do we want to be displayed), and we would be able to create
> > > > > > our drop-down menu.
> > > > > > 
> > > > > > Now the hard part: is such a setup possible at all with Xen? Can we
> > > > > > export a single plane to a guest and let it be the only user of it? If
> > > > > > that is possible, how would that interact with the 3D acceleration?
> > > > > 
> > > > > As it stands today Xen supports exposing a 2D only PV graphics device
> > > > > (called "pvfb", essentially a flat/linear framebuffer) to guests, I
> > > > > think this has limited 2D acceleration support let alone 3D support. You
> > > > > can also (at least in principal, i.e. if the hardware isn't too strange)
> > > > > pass a GPU through to exactly one guest (often it's just dom0).
> > > > > 
> > > > > Some people have also (I think) managed to use pvfb to expose a real
> > > > > linear fb to a guest, e.g. a "surface" in the real GPU which is setup by
> > > > > some more privileged domain.
> > > > > 
> > > > > But, it sounds like you really want a way to expose the GPU
> > > > > functionality (i.e. 3D support) to at least one if not both guests.
> > > > > 
> > > > > Are you expecting Guest 1 and Guest 2 to be isolated from each other in
> > > > > a secure way? Or is one considered to be more privileged than the other?
> > > > 
> > > > I'd like to have both guests as isolated from each other as possible.
> > > > 
> > > > But there's two sub-issues here actually:
> > > > 
> > > > 1) Being able to have two VMs showing stuff on the same framebuffer at
> > > > the same time, without being aware of the other. If we could make pvfb
> > > > run on a DRM/KMS plane, that would be perfect for us. Another solution
> > > > would be to split the framebuffer in half and have pvfb running on
> > > > those two halves.
> > > 
> > > Right, this portion is a bit more tractable in the short term I think.
> > > 
> > > > 2) Then, one of the guests would be Android, which really requires
> > > > OpenGL, but the second guests would ideally use it as well, but if it
> > > > complicates things (and it really seems like it does), we can drop
> > > > that from the requirement, which would make us fall in the "exactly
> > > > one guest" case you were talking about (except that it wouldn't dom0,
> > > > but one of the domU's that would access it).
> > > 
> > > IOW give the Android full access to the h/w and have it provide a 2d
> > > pvfb to the other guest, yes I think that could be made to work.
> > 
> > Not really. I was thinking having the display controller in dom0,
> > exposing two pvfb, one for Android, one for the other VM, and the GPU
> > only being passed only to the Android VM.
> > 
> > I don't know whether it makes sense...
> 
> I'm too used to thinking of a graphics device as a single monolithic
> whole, rather than as separate/independent display controller and GPU
> etc and am not quite comfortable yet with this idea that they might be
> independent things which you can mix and match ;-).

Note that I'm not saying it would work though. It's just a thought
from someone not-so-experienced with GPUs and virtualization :)

> To me it seems like the hard bit will likely be the guest side s/w and
> whether you can convince it to be happy with a GPU without the display
> controller it normally expects but a PVFB instead. But I think that's
> pretty much smack bang in the middle of your bailiwick...

That's what I thought, and the reason of me starting this whole
discussion..

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

      reply	other threads:[~2015-07-09  9:24 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-02 11:13 Sharing display between guests Maxime Ripard
2015-07-02 12:18 ` Dario Faggioli
2015-07-06 11:39   ` Maxime Ripard
2015-07-06 15:14     ` Dario Faggioli
2015-07-09  9:31       ` Maxime Ripard
2015-07-06 11:53 ` Ian Campbell
2015-07-06 12:26   ` Maxime Ripard
2015-07-06 12:41     ` Ian Campbell
2015-07-06 14:10       ` Maxime Ripard
2015-07-06 14:23         ` Ian Campbell
2015-07-09  9:24           ` Maxime Ripard [this message]

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=20150709092459.GT28632@lukather \
    --to=maxime.ripard@free-electrons.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=ian.campbell@citrix.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=xen-devel@lists.xen.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.