[PATCH v11 1/1] vfio: ABI for mdev display dma-buf operation

Zhenyu Wang zhenyuw at linux.intel.com
Wed Jul 12 09:55:09 UTC 2017


On 2017.07.12 09:54:13 +0200, Daniel Vetter wrote:
> On Wed, Jul 12, 2017 at 02:10:51PM +0800, Tina Zhang wrote:
> > Add VFIO_DEVICE_QUERY_GFX_PLANE ioctl command to let user mode query and
> > get the plan and its related information.
> > 
> > The dma-buf's life cycle is handled by user mode and tracked by kernel.
> > The returned fd in struct vfio_device_query_gfx_plane can be a new
> > fd or an old fd of a re-exported dma-buf. Host User mode can check the
> > value of fd and to see if it needs to create new resource according to
> > the new fd or just use the existed resource related to the old fd.
> > 
> > Signed-off-by: Tina Zhang <tina.zhang at intel.com>
> > 
> > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
> > index ae46105..c176cc8 100644
> > --- a/include/uapi/linux/vfio.h
> > +++ b/include/uapi/linux/vfio.h
> > @@ -502,6 +502,32 @@ struct vfio_pci_hot_reset {
> >  
> >  #define VFIO_DEVICE_PCI_HOT_RESET	_IO(VFIO_TYPE, VFIO_BASE + 13)
> >  
> > +/**
> > + * VFIO_DEVICE_QUERY_GFX_PLANE - _IOW(VFIO_TYPE, VFIO_BASE + 14, struct vfio_device_query_gfx_plane)
> > + *
> > + * Set the drm_plane_type and retrieve information about the gfx plane.
> > + *
> > + * Return: 0 on success, -errno on failure.
> > + */
> > +struct vfio_device_gfx_plane_info {
> > +	__u32 argsz;
> 
> What's argsz for?

It's vfio ioctl idiom for parameter sanity check.

> 
> > +	__u32 flags;
> > +	/* in */
> > +	__u32 drm_plane_type;	/* type of plane: DRM_PLANE_TYPE_* */
> 
> Do we plan to support multiple outputs on a vfio? In that case just the
> plane-type doesn't identify the right plane. Also, if you want to support
> overlay planes, then usually hw has a lot of those.

Currently no plan to support multiple outputs on one mdev. And no overlay
plane support in gvt now, even we'd support that maybe also one plane only.

> 
> > +	/* out */
> > +	__u32 drm_format;	/* drm format of plane */
> > +	__u32 width;	/* width of plane */
> > +	__u32 height;	/* height of plane */
> > +	__u32 stride;	/* stride of plane */
> > +	__u32 size;	/* size of plane in bytes, align on page*/
> > +	__u32 x_pos;	/* horizontal position of cursor plane, upper left corner in pixels */
> > +	__u32 y_pos;	/* vertical position of cursor plane, upper left corner in lines*/
> 
> Why is x/y pos only for cursors? I'm not clear at all what this would be
> for ... Is this an offset within the plane where the cursor starts?

yes, it's cursor start in primary plane.

> 
> > +	__s32 fd;	/* dma-buf fd */
> > +};
> > +
> > +#define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14)
> > +
> > +
> >  /* -------- API for Type1 VFIO IOMMU -------- */
> >  
> >  /**
> > -- 
> > 2.7.4
> > 
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20170712/94b62503/attachment.sig>


More information about the intel-gvt-dev mailing list