[PATCH] drm/lease: allow empty leases
Pekka Paalanen
ppaalanen at gmail.com
Thu Sep 2 14:28:10 UTC 2021
On Thu, 02 Sep 2021 09:11:40 +0000
Simon Ser <contact at emersion.fr> 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 at emersion.fr>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Daniel Stone <daniels at collabora.com>
> Cc: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> Cc: Michel Dänzer <michel at daenzer.net>
> Cc: Emil Velikov <emil.l.velikov at gmail.com>
> Cc: Keith Packard <keithp at keithp.com>
> Cc: Boris Brezillon <boris.brezillon at collabora.com>
> Cc: Dave Airlie <airlied at redhat.com>
> ---
> 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 */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210902/8bbf49f4/attachment.sig>
More information about the dri-devel
mailing list