Lines Matching refs:mm
37 return swap_available() || obj->mm.madv == I915_MADV_DONTNEED; in can_release_pages()
62 switch (obj->mm.madv) { in try_to_writeback()
111 { &i915->mm.purge_list, ~0u }, in i915_gem_shrink()
113 &i915->mm.shrink_list, in i915_gem_shrink()
189 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
193 mm.link))) { in i915_gem_shrink()
194 list_move_tail(&obj->mm.link, &still_in_list); in i915_gem_shrink()
197 !is_vmalloc_addr(obj->mm.mapping)) in i915_gem_shrink()
210 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
238 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrink()
243 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrink()
291 container_of(shrinker, struct drm_i915_private, mm.shrinker); in i915_gem_shrinker_count()
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()
320 container_of(shrinker, struct drm_i915_private, mm.shrinker); in i915_gem_shrinker_scan()
351 container_of(nb, struct drm_i915_private, mm.oom_notifier); in i915_gem_shrinker_oom()
369 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
370 list_for_each_entry(obj, &i915->mm.shrink_list, mm.link) { in i915_gem_shrinker_oom()
376 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_shrinker_oom()
391 container_of(nb, struct drm_i915_private, mm.vmap_notifier); in i915_gem_shrinker_vmap()
422 i915->mm.shrinker.scan_objects = i915_gem_shrinker_scan; in i915_gem_driver_register__shrinker()
423 i915->mm.shrinker.count_objects = i915_gem_shrinker_count; in i915_gem_driver_register__shrinker()
424 i915->mm.shrinker.seeks = DEFAULT_SEEKS; in i915_gem_driver_register__shrinker()
425 i915->mm.shrinker.batch = 4096; in i915_gem_driver_register__shrinker()
426 drm_WARN_ON(&i915->drm, register_shrinker(&i915->mm.shrinker)); in i915_gem_driver_register__shrinker()
428 i915->mm.oom_notifier.notifier_call = i915_gem_shrinker_oom; in i915_gem_driver_register__shrinker()
429 drm_WARN_ON(&i915->drm, register_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_register__shrinker()
431 i915->mm.vmap_notifier.notifier_call = i915_gem_shrinker_vmap; in i915_gem_driver_register__shrinker()
433 register_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_register__shrinker()
439 unregister_vmap_purge_notifier(&i915->mm.vmap_notifier)); in i915_gem_driver_unregister__shrinker()
441 unregister_oom_notifier(&i915->mm.oom_notifier)); in i915_gem_driver_unregister__shrinker()
442 unregister_shrinker(&i915->mm.shrinker); in i915_gem_driver_unregister__shrinker()
472 if (atomic_add_unless(&obj->mm.shrink_pin, 1, 0)) in i915_gem_object_make_unshrinkable()
475 spin_lock_irqsave(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
476 if (!atomic_fetch_inc(&obj->mm.shrink_pin) && in i915_gem_object_make_unshrinkable()
477 !list_empty(&obj->mm.link)) { in i915_gem_object_make_unshrinkable()
478 list_del_init(&obj->mm.link); in i915_gem_object_make_unshrinkable()
479 i915->mm.shrink_count--; in i915_gem_object_make_unshrinkable()
480 i915->mm.shrink_memory -= obj->base.size; in i915_gem_object_make_unshrinkable()
482 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in i915_gem_object_make_unshrinkable()
495 if (atomic_add_unless(&obj->mm.shrink_pin, -1, 1)) in __i915_gem_object_make_shrinkable()
498 spin_lock_irqsave(&i915->mm.obj_lock, flags); in __i915_gem_object_make_shrinkable()
500 if (atomic_dec_and_test(&obj->mm.shrink_pin)) { in __i915_gem_object_make_shrinkable()
501 GEM_BUG_ON(!list_empty(&obj->mm.link)); in __i915_gem_object_make_shrinkable()
503 list_add_tail(&obj->mm.link, head); in __i915_gem_object_make_shrinkable()
504 i915->mm.shrink_count++; in __i915_gem_object_make_shrinkable()
505 i915->mm.shrink_memory += obj->base.size; in __i915_gem_object_make_shrinkable()
508 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); in __i915_gem_object_make_shrinkable()
514 &obj_to_i915(obj)->mm.shrink_list); in i915_gem_object_make_shrinkable()
520 &obj_to_i915(obj)->mm.purge_list); in i915_gem_object_make_purgeable()