Lines Matching refs:lru
1309 drm_gem_lru_init(struct drm_gem_lru *lru, struct mutex *lock) in drm_gem_lru_init() argument
1311 lru->lock = lock; in drm_gem_lru_init()
1312 lru->count = 0; in drm_gem_lru_init()
1313 INIT_LIST_HEAD(&lru->list); in drm_gem_lru_init()
1320 obj->lru->count -= obj->size >> PAGE_SHIFT; in drm_gem_lru_remove_locked()
1321 WARN_ON(obj->lru->count < 0); in drm_gem_lru_remove_locked()
1323 obj->lru = NULL; in drm_gem_lru_remove_locked()
1336 struct drm_gem_lru *lru = obj->lru; in drm_gem_lru_remove() local
1338 if (!lru) in drm_gem_lru_remove()
1341 mutex_lock(lru->lock); in drm_gem_lru_remove()
1343 mutex_unlock(lru->lock); in drm_gem_lru_remove()
1348 drm_gem_lru_move_tail_locked(struct drm_gem_lru *lru, struct drm_gem_object *obj) in drm_gem_lru_move_tail_locked() argument
1350 lockdep_assert_held_once(lru->lock); in drm_gem_lru_move_tail_locked()
1352 if (obj->lru) in drm_gem_lru_move_tail_locked()
1355 lru->count += obj->size >> PAGE_SHIFT; in drm_gem_lru_move_tail_locked()
1356 list_add_tail(&obj->lru_node, &lru->list); in drm_gem_lru_move_tail_locked()
1357 obj->lru = lru; in drm_gem_lru_move_tail_locked()
1371 drm_gem_lru_move_tail(struct drm_gem_lru *lru, struct drm_gem_object *obj) in drm_gem_lru_move_tail() argument
1373 mutex_lock(lru->lock); in drm_gem_lru_move_tail()
1374 drm_gem_lru_move_tail_locked(lru, obj); in drm_gem_lru_move_tail()
1375 mutex_unlock(lru->lock); in drm_gem_lru_move_tail()
1394 drm_gem_lru_scan(struct drm_gem_lru *lru, unsigned nr_to_scan, in drm_gem_lru_scan() argument
1401 drm_gem_lru_init(&still_in_lru, lru->lock); in drm_gem_lru_scan()
1403 mutex_lock(lru->lock); in drm_gem_lru_scan()
1406 obj = list_first_entry_or_null(&lru->list, typeof(*obj), lru_node); in drm_gem_lru_scan()
1426 mutex_unlock(lru->lock); in drm_gem_lru_scan()
1444 WARN_ON(obj->lru == &still_in_lru); in drm_gem_lru_scan()
1445 WARN_ON(obj->lru == lru); in drm_gem_lru_scan()
1452 mutex_lock(lru->lock); in drm_gem_lru_scan()
1460 obj->lru = lru; in drm_gem_lru_scan()
1461 list_splice_tail(&still_in_lru.list, &lru->list); in drm_gem_lru_scan()
1462 lru->count += still_in_lru.count; in drm_gem_lru_scan()
1464 mutex_unlock(lru->lock); in drm_gem_lru_scan()