Re: [RFC 0/5] DRM scheduler kunit tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxx>
> Cc: Danilo Krummrich <dakr@xxxxxxxxxx>
> Cc: Matthew Brost <matthew.brost@xxxxxxxxx>
> Cc: Philipp Stanner <phasta@xxxxxxxxxx>
> 
> 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
> 





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux