|
@@ -429,8 +429,20 @@ static void ttm_bo_cleanup_refs_or_queue(struct ttm_buffer_object *bo)
|
|
|
sync_obj = driver->sync_obj_ref(bo->sync_obj);
|
|
|
spin_unlock(&bdev->fence_lock);
|
|
|
|
|
|
- if (!ret)
|
|
|
+ if (!ret) {
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Make NO_EVICT bos immediately available to
|
|
|
+ * shrinkers, now that they are queued for
|
|
|
+ * destruction.
|
|
|
+ */
|
|
|
+ if (bo->mem.placement & TTM_PL_FLAG_NO_EVICT) {
|
|
|
+ bo->mem.placement &= ~TTM_PL_FLAG_NO_EVICT;
|
|
|
+ ttm_bo_add_to_lru(bo);
|
|
|
+ }
|
|
|
+
|
|
|
ww_mutex_unlock(&bo->resv->lock);
|
|
|
+ }
|
|
|
|
|
|
kref_get(&bo->list_kref);
|
|
|
list_add_tail(&bo->ddestroy, &bdev->ddestroy);
|