Lines Matching refs:lru
502 * Move folios to appropriate lru and release the folios, decrementing the
1313 * @lru: The LRU to initialize
1317 drm_gem_lru_init(struct drm_gem_lru *lru, struct mutex *lock)
1319 lru->lock = lock;
1320 lru->count = 0;
1321 INIT_LIST_HEAD(&lru->list);
1328 obj->lru->count -= obj->size >> PAGE_SHIFT;
1329 WARN_ON(obj->lru->count < 0);
1331 obj->lru = NULL;
1344 struct drm_gem_lru *lru = obj->lru;
1346 if (!lru)
1349 mutex_lock(lru->lock);
1351 mutex_unlock(lru->lock);
1358 * Like &drm_gem_lru_move_tail but lru lock must be held
1360 * @lru: The LRU to move the object into.
1364 drm_gem_lru_move_tail_locked(struct drm_gem_lru *lru, struct drm_gem_object *obj)
1366 lockdep_assert_held_once(lru->lock);
1368 if (obj->lru)
1371 lru->count += obj->size >> PAGE_SHIFT;
1372 list_add_tail(&obj->lru_node, &lru->list);
1373 obj->lru = lru;
1384 * @lru: The LRU to move the object into.
1388 drm_gem_lru_move_tail(struct drm_gem_lru *lru, struct drm_gem_object *obj)
1390 mutex_lock(lru->lock);
1391 drm_gem_lru_move_tail_locked(lru, obj);
1392 mutex_unlock(lru->lock);
1406 * @lru: The LRU to scan
1412 drm_gem_lru_scan(struct drm_gem_lru *lru,
1421 drm_gem_lru_init(&still_in_lru, lru->lock);
1423 mutex_lock(lru->lock);
1426 obj = list_first_entry_or_null(&lru->list, typeof(*obj), lru_node);
1446 mutex_unlock(lru->lock);
1466 WARN_ON(obj->lru == &still_in_lru);
1467 WARN_ON(obj->lru == lru);
1474 mutex_lock(lru->lock);
1482 obj->lru = lru;
1483 list_splice_tail(&still_in_lru.list, &lru->list);
1484 lru->count += still_in_lru.count;
1486 mutex_unlock(lru->lock);