diff options
author | Dmitry Osipenko <dmitry.osipenko@collabora.com> | 2022-11-16 17:07:50 +0300 |
---|---|---|
committer | Dmitry Osipenko <dmitry.osipenko@collabora.com> | 2023-02-27 07:09:41 +0300 |
commit | 7eabaa892d9c57ad9b2946f923d781e8a16f8e88 (patch) | |
tree | 04055fb89034b3535b5901c9247d64a2bda94b02 /include/drm | |
parent | 8ac752463390882a5e73d85b141b68d5c259652d (diff) |
drm/gem: Add evict() callback to drm_gem_object_funcs
Add new common evict() callback to drm_gem_object_funcs and corresponding
drm_gem_object_evict() helper. This is a first step on a way to providing
common GEM-shrinker API for DRM drivers.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://lore.kernel.org/all/20230108210445.3948344-4-dmitry.osipenko@collabora.com/
Diffstat (limited to 'include/drm')
-rw-r--r-- | include/drm/drm_gem.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index 772a4adf5287..c76e651f2d44 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -165,6 +165,16 @@ struct drm_gem_object_funcs { int (*mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma); /** + * @evict: + * + * Evicts gem object out from memory. Used by the drm_gem_object_evict() + * helper. Returns 0 on success, -errno otherwise. + * + * This callback is optional. + */ + int (*evict)(struct drm_gem_object *obj); + + /** * @vm_ops: * * Virtual memory operations used with mmap. @@ -479,4 +489,6 @@ void drm_gem_lru_move_tail(struct drm_gem_lru *lru, struct drm_gem_object *obj); unsigned long drm_gem_lru_scan(struct drm_gem_lru *lru, unsigned nr_to_scan, bool (*shrink)(struct drm_gem_object *obj)); +int drm_gem_evict(struct drm_gem_object *obj); + #endif /* __DRM_GEM_H__ */ |