Re: [PATCH v17 5/6] vfio: ABI for mdev display dma-buf operation

From: Gerd Hoffmann
Date: Fri Nov 10 2017 - 02:03:14 EST


On Thu, Nov 09, 2017 at 01:54:57PM -0700, Alex Williamson wrote:
> On Thu, 9 Nov 2017 19:35:14 +0100
> Gerd Hoffmann <kraxel@xxxxxxxxxx> wrote:
>
> > Hi,
> >
> > > struct vfio_device_gfx_plane_info lacks the head field we've been
> > > discussing. Thanks,
> >
> > Adding multihead support turned out to not be that easy. There are
> > corner cases like a single framebuffer spawning both heads. Also it
> > would be useful to somehow hint to the guest which heads it should use.
> >
> > In short: Proper multihead support is more complex than just adding a
> > head field for later use. So in a short private discussion with Tina we
> > came to the conclusion that it will be better add multihead support to
> > the API when the first driver wants use it, so we can actually test the
> > interface and make sure we didn't miss anything. Adding a incomplete
> > multihead API now doesn't help anybody.
>
> Do you think we can enable multi-head and preserve backwards
> compatibility within this API proposed here?

Yes, I think we can. Adding new fields is possible thanks to the argsz
field at the start of the struct, so we easily add the new fields (head,
framebuffer rectangle, whatever else is needed). If the new fields are
not present the driver can simply assume head=0.

Does the driver set argsz too? If so userspace can detect whenever the
driver supports the multihead API extension (before going to probe for
head=1) that way. If not we probably need an additional probe flag for
that. But in any case I'm confident this is solvable.

Passing hints about the display configuration to the guest needs a new
ioctl, so we don't have compatibility issues there.

cheers,
Gerd