Straightforward conversion.

Signed-off-by: Matthew Wilcox <wi...@infradead.org>
---
 drivers/gpu/drm/i915/i915_gem.c               |  2 +-
 drivers/gpu/drm/i915/i915_gem_context.c       | 12 +++++-------
 drivers/gpu/drm/i915/i915_gem_context.h       |  4 ++--
 drivers/gpu/drm/i915/i915_gem_execbuffer.c    |  6 +++---
 drivers/gpu/drm/i915/selftests/mock_context.c |  2 +-
 5 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 216f52b744a6..0cdccc886587 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3663,7 +3663,7 @@ void i915_gem_close_object(struct drm_gem_object *gem, 
struct drm_file *file)
                if (ctx->file_priv != fpriv)
                        continue;
 
-               vma = radix_tree_delete(&ctx->handles_vma, lut->handle);
+               vma = xa_erase(&ctx->handles_vma, lut->handle);
                GEM_BUG_ON(vma->obj != obj);
 
                /* We allow the process to have multiple handles to the same
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
b/drivers/gpu/drm/i915/i915_gem_context.c
index 371c07087095..9db04b2e65cf 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -96,9 +96,9 @@
 
 static void lut_close(struct i915_gem_context *ctx)
 {
+       XA_STATE(xas, &ctx->handles_vma, 0);
        struct i915_lut_handle *lut, *ln;
-       struct radix_tree_iter iter;
-       void __rcu **slot;
+       struct i915_vma *vma;
 
        list_for_each_entry_safe(lut, ln, &ctx->handles_list, ctx_link) {
                list_del(&lut->obj_link);
@@ -106,10 +106,8 @@ static void lut_close(struct i915_gem_context *ctx)
        }
 
        rcu_read_lock();
-       radix_tree_for_each_slot(slot, &ctx->handles_vma, &iter, 0) {
-               struct i915_vma *vma = rcu_dereference_raw(*slot);
-
-               radix_tree_iter_delete(&ctx->handles_vma, &iter, slot);
+       xas_for_each(&xas, vma, ULONG_MAX) {
+               xas_store(&xas, NULL);
                __i915_gem_object_release_unless_active(vma->obj);
        }
        rcu_read_unlock();
@@ -345,7 +343,7 @@ __create_hw_context(struct drm_i915_private *dev_priv,
                ce->gem_context = ctx;
        }
 
-       INIT_RADIX_TREE(&ctx->handles_vma, GFP_KERNEL);
+       xa_init(&ctx->handles_vma);
        INIT_LIST_HEAD(&ctx->handles_list);
        INIT_LIST_HEAD(&ctx->hw_id_link);
 
diff --git a/drivers/gpu/drm/i915/i915_gem_context.h 
b/drivers/gpu/drm/i915/i915_gem_context.h
index f6d870b1f73e..ec22de370a22 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.h
+++ b/drivers/gpu/drm/i915/i915_gem_context.h
@@ -194,11 +194,11 @@ struct i915_gem_context {
        /** remap_slice: Bitmask of cache lines that need remapping */
        u8 remap_slice;
 
-       /** handles_vma: rbtree to look up our context specific obj/vma for
+       /** handles_vma: lookup our context specific obj/vma for
         * the user handle. (user handles are per fd, but the binding is
         * per vm, which may be one per context or shared with the global GTT)
         */
-       struct radix_tree_root handles_vma;
+       struct xarray handles_vma;
 
        /** handles_list: reverse list of all the rbtree entries in use for
         * this context, which allows us to free all the allocations on
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 485b259127c3..8f136da3f73a 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -756,7 +756,7 @@ static int eb_select_context(struct i915_execbuffer *eb)
 
 static int eb_lookup_vmas(struct i915_execbuffer *eb)
 {
-       struct radix_tree_root *handles_vma = &eb->ctx->handles_vma;
+       struct xarray *handles_vma = &eb->ctx->handles_vma;
        struct drm_i915_gem_object *obj;
        unsigned int i, batch;
        int err;
@@ -777,7 +777,7 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb)
                struct i915_lut_handle *lut;
                struct i915_vma *vma;
 
-               vma = radix_tree_lookup(handles_vma, handle);
+               vma = xa_load(handles_vma, handle);
                if (likely(vma))
                        goto add_vma;
 
@@ -799,7 +799,7 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb)
                        goto err_obj;
                }
 
-               err = radix_tree_insert(handles_vma, handle, vma);
+               err = xa_err(xa_store(handles_vma, handle, vma, GFP_KERNEL));
                if (unlikely(err)) {
                        kmem_cache_free(eb->i915->luts, lut);
                        goto err_obj;
diff --git a/drivers/gpu/drm/i915/selftests/mock_context.c 
b/drivers/gpu/drm/i915/selftests/mock_context.c
index d937bdff26f9..ab42ab625f25 100644
--- a/drivers/gpu/drm/i915/selftests/mock_context.c
+++ b/drivers/gpu/drm/i915/selftests/mock_context.c
@@ -41,7 +41,7 @@ mock_context(struct drm_i915_private *i915,
        INIT_LIST_HEAD(&ctx->link);
        ctx->i915 = i915;
 
-       INIT_RADIX_TREE(&ctx->handles_vma, GFP_KERNEL);
+       xa_init(&ctx->handles_vma);
        INIT_LIST_HEAD(&ctx->handles_list);
        INIT_LIST_HEAD(&ctx->hw_id_link);
 
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to