[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Sharing display between guests



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 ;-).

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...

Ian.


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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.