On 8/2/2017 2:48 AM, Alex Williamson wrote: > On Tue, 25 Jul 2017 17:28:18 +0800 > Tina Zhang <tina.zhang@xxxxxxxxx> 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@xxxxxxxxx> >> --- >> include/uapi/linux/vfio.h | 28 ++++++++++++++++++++++++++++ >> 1 file changed, 28 insertions(+) >> >> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h >> index ae46105..827a230 100644 >> --- a/include/uapi/linux/vfio.h >> +++ b/include/uapi/linux/vfio.h >> @@ -502,6 +502,34 @@ 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; >> + __u32 flags; >> + /* in */ >> + __u32 drm_plane_type; /* type of plane: DRM_PLANE_TYPE_* */ >> + /* out */ >> + __u32 drm_format; /* drm format of plane */ >> + __u64 drm_format_mod; /* tiled mode */ >> + __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*/ >> + __u32 region_index; >> + __s32 fd; /* dma-buf fd */ > > How do I know which of these is valid, region_index or fd? Can I ask > for one vs the other? What are the errno values to differentiate > unsupported vs not initialized? Is there a "probe" flag that I can use > to determine what the device supports without allocating those > resources yet? > > Kirti, does this otherwise meet your needs? > I wanted to test my change with this interface, but I couldn't, was busy with other stuff. This structure looks good to me for region type support. > What are the errno values to differentiate > unsupported vs not initialized? In previous version discussion, we decided that vendor driver should set all members to 0 in such cases. Mainly, if size is 0 then there is nothing to copy. Thanks, Kirti > Thanks, > Alex > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel