Re: [PATCH] drm/lease: allow empty leases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 02 Sep 2021 09:11:40 +0000
Simon Ser <contact@xxxxxxxxxxx> wrote:

> This can be used to create a separate DRM file description, thus
> creating a new GEM handle namespace. See [1].
> 
> Example usage in wlroots is available at [2].
> 
> [1]: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/110
> [2]: https://github.com/swaywm/wlroots/pull/3158
> 

Hi Simon,

I have a feeling that this is a good idea, but could you explain in
this commit message some real use cases where one needs a new GEM
handle namespace? Not just "when you share a DRM fd between processes"
but *why* you shared a DRM device fd between processes.

If I have trouble remembering or figuring that out from those links,
then I'm sure others have too.


Thanks,
pq

> Signed-off-by: Simon Ser <contact@xxxxxxxxxxx>
> Cc: Daniel Vetter <daniel.vetter@xxxxxxxx>
> Cc: Daniel Stone <daniels@xxxxxxxxxxxxx>
> Cc: Pekka Paalanen <pekka.paalanen@xxxxxxxxxxxxxxx>
> Cc: Michel Dänzer <michel@xxxxxxxxxxx>
> Cc: Emil Velikov <emil.l.velikov@xxxxxxxxx>
> Cc: Keith Packard <keithp@xxxxxxxxxx>
> Cc: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
> Cc: Dave Airlie <airlied@xxxxxxxxxx>
> ---
>  drivers/gpu/drm/drm_lease.c | 39 +++++++++++++++++--------------------
>  1 file changed, 18 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c
> index dee4f24a1808..d72c2fac0ff1 100644
> --- a/drivers/gpu/drm/drm_lease.c
> +++ b/drivers/gpu/drm/drm_lease.c
> @@ -489,12 +489,6 @@ int drm_mode_create_lease_ioctl(struct drm_device *dev,
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
>  		return -EOPNOTSUPP;
>  
> -	/* need some objects */
> -	if (cl->object_count == 0) {
> -		DRM_DEBUG_LEASE("no objects in lease\n");
> -		return -EINVAL;
> -	}
> -
>  	if (cl->flags && (cl->flags & ~(O_CLOEXEC | O_NONBLOCK))) {
>  		DRM_DEBUG_LEASE("invalid flags\n");
>  		return -EINVAL;
> @@ -510,23 +504,26 @@ int drm_mode_create_lease_ioctl(struct drm_device *dev,
>  
>  	object_count = cl->object_count;
>  
> -	object_ids = memdup_user(u64_to_user_ptr(cl->object_ids),
> -			array_size(object_count, sizeof(__u32)));
> -	if (IS_ERR(object_ids)) {
> -		ret = PTR_ERR(object_ids);
> -		goto out_lessor;
> -	}
> -
> +	/* Handle leased objects, if any */
>  	idr_init(&leases);
> +	if (object_count != 0) {
> +		object_ids = memdup_user(u64_to_user_ptr(cl->object_ids),
> +					 array_size(object_count, sizeof(__u32)));
> +		if (IS_ERR(object_ids)) {
> +			ret = PTR_ERR(object_ids);
> +			idr_destroy(&leases);
> +			goto out_lessor;
> +		}
>  
> -	/* fill and validate the object idr */
> -	ret = fill_object_idr(dev, lessor_priv, &leases,
> -			      object_count, object_ids);
> -	kfree(object_ids);
> -	if (ret) {
> -		DRM_DEBUG_LEASE("lease object lookup failed: %i\n", ret);
> -		idr_destroy(&leases);
> -		goto out_lessor;
> +		/* fill and validate the object idr */
> +		ret = fill_object_idr(dev, lessor_priv, &leases,
> +				      object_count, object_ids);
> +		kfree(object_ids);
> +		if (ret) {
> +			DRM_DEBUG_LEASE("lease object lookup failed: %i\n", ret);
> +			idr_destroy(&leases);
> +			goto out_lessor;
> +		}
>  	}
>  
>  	/* Allocate a file descriptor for the lease */

Attachment: pgpXVi7O4Rw54.pgp
Description: OpenPGP digital signature


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux