Lines Matching refs:i915
96 i915_gem_shrink(struct drm_i915_private *i915, in i915_gem_shrink() argument
105 { &i915->mm.purge_list, ~0u }, in i915_gem_shrink()
107 &i915->mm.shrink_list, in i915_gem_shrink()
116 trace_i915_gem_shrink(i915, target, shrink); in i915_gem_shrink()
124 wakeref = intel_runtime_pm_get_if_in_use(&i915->runtime_pm); in i915_gem_shrink()
141 intel_gt_retire_requests(&i915->gt); in i915_gem_shrink()
179 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
200 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
215 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
218 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
222 intel_runtime_pm_put(&i915->runtime_pm, wakeref); in i915_gem_shrink()
243 unsigned long i915_gem_shrink_all(struct drm_i915_private *i915) in i915_gem_shrink_all() argument
248 with_intel_runtime_pm(&i915->runtime_pm, wakeref) { in i915_gem_shrink_all()
249 freed = i915_gem_shrink(i915, -1UL, NULL, in i915_gem_shrink_all()
260 struct drm_i915_private *i915 = in i915_gem_shrinker_count() local
265 count = READ_ONCE(i915->mm.shrink_memory) >> PAGE_SHIFT; in i915_gem_shrinker_count()
266 num_objects = READ_ONCE(i915->mm.shrink_count); in i915_gem_shrinker_count()
278 i915->mm.shrinker.batch = in i915_gem_shrinker_count()
279 max((i915->mm.shrinker.batch + avg) >> 1, in i915_gem_shrinker_count()
289 struct drm_i915_private *i915 = in i915_gem_shrinker_scan() local
295 freed = i915_gem_shrink(i915, in i915_gem_shrinker_scan()
303 with_intel_runtime_pm(&i915->runtime_pm, wakeref) { in i915_gem_shrinker_scan()
304 freed += i915_gem_shrink(i915, in i915_gem_shrinker_scan()
320 struct drm_i915_private *i915 = in i915_gem_shrinker_oom() local
328 with_intel_runtime_pm(&i915->runtime_pm, wakeref) in i915_gem_shrinker_oom()
329 freed_pages += i915_gem_shrink(i915, -1UL, NULL, in i915_gem_shrinker_oom()
339 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
340 list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) { in i915_gem_shrinker_oom()
346 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
360 struct drm_i915_private *i915 = in i915_gem_shrinker_vmap() local
366 with_intel_runtime_pm(&i915->runtime_pm, wakeref) in i915_gem_shrinker_vmap()
367 freed_pages += i915_gem_shrink(i915, -1UL, NULL, in i915_gem_shrinker_vmap()
373 mutex_lock(&i915->ggtt.vm.mutex); in i915_gem_shrinker_vmap()
375 &i915->ggtt.vm.bound_list, vm_link) { in i915_gem_shrinker_vmap()
384 mutex_unlock(&i915->ggtt.vm.mutex); in i915_gem_shrinker_vmap()
390 void i915_gem_driver_register__shrinker(struct drm_i915_private *i915) in i915_gem_driver_register__shrinker() argument
392 i915->mm.shrinker.scan_objects = i915_gem_shrinker_scan; in i915_gem_driver_register__shrinker()
393 i915->mm.shrinker.count_objects = i915_gem_shrinker_count; in i915_gem_driver_register__shrinker()
394 i915->mm.shrinker.seeks = DEFAULT_SEEKS; in i915_gem_driver_register__shrinker()
395 i915->mm.shrinker.batch = 4096; in i915_gem_driver_register__shrinker()
396 drm_WARN_ON(&i915->drm, register_shrinker(&i915->mm.shrinker)); in i915_gem_driver_register__shrinker()
398 i915->mm.oom_notifier.notifier_call = i915_gem_shrinker_oom; in i915_gem_driver_register__shrinker()
399 drm_WARN_ON(&i915->drm, register_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_register__shrinker()
401 i915->mm.vmap_notifier.notifier_call = i915_gem_shrinker_vmap; in i915_gem_driver_register__shrinker()
402 drm_WARN_ON(&i915->drm, in i915_gem_driver_register__shrinker()
403 register_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_register__shrinker()
406 void i915_gem_driver_unregister__shrinker(struct drm_i915_private *i915) in i915_gem_driver_unregister__shrinker() argument
408 drm_WARN_ON(&i915->drm, in i915_gem_driver_unregister__shrinker()
409 unregister_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_unregister__shrinker()
410 drm_WARN_ON(&i915->drm, in i915_gem_driver_unregister__shrinker()
411 unregister_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_unregister__shrinker()
412 unregister_shrinker(&i915->mm.shrinker); in i915_gem_driver_unregister__shrinker()
415 void i915_gem_shrinker_taints_mutex(struct drm_i915_private *i915, in i915_gem_shrinker_taints_mutex() argument
433 struct drm_i915_private *i915 = obj_to_i915(obj); in i915_gem_object_make_unshrinkable() local
445 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
449 i915->mm.shrink_count--; in i915_gem_object_make_unshrinkable()
450 i915->mm.shrink_memory -= obj->base.size; in i915_gem_object_make_unshrinkable()
452 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
458 struct drm_i915_private *i915 = obj_to_i915(obj); in __i915_gem_object_make_shrinkable() local
468 spin_lock_irqsave(&i915->mm.obj_lock, flags); in __i915_gem_object_make_shrinkable()
474 i915->mm.shrink_count++; in __i915_gem_object_make_shrinkable()
475 i915->mm.shrink_memory += obj->base.size; in __i915_gem_object_make_shrinkable()
478 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in __i915_gem_object_make_shrinkable()