[PATCH 3/4] drm/sched: Add a test for prealloced fence slots
Christian König
ckoenig.leichtzumerken at gmail.com
Thu May 22 13:41:16 UTC 2025
Just to exercise the functionality.
Signed-off-by: Christian König <christian.koenig at amd.com>
---
drivers/gpu/drm/scheduler/tests/tests_basic.c | 56 ++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/scheduler/tests/tests_basic.c b/drivers/gpu/drm/scheduler/tests/tests_basic.c
index 7230057e0594..00dcee298100 100644
--- a/drivers/gpu/drm/scheduler/tests/tests_basic.c
+++ b/drivers/gpu/drm/scheduler/tests/tests_basic.c
@@ -469,8 +469,62 @@ static struct kunit_suite drm_sched_credits = {
.test_cases = drm_sched_credits_tests,
};
+static void drm_sched_test_prealloc(struct kunit *test)
+{
+ struct dma_fence *stub = dma_fence_get_stub();
+ struct drm_mock_sched_entity *entity;
+ struct drm_mock_scheduler *sched;
+ struct drm_mock_sched_job *job;
+ bool done;
+ int ret;
+
+ /*
+ * Check if preallocation of dependency slots work
+ */
+
+ sched = drm_mock_sched_new(test, MAX_SCHEDULE_TIMEOUT);
+
+ entity = drm_mock_sched_entity_new(test,
+ DRM_SCHED_PRIORITY_NORMAL,
+ sched);
+
+ job = drm_mock_sched_job_new(test, entity);
+
+ ret = drm_sched_job_add_dependency(&job->base, dma_fence_get(stub));
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ ret = drm_sched_job_prealloc_dependency_slots(&job->base, 2);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ ret = drm_sched_job_add_dependency(&job->base, dma_fence_get(stub));
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ ret = drm_sched_job_add_dependency(&job->base, dma_fence_get(stub));
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ drm_mock_sched_job_submit(job);
+
+ done = drm_mock_sched_job_wait_scheduled(job, HZ);
+ KUNIT_ASSERT_TRUE(test, done);
+
+ drm_mock_sched_entity_free(entity);
+ drm_mock_sched_fini(sched);
+ dma_fence_put(stub);
+}
+
+static struct kunit_case drm_sched_prealloc_tests[] = {
+ KUNIT_CASE(drm_sched_test_prealloc),
+ {}
+};
+
+static struct kunit_suite drm_sched_prealloc = {
+ .name = "drm_sched_basic_prealloc_tests",
+ .test_cases = drm_sched_prealloc_tests,
+};
+
kunit_test_suites(&drm_sched_basic,
&drm_sched_timeout,
&drm_sched_priority,
&drm_sched_modify_sched,
- &drm_sched_credits);
+ &drm_sched_credits,
+ &drm_sched_prealloc);
--
2.34.1
More information about the amd-gfx
mailing list