Lines Matching defs:i915

78  * @ww: i915 gem ww acquire ctx, or NULL
79 * @i915: i915 device
104 struct drm_i915_private *i915,
113 { &i915->mm.purge_list, ~0u },
115 &i915->mm.shrink_list,
127 bool trylock_vm = !ww && intel_vm_no_concurrent_access_wa(i915);
129 trace_i915_gem_shrink(i915, target, shrink);
137 wakeref = intel_runtime_pm_get_if_in_use(&i915->runtime_pm);
153 for_each_gt(gt, i915, i)
194 spin_lock_irqsave(&i915->mm.obj_lock, flags);
215 spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
239 spin_lock_irqsave(&i915->mm.obj_lock, flags);
244 spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
250 intel_runtime_pm_put(&i915->runtime_pm, wakeref);
262 * @i915: i915 device
274 unsigned long i915_gem_shrink_all(struct drm_i915_private *i915)
279 with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
280 freed = i915_gem_shrink(NULL, i915, -1UL, NULL,
291 struct drm_i915_private *i915 = shrinker->private_data;
295 count = READ_ONCE(i915->mm.shrink_memory) >> PAGE_SHIFT;
296 num_objects = READ_ONCE(i915->mm.shrink_count);
308 i915->mm.shrinker->batch =
309 max((i915->mm.shrinker->batch + avg) >> 1,
319 struct drm_i915_private *i915 = shrinker->private_data;
324 freed = i915_gem_shrink(NULL, i915,
332 with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
333 freed += i915_gem_shrink(NULL, i915,
349 struct drm_i915_private *i915 =
357 with_intel_runtime_pm(&i915->runtime_pm, wakeref)
358 freed_pages += i915_gem_shrink(NULL, i915, -1UL, NULL,
368 spin_lock_irqsave(&i915->mm.obj_lock, flags);
369 list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) {
375 spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
389 struct drm_i915_private *i915 =
397 with_intel_runtime_pm(&i915->runtime_pm, wakeref)
398 freed_pages += i915_gem_shrink(NULL, i915, -1UL, NULL,
404 for_each_gt(gt, i915, i) {
429 void i915_gem_driver_register__shrinker(struct drm_i915_private *i915)
431 i915->mm.shrinker = shrinker_alloc(0, "drm-i915_gem");
432 if (!i915->mm.shrinker) {
433 drm_WARN_ON(&i915->drm, 1);
435 i915->mm.shrinker->scan_objects = i915_gem_shrinker_scan;
436 i915->mm.shrinker->count_objects = i915_gem_shrinker_count;
437 i915->mm.shrinker->batch = 4096;
438 i915->mm.shrinker->private_data = i915;
440 shrinker_register(i915->mm.shrinker);
443 i915->mm.oom_notifier.notifier_call = i915_gem_shrinker_oom;
444 drm_WARN_ON(&i915->drm, register_oom_notifier(&i915->mm.oom_notifier));
446 i915->mm.vmap_notifier.notifier_call = i915_gem_shrinker_vmap;
447 drm_WARN_ON(&i915->drm,
448 register_vmap_purge_notifier(&i915->mm.vmap_notifier));
451 void i915_gem_driver_unregister__shrinker(struct drm_i915_private *i915)
453 drm_WARN_ON(&i915->drm,
454 unregister_vmap_purge_notifier(&i915->mm.vmap_notifier));
455 drm_WARN_ON(&i915->drm,
456 unregister_oom_notifier(&i915->mm.oom_notifier));
457 shrinker_free(i915->mm.shrinker);
460 void i915_gem_shrinker_taints_mutex(struct drm_i915_private *i915,
486 struct drm_i915_private *i915 = obj_to_i915(obj);
498 spin_lock_irqsave(&i915->mm.obj_lock, flags);
502 i915->mm.shrink_count--;
503 i915->mm.shrink_memory -= obj->base.size;
505 spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
511 struct drm_i915_private *i915 = obj_to_i915(obj);
520 spin_lock_irqsave(&i915->mm.obj_lock, flags);
526 i915->mm.shrink_count++;
527 i915->mm.shrink_memory += obj->base.size;
530 spin_unlock_irqrestore(&i915->mm.obj_lock, flags);