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 f66d46882ea7892fb48b5b3f317b75035568bf3c..bc448f895ae87fbebcc0a3b8fc5e26471147fe57 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 f9f7e44099fe3c622a7948d9f99dc8309ff54442..00c844caeabd2e6562772e4580f9fef1860b1898 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 89b70f5cde7ae25a2bdbd269e68ee503373a5344..820eee5e954e31b7ad6fe12841d478e1ab8e86ac 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 cc9fe258fba73cf48a9a04a1ead837693f094ede..7fdf4fa10b0e51abbeaffe56bc93ff40f78c08fa 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 f9f68830c084ee8fda23da177e9fb18a404a08b0..60b35e4a1394127ad663ce8cee1b6f0d8c0347cb 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;
 }