Re: [RFC PATCH 6/6] drm/i915/gvt: support QEMU getting the dmabuf

From: Alex Williamson
Date: Thu May 11 2017 - 11:45:34 EST


On Thu, 11 May 2017 15:27:53 +0200
Gerd Hoffmann <kraxel@xxxxxxxxxx> wrote:

> Hi,
>
> > While read the framebuffer region we have to tell the vendor driver which framebuffer we want to read? There are two framebuffers now in KVMGT that is primary and cursor.
> > There are two methods to implement this:
> > 1) write the plane id first and then read the framebuffer.
> > 2) create 2 vfio regions one for primary and one for cursor.
>
> (3) Place information for both planes into one vfio region.
> Which allows to fetch both with a single read() syscall.
>
> The question is how you'll get the file descriptor then. If the ioctl
> returns the dma-buf fd only you have a racy interface: Things can
> change between read(vfio-region) and ioctl(need-dmabuf-fd).
>
> ioctl(need-dma-buf) could return both dmabuf fd and plane info to fix
> the race, but then it is easier to go with ioctl only interface (simliar
> to the orginal one from dec last year) I think.

If the dmabuf fd is provided by a separate mdev vendor driver specific
ioctl, I don't see how vfio regions should be involved. Selecting
which framebuffer should be an ioctl parameter. What sort of
information needs to be conveyed about each plane? Is it static
information or something that needs to be read repeatedly? Do we need
it before we get the dmabuf fd or can it be an ioctl on the dmabuf fd?
Thanks,

Alex