[RFC 0/5] DRM scheduler kunit tests
Philipp Stanner
phasta at mailbox.org
Thu Feb 6 09:12:54 UTC 2025
On Mon, 2025-02-03 at 15:30 +0000, Tvrtko Ursulin wrote:
> There has repeatedly been quite a bit of apprehension when any change
> to the DRM
> scheduler is proposed, with two main reasons being code base is
> considered
> fragile, not well understood and not very well documented, and
> secondly the lack
> of systematic testing outside the vendor specific tests suites and/or
> test
> farms.
>
> This RFC is an attempt to dislodge this status quo by adding some
> unit tests
> using the kunit framework.
>
> General approach is that there is a mock "hardware" backend which can
> be
> controlled from tests, which in turn allows exercising various
> scheduler code
> paths.
>
> I am sending this early as an RFC so we can get alignment on the
> general idea
> and high level approach. Once past that point we can polish and then
> hopefully
> people can go crazy and start adding more advanced tests, testing
> corner cases
> and what not.
>
> Only some simple basic tests get added in the series and hopefully it
> is easy to
> understand what tests are doing.
>
> My usage of the kunit framework may not be perfect though, since this
> series is
> my first attempt to use it.
>
> An obligatory "screenshot" for reference:
>
> [15:16:33] ============ drm_sched_basic_tests (6 subtests)
> ============
> [15:16:33] [PASSED] drm_sched_basic_submit
> [15:16:33] [PASSED] drm_sched_basic_queue
> [15:16:34] [PASSED] drm_sched_basic_chain
> [15:16:34] [PASSED] drm_sched_basic_entities
> [15:16:34] [PASSED] drm_sched_basic_entities_chain
> [15:16:34] [PASSED] drm_sched_basic_entity_cleanup
> [15:16:34] ============== [PASSED] drm_sched_basic_tests
> ==============
> [15:16:34] ========== drm_sched_basic_tdr_tests (1 subtest)
> ===========
> [15:16:36] [PASSED] drm_sched_basic_tdr
> [15:16:36] ============ [PASSED] drm_sched_basic_tdr_tests
> ============
> [15:16:36] ======= drm_sched_basic_priority_tests (2 subtests)
> ========
> [15:16:37] [PASSED] drm_sched_priorities
> [15:16:37] [PASSED] drm_sched_change_priority
> [15:16:37] ========= [PASSED] drm_sched_basic_priority_tests
> ==========
> [15:16:37] ====== drm_sched_basic_modify_sched_tests (1 subtest)
> ======
> [15:16:39] [PASSED] drm_sched_test_modify_sched
> [15:16:39] ======= [PASSED] drm_sched_basic_modify_sched_tests
> ========
> [15:16:39]
> ============================================================
> [15:16:39] Testing complete. Ran 10 tests: passed: 10
> [15:16:39] Elapsed time: 13.442s total, 0.001s configuring, 4.117s
> building, 9.248s running
Thanks for working on this – as Christian said, this is really needed.
I took a first look and don't see any big obstacles right now. I'll
apply some comments at the places so you have some early feedback
already
Thx,
P.
>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Danilo Krummrich <dakr at kernel.org>
> Cc: Matthew Brost <matthew.brost at intel.com>
> Cc: Philipp Stanner <phasta at kernel.org>
>
> Tvrtko Ursulin (5):
> drm: Move some options to separate new Kconfig.debug
> drm/scheduler: Add scheduler unit testing infrastructure and some
> basic tests
> drm/scheduler: Add a simple TDR test
> drm/scheduler: Add basic priority tests
> drm/scheduler: Add a basic test for modifying entities scheduler
> list
>
> drivers/gpu/drm/Kconfig | 98 +---
> drivers/gpu/drm/Kconfig.debug | 104 ++++
> drivers/gpu/drm/scheduler/.kunitconfig | 12 +
> drivers/gpu/drm/scheduler/Makefile | 1 +
> drivers/gpu/drm/scheduler/tests/Makefile | 4 +
> .../gpu/drm/scheduler/tests/drm_mock_entity.c | 29 ++
> .../gpu/drm/scheduler/tests/drm_mock_job.c | 3 +
> .../drm/scheduler/tests/drm_mock_scheduler.c | 260 ++++++++++
> .../gpu/drm/scheduler/tests/drm_sched_tests.h | 128 +++++
> .../scheduler/tests/drm_sched_tests_basic.c | 464
> ++++++++++++++++++
> 10 files changed, 1010 insertions(+), 93 deletions(-)
> create mode 100644 drivers/gpu/drm/Kconfig.debug
> create mode 100644 drivers/gpu/drm/scheduler/.kunitconfig
> create mode 100644 drivers/gpu/drm/scheduler/tests/Makefile
> create mode 100644 drivers/gpu/drm/scheduler/tests/drm_mock_entity.c
> create mode 100644 drivers/gpu/drm/scheduler/tests/drm_mock_job.c
> create mode 100644
> drivers/gpu/drm/scheduler/tests/drm_mock_scheduler.c
> create mode 100644 drivers/gpu/drm/scheduler/tests/drm_sched_tests.h
> create mode 100644
> drivers/gpu/drm/scheduler/tests/drm_sched_tests_basic.c
>
More information about the dri-devel
mailing list