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: 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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user