1be80bc36SJani Nikula /* SPDX-License-Identifier: MIT */
2be80bc36SJani Nikula /*
3be80bc36SJani Nikula  * Copyright © 2019 Intel Corporation
4be80bc36SJani Nikula  */
5be80bc36SJani Nikula 
6be80bc36SJani Nikula #ifndef __I915_GEM_SHRINKER_H__
7be80bc36SJani Nikula #define __I915_GEM_SHRINKER_H__
8be80bc36SJani Nikula 
9be80bc36SJani Nikula #include <linux/bits.h>
10be80bc36SJani Nikula 
11be80bc36SJani Nikula struct drm_i915_private;
12*cf41a8f1SMaarten Lankhorst struct i915_gem_ww_ctx;
13be80bc36SJani Nikula struct mutex;
14be80bc36SJani Nikula 
15be80bc36SJani Nikula /* i915_gem_shrinker.c */
16*cf41a8f1SMaarten Lankhorst unsigned long i915_gem_shrink(struct i915_gem_ww_ctx *ww,
17*cf41a8f1SMaarten Lankhorst 			      struct drm_i915_private *i915,
18be80bc36SJani Nikula 			      unsigned long target,
19be80bc36SJani Nikula 			      unsigned long *nr_scanned,
20be80bc36SJani Nikula 			      unsigned flags);
21be80bc36SJani Nikula #define I915_SHRINK_UNBOUND	BIT(0)
22be80bc36SJani Nikula #define I915_SHRINK_BOUND	BIT(1)
23be80bc36SJani Nikula #define I915_SHRINK_ACTIVE	BIT(2)
24be80bc36SJani Nikula #define I915_SHRINK_VMAPS	BIT(3)
25be80bc36SJani Nikula #define I915_SHRINK_WRITEBACK	BIT(4)
26be80bc36SJani Nikula 
27be80bc36SJani Nikula unsigned long i915_gem_shrink_all(struct drm_i915_private *i915);
28be80bc36SJani Nikula void i915_gem_driver_register__shrinker(struct drm_i915_private *i915);
29be80bc36SJani Nikula void i915_gem_driver_unregister__shrinker(struct drm_i915_private *i915);
30be80bc36SJani Nikula void i915_gem_shrinker_taints_mutex(struct drm_i915_private *i915,
31be80bc36SJani Nikula 				    struct mutex *mutex);
32be80bc36SJani Nikula 
33be80bc36SJani Nikula #endif /* __I915_GEM_SHRINKER_H__ */
34