Commit 93544177 authored by Matthew Auld's avatar Matthew Auld

drm/i915: remove writeback hook

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: default avatarTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211215110746.865-1-matthew.auld@intel.com
parent 57ded5fc
...@@ -459,7 +459,6 @@ i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj) ...@@ -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_put_pages(struct drm_i915_gem_object *obj);
int i915_gem_object_truncate(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 * i915_gem_object_pin_map - return a contiguous mapping of the entire object
......
...@@ -57,7 +57,6 @@ struct drm_i915_gem_object_ops { ...@@ -57,7 +57,6 @@ struct drm_i915_gem_object_ops {
void (*put_pages)(struct drm_i915_gem_object *obj, void (*put_pages)(struct drm_i915_gem_object *obj,
struct sg_table *pages); struct sg_table *pages);
int (*truncate)(struct drm_i915_gem_object *obj); 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, int (*shrinker_release_pages)(struct drm_i915_gem_object *obj,
bool no_gpu_wait, bool no_gpu_wait,
bool should_writeback); bool should_writeback);
......
...@@ -168,16 +168,6 @@ int i915_gem_object_truncate(struct drm_i915_gem_object *obj) ...@@ -168,16 +168,6 @@ int i915_gem_object_truncate(struct drm_i915_gem_object *obj)
return 0; 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) static void __i915_gem_object_reset_page_iter(struct drm_i915_gem_object *obj)
{ {
struct radix_tree_iter iter; struct radix_tree_iter iter;
......
...@@ -331,6 +331,23 @@ shmem_writeback(struct drm_i915_gem_object *obj) ...@@ -331,6 +331,23 @@ shmem_writeback(struct drm_i915_gem_object *obj)
__shmem_writeback(obj->base.size, obj->base.filp->f_mapping); __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 void
__i915_gem_object_release_shmem(struct drm_i915_gem_object *obj, __i915_gem_object_release_shmem(struct drm_i915_gem_object *obj,
struct sg_table *pages, struct sg_table *pages,
...@@ -503,7 +520,7 @@ const struct drm_i915_gem_object_ops i915_gem_shmem_ops = { ...@@ -503,7 +520,7 @@ const struct drm_i915_gem_object_ops i915_gem_shmem_ops = {
.get_pages = shmem_get_pages, .get_pages = shmem_get_pages,
.put_pages = shmem_put_pages, .put_pages = shmem_put_pages,
.truncate = shmem_truncate, .truncate = shmem_truncate,
.writeback = shmem_writeback, .shrinker_release_pages = shmem_shrinker_release_pages,
.pwrite = shmem_pwrite, .pwrite = shmem_pwrite,
.pread = shmem_pread, .pread = shmem_pread,
......
...@@ -61,18 +61,6 @@ static int try_to_writeback(struct drm_i915_gem_object *obj, unsigned int flags) ...@@ -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, return obj->ops->shrinker_release_pages(obj,
!(flags & I915_SHRINK_ACTIVE), !(flags & I915_SHRINK_ACTIVE),
flags & I915_SHRINK_WRITEBACK); 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; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment