On 5/15/2025 8:30 PM, Christian König wrote:
Just to exercise the functionality.
Signed-off-by: Christian König <christian.koe...@amd.com>
---
drivers/gpu/drm/scheduler/tests/tests_basic.c | 59 ++++++++++++++++++-
1 file changed, 58 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..abe7370047bd 100644
--- a/drivers/gpu/drm/scheduler/tests/tests_basic.c
+++ b/drivers/gpu/drm/scheduler/tests/tests_basic.c
@@ -469,8 +469,65 @@ 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;
+ u32 id1, id2;
+ 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_slot(&job->base, &id1);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ ret = drm_sched_job_prealloc_dependency_slot(&job->base, &id2);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ KUNIT_ASSERT_NE(test, id1, id2);
+
+ drm_sched_job_add_prealloc_dep(&job->base, id1, dma_fence_get(stub));
+ drm_sched_job_add_prealloc_dep(&job->base, id2, dma_fence_get(stub));
+
+ 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);
it is necessary to release/free the job "drm_mock_sched_job_free(job)".
Regards,
Arvind
+}
+
+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);