Lines Matching refs:mm

37 	return swap_available() || obj->mm.madv == I915_MADV_DONTNEED;  in can_release_pages()
113 { &i915->mm.purge_list, ~0u }, in i915_gem_shrink()
115 &i915->mm.shrink_list, in i915_gem_shrink()
194 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
198 mm.link))) { in i915_gem_shrink()
199 list_move_tail(&obj->mm.link, &still_in_list); in i915_gem_shrink()
202 !is_vmalloc_addr(obj->mm.mapping)) in i915_gem_shrink()
215 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
239 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
244 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
295 count = READ_ONCE(i915->mm.shrink_memory) >> PAGE_SHIFT; in i915_gem_shrinker_count()
296 num_objects = READ_ONCE(i915->mm.shrink_count); in i915_gem_shrinker_count()
308 i915->mm.shrinker->batch = in i915_gem_shrinker_count()
309 max((i915->mm.shrinker->batch + avg) >> 1, in i915_gem_shrinker_count()
350 container_of(nb, struct drm_i915_private, mm.oom_notifier); in i915_gem_shrinker_oom()
368 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
369 list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) { in i915_gem_shrinker_oom()
375 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
390 container_of(nb, struct drm_i915_private, mm.vmap_notifier); in i915_gem_shrinker_vmap()
431 i915->mm.shrinker = shrinker_alloc(0, "drm-i915_gem"); in i915_gem_driver_register__shrinker()
432 if (!i915->mm.shrinker) { in i915_gem_driver_register__shrinker()
435 i915->mm.shrinker->scan_objects = i915_gem_shrinker_scan; in i915_gem_driver_register__shrinker()
436 i915->mm.shrinker->count_objects = i915_gem_shrinker_count; in i915_gem_driver_register__shrinker()
437 i915->mm.shrinker->batch = 4096; in i915_gem_driver_register__shrinker()
438 i915->mm.shrinker->private_data = i915; in i915_gem_driver_register__shrinker()
440 shrinker_register(i915->mm.shrinker); in i915_gem_driver_register__shrinker()
443 i915->mm.oom_notifier.notifier_call = i915_gem_shrinker_oom; in i915_gem_driver_register__shrinker()
444 drm_WARN_ON(&i915->drm, register_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_register__shrinker()
446 i915->mm.vmap_notifier.notifier_call = i915_gem_shrinker_vmap; in i915_gem_driver_register__shrinker()
448 register_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_register__shrinker()
454 unregister_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_unregister__shrinker()
456 unregister_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_unregister__shrinker()
457 shrinker_free(i915->mm.shrinker); in i915_gem_driver_unregister__shrinker()
495 if (atomic_add_unless(&obj->mm.shrink_pin, 1, 0)) in i915_gem_object_make_unshrinkable()
498 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
499 if (!atomic_fetch_inc(&obj->mm.shrink_pin) && in i915_gem_object_make_unshrinkable()
500 !list_empty(&obj->mm.link)) { in i915_gem_object_make_unshrinkable()
501 list_del_init(&obj->mm.link); in i915_gem_object_make_unshrinkable()
502 i915->mm.shrink_count--; in i915_gem_object_make_unshrinkable()
503 i915->mm.shrink_memory -= obj->base.size; in i915_gem_object_make_unshrinkable()
505 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
517 if (atomic_add_unless(&obj->mm.shrink_pin, -1, 1)) in ___i915_gem_object_make_shrinkable()
520 spin_lock_irqsave(&i915->mm.obj_lock, flags); in ___i915_gem_object_make_shrinkable()
522 if (atomic_dec_and_test(&obj->mm.shrink_pin)) { in ___i915_gem_object_make_shrinkable()
523 GEM_BUG_ON(!list_empty(&obj->mm.link)); in ___i915_gem_object_make_shrinkable()
525 list_add_tail(&obj->mm.link, head); in ___i915_gem_object_make_shrinkable()
526 i915->mm.shrink_count++; in ___i915_gem_object_make_shrinkable()
527 i915->mm.shrink_memory += obj->base.size; in ___i915_gem_object_make_shrinkable()
530 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in ___i915_gem_object_make_shrinkable()
546 &obj_to_i915(obj)->mm.shrink_list); in __i915_gem_object_make_shrinkable()
562 &obj_to_i915(obj)->mm.purge_list); in __i915_gem_object_make_purgeable()