mirror of
https://github.com/torvalds/linux.git
synced 2026-04-30 04:22:32 -04:00
drm/ttm: Move swapped objects off the manager's LRU list
Resources of swapped objects remains on the TTM_PL_SYSTEM manager's LRU list, which is bad for the LRU walk efficiency. Rename the device-wide "pinned" list to "unevictable" and move also resources of swapped-out objects to that list. An alternative would be to create an "UNEVICTABLE" priority to be able to keep the pinned- and swapped objects on their respective manager's LRU without affecting the LRU walk efficiency. v2: - Remove a bogus WARN_ON (Christian König) - Update ttm_resource_[add|del] bulk move (Christian König) - Fix TTM KUNIT tests (Intel CI) v3: - Check for non-NULL bo->resource in ttm_bo_populate(). v4: - Don't move to LRU tail during swapout until the resource is properly swapped or there was a swapout failure. (Intel Ci) - Add a newline after checkpatch check. v5: - Introduce ttm_resource_is_swapped() to avoid a corner-case where a newly created resource was considered swapped. (Intel CI) v6: - Move an assert. Cc: Christian König <christian.koenig@amd.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: <dri-devel@lists.freedesktop.org> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240911121859.85387-2-thomas.hellstrom@linux.intel.com
This commit is contained in:
@@ -164,18 +164,18 @@ static void ttm_resource_init_pinned(struct kunit *test)
|
||||
|
||||
res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, res);
|
||||
KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
|
||||
KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->unevictable));
|
||||
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
ttm_bo_pin(bo);
|
||||
ttm_resource_init(bo, place, res);
|
||||
KUNIT_ASSERT_TRUE(test, list_is_singular(&bo->bdev->pinned));
|
||||
KUNIT_ASSERT_TRUE(test, list_is_singular(&bo->bdev->unevictable));
|
||||
|
||||
ttm_bo_unpin(bo);
|
||||
ttm_resource_fini(man, res);
|
||||
dma_resv_unlock(bo->base.resv);
|
||||
|
||||
KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
|
||||
KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->unevictable));
|
||||
}
|
||||
|
||||
static void ttm_resource_fini_basic(struct kunit *test)
|
||||
|
||||
Reference in New Issue
Block a user