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_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 {
|
|||||||
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)
|
|||||||
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)
|
|||||||
__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 = {
|
|||||||
.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)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user