[PATCH v13 5/7] vfio: ABI for mdev display dma-buf operation

Kirti Wankhede kwankhede at nvidia.com
Wed Aug 2 15:56:06 UTC 2017



On 8/2/2017 2:48 AM, Alex Williamson wrote:
> On Tue, 25 Jul 2017 17:28:18 +0800
> Tina Zhang <tina.zhang at intel.com> 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>
>> ---
>>  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
> 


More information about the dri-devel mailing list