drm/i915: Use i915_gem_context_get_eb_vm in ctx_getparam
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 2 Sep 2021 14:20:52 +0000 (16:20 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 6 Sep 2021 08:52:03 +0000 (10:52 +0200)
Consolidates the "which is the vm my execbuf runs in" code a bit. We
do some get/put which isn't really required, but all the other users
want the refcounting, and I figured doing a function just for this
getparam to avoid 2 atomis is a bit much.

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jon Bloomfield <jon.bloomfield@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20210902142057.929669-6-daniel.vetter@ffwll.ch
drivers/gpu/drm/i915/gem/i915_gem_context.c

index 12e2de1db1a2f784252ebe0be4706af00578156d..7a566fb7cca4db8932a26860063135337ded469e 100644 (file)
@@ -2108,6 +2108,7 @@ int i915_gem_context_getparam_ioctl(struct drm_device *dev, void *data,
        struct drm_i915_file_private *file_priv = file->driver_priv;
        struct drm_i915_gem_context_param *args = data;
        struct i915_gem_context *ctx;
+       struct i915_address_space *vm;
        int ret = 0;
 
        ctx = i915_gem_context_lookup(file_priv, args->ctx_id);
@@ -2117,12 +2118,10 @@ int i915_gem_context_getparam_ioctl(struct drm_device *dev, void *data,
        switch (args->param) {
        case I915_CONTEXT_PARAM_GTT_SIZE:
                args->size = 0;
-               rcu_read_lock();
-               if (rcu_access_pointer(ctx->vm))
-                       args->value = rcu_dereference(ctx->vm)->total;
-               else
-                       args->value = to_i915(dev)->ggtt.vm.total;
-               rcu_read_unlock();
+               vm = i915_gem_context_get_eb_vm(ctx);
+               args->value = vm->total;
+               i915_vm_put(vm);
+
                break;
 
        case I915_CONTEXT_PARAM_NO_ERROR_CAPTURE: