diff options
author | Karolina Stolarek <karolina.stolarek@intel.com> | 2024-06-12 14:03:02 +0200 |
---|---|---|
committer | Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com> | 2024-06-24 16:01:21 +0530 |
commit | 5fe3943385c987f73f99cdfa99785424a9d32a41 (patch) | |
tree | 41cff1fbcaccd062215f9d19cfd29621416885cc /drivers/gpu/drm/ttm/tests/ttm_mock_manager.c | |
parent | 8eda41dfc9b2f04c03858cf33c79eb1e6e9249b1 (diff) |
drm/ttm/tests: Add eviction testing
Add tests for ttm_bo_validate that focus on BO eviction and swapout.
Update device funcs definition with eviction-related callbacks. Add
alternative funcs where evict_flags() routes eviction to a domain
that can't allocate resources (dubbed "busy manager" in the tests).
Extract the common path of ttm_device init into a function.
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Reviewed-by: Somalapuram, Amaranath <asomalap@amd.com>
Tested-by: Somalapuram, Amaranath <asomalap@amd.com>
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ae8e284d6c7e6bd0be259052bd4f42e07ce24641.1718192625.git.karolina.stolarek@intel.com
Diffstat (limited to 'drivers/gpu/drm/ttm/tests/ttm_mock_manager.c')
-rw-r--r-- | drivers/gpu/drm/ttm/tests/ttm_mock_manager.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/gpu/drm/ttm/tests/ttm_mock_manager.c b/drivers/gpu/drm/ttm/tests/ttm_mock_manager.c index ad77816c13ca..7f34fecd3fef 100644 --- a/drivers/gpu/drm/ttm/tests/ttm_mock_manager.c +++ b/drivers/gpu/drm/ttm/tests/ttm_mock_manager.c @@ -153,6 +153,14 @@ static int ttm_bad_manager_alloc(struct ttm_resource_manager *man, return -ENOSPC; } +static int ttm_busy_manager_alloc(struct ttm_resource_manager *man, + struct ttm_buffer_object *bo, + const struct ttm_place *place, + struct ttm_resource **res) +{ + return -EBUSY; +} + static void ttm_bad_manager_free(struct ttm_resource_manager *man, struct ttm_resource *res) { @@ -172,6 +180,12 @@ static const struct ttm_resource_manager_func ttm_bad_manager_funcs = { .compatible = ttm_bad_manager_compatible }; +static const struct ttm_resource_manager_func ttm_bad_busy_manager_funcs = { + .alloc = ttm_busy_manager_alloc, + .free = ttm_bad_manager_free, + .compatible = ttm_bad_manager_compatible +}; + int ttm_bad_manager_init(struct ttm_device *bdev, u32 mem_type, u32 size) { struct ttm_resource_manager *man; @@ -190,7 +204,20 @@ int ttm_bad_manager_init(struct ttm_device *bdev, u32 mem_type, u32 size) } EXPORT_SYMBOL_GPL(ttm_bad_manager_init); -void ttm_bad_manager_fini(struct ttm_device *bdev, u32 mem_type) +int ttm_busy_manager_init(struct ttm_device *bdev, u32 mem_type, u32 size) +{ + struct ttm_resource_manager *man; + + ttm_bad_manager_init(bdev, mem_type, size); + man = ttm_manager_type(bdev, mem_type); + + man->func = &ttm_bad_busy_manager_funcs; + + return 0; +} +EXPORT_SYMBOL_GPL(ttm_busy_manager_init); + +void ttm_bad_manager_fini(struct ttm_device *bdev, uint32_t mem_type) { struct ttm_resource_manager *man; |