drm/i915: remove writeback hook
authorMatthew Auld <matthew.auld@intel.com>
Wed, 15 Dec 2021 11:07:45 +0000 (11:07 +0000)
committerMatthew Auld <matthew.auld@intel.com>
Mon, 10 Jan 2022 10:49:48 +0000 (10:49 +0000)
Ditch the writeback hook and drop i915_gem_object_writeback(). We
already support the shrinker_release_pages hook which can just call
shmem_writeback directly.

Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211215110746.865-1-matthew.auld@intel.com
drivers/gpu/drm/i915/gem/i915_gem_object.h
drivers/gpu/drm/i915/gem/i915_gem_object_types.h
drivers/gpu/drm/i915/gem/i915_gem_pages.c
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
drivers/gpu/drm/i915/gem/i915_gem_shrinker.c

index f66d468..bc448f8 100644 (file)
@@ -459,7 +459,6 @@ i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj)
 
 int __i915_gem_object_put_pages(struct drm_i915_gem_object *obj);
 int i915_gem_object_truncate(struct drm_i915_gem_object *obj);
-void i915_gem_object_writeback(struct drm_i915_gem_object *obj);
 
 /**
  * i915_gem_object_pin_map - return a contiguous mapping of the entire object
index f9f7e44..00c844c 100644 (file)
@@ -57,7 +57,6 @@ struct drm_i915_gem_object_ops {
        void (*put_pages)(struct drm_i915_gem_object *obj,
                          struct sg_table *pages);
        int (*truncate)(struct drm_i915_gem_object *obj);
-       void (*writeback)(struct drm_i915_gem_object *obj);
        int (*shrinker_release_pages)(struct drm_i915_gem_object *obj,
                                      bool no_gpu_wait,
                                      bool should_writeback);
index 89b70f5..820eee5 100644 (file)
@@ -168,16 +168,6 @@ int i915_gem_object_truncate(struct drm_i915_gem_object *obj)
        return 0;
 }
 
-/* Try to discard unwanted pages */
-void i915_gem_object_writeback(struct drm_i915_gem_object *obj)
-{
-       assert_object_held_shared(obj);
-       GEM_BUG_ON(i915_gem_object_has_pages(obj));
-
-       if (obj->ops->writeback)
-               obj->ops->writeback(obj);
-}
-
 static void __i915_gem_object_reset_page_iter(struct drm_i915_gem_object *obj)
 {
        struct radix_tree_iter iter;
index cc9fe25..7fdf4fa 100644 (file)
@@ -331,6 +331,23 @@ shmem_writeback(struct drm_i915_gem_object *obj)
        __shmem_writeback(obj->base.size, obj->base.filp->f_mapping);
 }
 
+static int shmem_shrinker_release_pages(struct drm_i915_gem_object *obj,
+                                       bool no_gpu_wait,
+                                       bool writeback)
+{
+       switch (obj->mm.madv) {
+       case I915_MADV_DONTNEED:
+               return i915_gem_object_truncate(obj);
+       case __I915_MADV_PURGED:
+               return 0;
+       }
+
+       if (writeback)
+               shmem_writeback(obj);
+
+       return 0;
+}
+
 void
 __i915_gem_object_release_shmem(struct drm_i915_gem_object *obj,
                                struct sg_table *pages,
@@ -503,7 +520,7 @@ const struct drm_i915_gem_object_ops i915_gem_shmem_ops = {
        .get_pages = shmem_get_pages,
        .put_pages = shmem_put_pages,
        .truncate = shmem_truncate,
-       .writeback = shmem_writeback,
+       .shrinker_release_pages = shmem_shrinker_release_pages,
 
        .pwrite = shmem_pwrite,
        .pread = shmem_pread,
index f9f6883..60b35e4 100644 (file)
@@ -61,18 +61,6 @@ static int try_to_writeback(struct drm_i915_gem_object *obj, unsigned int flags)
                return obj->ops->shrinker_release_pages(obj,
                                                        !(flags & I915_SHRINK_ACTIVE),
                                                        flags & I915_SHRINK_WRITEBACK);
-
-       switch (obj->mm.madv) {
-       case I915_MADV_DONTNEED:
-               i915_gem_object_truncate(obj);
-               return 0;
-       case __I915_MADV_PURGED:
-               return 0;
-       }
-
-       if (flags & I915_SHRINK_WRITEBACK)
-               i915_gem_object_writeback(obj);
-
        return 0;
 }