> -----Original Message----- > From: Zhang, Tina > Sent: Tuesday, July 4, 2017 9:04 AM > To: alex.williamson@xxxxxxxxxx; kraxel@xxxxxxxxxx; chris@xxxxxxxxxxxxxxxxxx; > zhenyuw@xxxxxxxxxxxxxxx; Lv, Zhiyuan <zhiyuan.lv@xxxxxxxxx>; Wang, Zhi A > <zhi.a.wang@xxxxxxxxx>; Tian, Kevin <kevin.tian@xxxxxxxxx>; daniel@xxxxxxxx; > kwankhede@xxxxxxxxxx > Cc: Zhang, Tina <tina.zhang@xxxxxxxxx>; intel-gfx@xxxxxxxxxxxxxxxxxxxxx; intel- > gvt-dev@xxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Subject: [PATCH v1] vfio: ABI for mdev display dma-buf operation > > 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 need to creat 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@xxxxxxxxx> > > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h index > ae46105..c92bc69 100644 > --- a/include/uapi/linux/vfio.h > +++ b/include/uapi/linux/vfio.h > @@ -502,6 +502,36 @@ 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) > + * Return: 0 on success, -errno on failure. > + */ > + > +struct vfio_device_gfx_plane_info { > + __u64 start; > + __u64 drm_format_mod; > + __u32 drm_format; > + __u32 width; > + __u32 height; > + __u32 stride; > + __u32 size; > + __u32 x_pos; > + __u32 y_pos; > +}; In this version, we don't rely on user mode to compare and find out whether a new dmabuf needs to be created. So, some of fields can be removed if user mode thinks they are not interesting any more. > + > +struct vfio_device_query_gfx_plane { > + __u32 argsz; > + __u32 flags; > + struct vfio_device_gfx_plane_info plane_info; > + __u32 plane_type; > + __s32 fd; /* dma-buf fd */ > + __u32 plane_id; > +}; Still cannot figure out what the plane_id stands for in dmabuf case. As it might be needed by region usage, just add it here. > + > +#define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14) > + > + > /* -------- API for Type1 VFIO IOMMU -------- */ > > /** > -- > 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx