drm/sched: Add scheduler unit testing infrastructure and some basic tests

Implement a mock scheduler backend and add some basic test to exercise the
core scheduler code paths.

Mock backend (kind of like a very simple mock GPU) can either process jobs
by tests manually advancing the "timeline" job at a time, or alternatively
jobs can be configured with a time duration in which case they get
completed asynchronously from the unit test code.

Core scheduler classes are subclassed to support this mock implementation.

The tests added are just a few simple submission patterns.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Suggested-by: Philipp Stanner <phasta@kernel.org>
Cc: Christian König <christian.koenig@amd.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Philipp Stanner <phasta@kernel.org>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250324092633.49746-3-tvrtko.ursulin@igalia.com
This commit is contained in:
Tvrtko Ursulin
2025-03-24 09:26:29 +00:00
committed by Philipp Stanner
parent 8e623137f1
commit 5a99350794
7 changed files with 809 additions and 0 deletions

View File

@@ -100,5 +100,17 @@ config DRM_TTM_KUNIT_TEST
If in doubt, say "N".
config DRM_SCHED_KUNIT_TEST
tristate "KUnit tests for the DRM scheduler" if !KUNIT_ALL_TESTS
select DRM_SCHED
depends on DRM && KUNIT
default KUNIT_ALL_TESTS
help
Choose this option to build unit tests for the DRM scheduler.
Recommended for driver developers only.
If in doubt, say "N".
config DRM_EXPORT_FOR_TESTS
bool