mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
drm/ttm/tests: Fix a warning in ttm_bo_unreserve_bulk
BOs in a bulk move have to share the same reservation object. That is
not the case in the ttm_bo_unreserve_bulk subtest. Update
ttm_bo_kunit_init() helper to accept dma_resv object so we can define
buffer objects that share the same resv. Update calls to that helper
accordingly.
Fixes: 995279d280
("drm/ttm/tests: Add tests for ttm_bo functions")
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c5bd2df114781b4eb5c1e8295b2ae4ac2c30a179.1718192625.git.karolina.stolarek@intel.com
This commit is contained in:
parent
699f411dce
commit
588c4c8d58
@ -62,7 +62,7 @@ static void ttm_bo_reserve_optimistic_no_ticket(struct kunit *test)
|
||||
struct ttm_buffer_object *bo;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_bo_reserve(bo, params->interruptible, params->no_wait, NULL);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -77,7 +77,7 @@ static void ttm_bo_reserve_locked_no_sleep(struct kunit *test)
|
||||
bool no_wait = true;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
/* Let's lock it beforehand */
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
@ -98,7 +98,7 @@ static void ttm_bo_reserve_no_wait_ticket(struct kunit *test)
|
||||
|
||||
ww_acquire_init(&ctx, &reservation_ww_class);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
|
||||
KUNIT_ASSERT_EQ(test, err, -EBUSY);
|
||||
@ -116,7 +116,7 @@ static void ttm_bo_reserve_double_resv(struct kunit *test)
|
||||
|
||||
ww_acquire_init(&ctx, &reservation_ww_class);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -144,8 +144,8 @@ static void ttm_bo_reserve_deadlock(struct kunit *test)
|
||||
bool no_wait = false;
|
||||
int err;
|
||||
|
||||
bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
ww_acquire_init(&ctx1, &reservation_ww_class);
|
||||
ww_mutex_base_lock(&bo2->base.resv->lock.base);
|
||||
@ -214,7 +214,7 @@ static void ttm_bo_reserve_interrupted(struct kunit *test)
|
||||
struct task_struct *task;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
task = kthread_create(threaded_ttm_bo_reserve, bo, "ttm-bo-reserve");
|
||||
|
||||
@ -255,7 +255,7 @@ static void ttm_bo_unreserve_basic(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo->priority = bo_prio;
|
||||
|
||||
err = ttm_resource_alloc(bo, place, &res1);
|
||||
@ -294,7 +294,7 @@ static void ttm_bo_unreserve_pinned(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
place = ttm_place_kunit_init(test, mem_type, 0);
|
||||
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
@ -327,6 +327,7 @@ static void ttm_bo_unreserve_bulk(struct kunit *test)
|
||||
struct ttm_resource *res1, *res2;
|
||||
struct ttm_device *ttm_dev;
|
||||
struct ttm_place *place;
|
||||
struct dma_resv *resv;
|
||||
uint32_t mem_type = TTM_PL_SYSTEM;
|
||||
unsigned int bo_priority = 0;
|
||||
int err;
|
||||
@ -338,12 +339,17 @@ static void ttm_bo_unreserve_bulk(struct kunit *test)
|
||||
ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
|
||||
|
||||
resv = kunit_kzalloc(test, sizeof(*resv), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
|
||||
|
||||
err = ttm_device_kunit_init(priv, ttm_dev, false, false);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
dma_resv_init(resv);
|
||||
|
||||
bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE, resv);
|
||||
bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE, resv);
|
||||
|
||||
dma_resv_lock(bo1->base.resv, NULL);
|
||||
ttm_bo_set_bulk_move(bo1, &lru_bulk_move);
|
||||
@ -369,6 +375,8 @@ static void ttm_bo_unreserve_bulk(struct kunit *test)
|
||||
|
||||
ttm_resource_free(bo1, &res1);
|
||||
ttm_resource_free(bo2, &res2);
|
||||
|
||||
dma_resv_fini(resv);
|
||||
}
|
||||
|
||||
static void ttm_bo_put_basic(struct kunit *test)
|
||||
@ -390,7 +398,7 @@ static void ttm_bo_put_basic(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo->type = ttm_bo_type_device;
|
||||
|
||||
err = ttm_resource_alloc(bo, place, &res);
|
||||
@ -451,7 +459,7 @@ static void ttm_bo_put_shared_resv(struct kunit *test)
|
||||
|
||||
dma_fence_signal(fence);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo->type = ttm_bo_type_device;
|
||||
bo->base.resv = external_resv;
|
||||
|
||||
@ -473,7 +481,7 @@ static void ttm_bo_pin_basic(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
for (int i = 0; i < no_pins; i++) {
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
@ -508,7 +516,7 @@ static void ttm_bo_pin_unpin_resource(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_resource_alloc(bo, place, &res);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -559,7 +567,7 @@ static void ttm_bo_multiple_pin_one_unpin(struct kunit *test)
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
priv->ttm_dev = ttm_dev;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_resource_alloc(bo, place, &res);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
|
@ -51,7 +51,8 @@ EXPORT_SYMBOL_GPL(ttm_device_kunit_init);
|
||||
|
||||
struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
|
||||
struct ttm_test_devices *devs,
|
||||
size_t size)
|
||||
size_t size,
|
||||
struct dma_resv *obj)
|
||||
{
|
||||
struct drm_gem_object gem_obj = { };
|
||||
struct ttm_buffer_object *bo;
|
||||
@ -61,6 +62,10 @@ struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
|
||||
KUNIT_ASSERT_NOT_NULL(test, bo);
|
||||
|
||||
bo->base = gem_obj;
|
||||
|
||||
if (obj)
|
||||
bo->base.resv = obj;
|
||||
|
||||
err = drm_gem_object_init(devs->drm, &bo->base, size);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
|
||||
|
@ -28,7 +28,8 @@ int ttm_device_kunit_init(struct ttm_test_devices *priv,
|
||||
bool use_dma32);
|
||||
struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
|
||||
struct ttm_test_devices *devs,
|
||||
size_t size);
|
||||
size_t size,
|
||||
struct dma_resv *obj);
|
||||
struct ttm_place *ttm_place_kunit_init(struct kunit *test,
|
||||
uint32_t mem_type, uint32_t flags);
|
||||
|
||||
|
@ -57,7 +57,7 @@ static struct ttm_tt *ttm_tt_kunit_init(struct kunit *test,
|
||||
struct ttm_tt *tt;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, priv->devs, size);
|
||||
bo = ttm_bo_kunit_init(test, priv->devs, size, NULL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, bo);
|
||||
priv->mock_bo = bo;
|
||||
|
||||
@ -209,7 +209,7 @@ static void ttm_pool_alloc_basic_dma_addr(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, devs, size);
|
||||
bo = ttm_bo_kunit_init(test, devs, size, NULL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, bo);
|
||||
|
||||
err = ttm_sg_tt_init(tt, bo, 0, caching);
|
||||
|
@ -54,7 +54,7 @@ static void ttm_init_test_mocks(struct kunit *test,
|
||||
/* Make sure we have what we need for a good BO mock */
|
||||
KUNIT_ASSERT_NOT_NULL(test, priv->devs->ttm_dev);
|
||||
|
||||
priv->bo = ttm_bo_kunit_init(test, priv->devs, size);
|
||||
priv->bo = ttm_bo_kunit_init(test, priv->devs, size, NULL);
|
||||
priv->place = ttm_place_kunit_init(test, mem_type, flags);
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ static void ttm_tt_init_basic(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, params->size);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, params->size, NULL);
|
||||
|
||||
err = ttm_tt_init(tt, bo, page_flags, caching, extra_pages);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -89,7 +89,7 @@ static void ttm_tt_init_misaligned(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, size);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, size, NULL);
|
||||
|
||||
/* Make the object size misaligned */
|
||||
bo->base.size += 1;
|
||||
@ -110,7 +110,7 @@ static void ttm_tt_fini_basic(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_tt_init(tt, bo, 0, caching, 0);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -130,7 +130,7 @@ static void ttm_tt_fini_sg(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_sg_tt_init(tt, bo, 0, caching);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -151,7 +151,7 @@ static void ttm_tt_fini_shmem(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_tt_init(tt, bo, 0, caching, 0);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -168,7 +168,7 @@ static void ttm_tt_create_basic(struct kunit *test)
|
||||
struct ttm_buffer_object *bo;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo->type = ttm_bo_type_device;
|
||||
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
@ -187,7 +187,7 @@ static void ttm_tt_create_invalid_bo_type(struct kunit *test)
|
||||
struct ttm_buffer_object *bo;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
bo->type = ttm_bo_type_sg + 1;
|
||||
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
@ -208,7 +208,7 @@ static void ttm_tt_create_ttm_exists(struct kunit *test)
|
||||
tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, tt);
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
err = ttm_tt_init(tt, bo, 0, caching, 0);
|
||||
KUNIT_ASSERT_EQ(test, err, 0);
|
||||
@ -239,7 +239,7 @@ static void ttm_tt_create_failed(struct kunit *test)
|
||||
struct ttm_buffer_object *bo;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
/* Update ttm_device_funcs so we don't alloc ttm_tt */
|
||||
devs->ttm_dev->funcs = &ttm_dev_empty_funcs;
|
||||
@ -257,7 +257,7 @@ static void ttm_tt_destroy_basic(struct kunit *test)
|
||||
struct ttm_buffer_object *bo;
|
||||
int err;
|
||||
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
|
||||
bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE, NULL);
|
||||
|
||||
dma_resv_lock(bo->base.resv, NULL);
|
||||
err = ttm_tt_create(bo, false);
|
||||
|
Loading…
Reference in New Issue
Block a user