dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/17] drm: Introduce Kunit Tests to VC4
@ 2022-11-28 14:53 Maxime Ripard
  2022-11-28 14:53 ` [PATCH v2 01/17] drm/tests: helpers: Move the helper header to include/drm Maxime Ripard
                   ` (17 more replies)
  0 siblings, 18 replies; 39+ messages in thread
From: Maxime Ripard @ 2022-11-28 14:53 UTC (permalink / raw)
  To: Daniel Vetter, Maarten Lankhorst, Maxime Ripard, David Airlie,
	Thomas Zimmermann
  Cc: David Gow, Maíra Canal, Greg Kroah-Hartman, Dave Stevenson,
	Javier Martinez Canillas, dri-devel, linux-kernel, linaro-mm-sig,
	Brendan Higgins, Maxime Ripard, linux-kselftest, kunit-dev,
	linux-media

Hi,

This series introduce Kunit tests to the vc4 KMS driver, but unlike what we
have been doing so far in KMS, it actually tests the atomic modesetting code.

In order to do so, I've had to improve a fair bit on the Kunit helpers already
found in the tree in order to register a full blown and somewhat functional KMS
driver.

It's of course relying on a mock so that we can test it anywhere. The mocking
approach created a number of issues, the main one being that we need to create
a decent mock in the first place, see patch 22. The basic idea is that I
created some structures to provide a decent approximation of the actual
hardware, and that would support both major architectures supported by vc4.

This is of course meant to evolve over time and support more tests, but I've
focused on testing the HVS FIFO assignment code which is fairly tricky (and the
tests have actually revealed one more bug with our current implementation). I
used to have a userspace implementation of those tests, where I would copy and
paste the kernel code and run the tests on a regular basis. It's was obviously
fairly suboptimal, so it seemed like the perfect testbed for that series.

It can be run using:
./tools/testing/kunit/kunit.py run \
        --kunitconfig=drivers/gpu/drm/vc4/tests/.kunitconfig \
        --cross_compile aarch64-linux-gnu- --arch arm64

Let me know what you think,
Maxime

To: David Airlie <airlied@gmail.com>
To: Daniel Vetter <daniel@ffwll.ch>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Maxime Ripard <mripard@kernel.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Maíra Canal <mairacanal@riseup.net>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@google.com>
Cc: linux-kselftest@vger.kernel.org
Cc: kunit-dev@googlegroups.com
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linaro-mm-sig@lists.linaro.org
Signed-off-by: Maxime Ripard <maxime@cerno.tech>

---
Changes in v2:
- Added some documentation for public functions
- Removed the fake device probe/remove workqueue 
- Made sure the tests could be compiled as modules
- Moved the vc4 tests in the vc4 module
- Applied some of the preliminary patches
- Rebased on top of current drm-misc-next branch
- Fixed checkpatch issues
- Introduced BCM2835 (Pi0-3) tests for muxing
- Introduced tests to cover past bugs we had
- Link to v1: https://lore.kernel.org/r/20221123-rpi-kunit-tests-v1-0-051a0bb60a16@cerno.tech

---
Maxime Ripard (17):
      drm/tests: helpers: Move the helper header to include/drm
      drm/tests: helpers: Document drm_kunit_device_init()
      drm/tests: helpers: Rename the device init helper
      drm/tests: helpers: Remove the name parameter
      drm/tests: helpers: Create the device in another function
      drm/tests: helpers: Switch to a platform_device
      drm/tests: helpers: Make sure the device is bound
      drm/tests: helpers: Allow for a custom device struct to be allocated
      drm/tests: helpers: Allow to pass a custom drm_driver
      drm/tests: Add a test for DRM managed actions
      drm/vc4: Move HVS state to main header
      drm/vc4: crtc: Introduce a lower-level crtc init helper
      drm/vc4: crtc: Make encoder lookup helper public
      drm/vc4: hvs: Provide a function to initialize the HVS structure
      drm/vc4: tests: Introduce a mocking infrastructure
      drm/vc4: tests: Fail the current test if we access a register
      drm/vc4: tests: Add unit test suite for the PV muxing

 drivers/gpu/drm/tests/Makefile                  |    1 +
 drivers/gpu/drm/tests/drm_client_modeset_test.c |   19 +-
 drivers/gpu/drm/tests/drm_kunit_helpers.c       |  106 ++-
 drivers/gpu/drm/tests/drm_kunit_helpers.h       |   11 -
 drivers/gpu/drm/tests/drm_managed_test.c        |   71 ++
 drivers/gpu/drm/tests/drm_modes_test.c          |   19 +-
 drivers/gpu/drm/tests/drm_probe_helper_test.c   |   20 +-
 drivers/gpu/drm/vc4/Kconfig                     |   15 +
 drivers/gpu/drm/vc4/Makefile                    |    7 +
 drivers/gpu/drm/vc4/tests/.kunitconfig          |   14 +
 drivers/gpu/drm/vc4/tests/vc4_mock.c            |  200 +++++
 drivers/gpu/drm/vc4/tests/vc4_mock.h            |   63 ++
 drivers/gpu/drm/vc4/tests/vc4_mock_crtc.c       |   41 +
 drivers/gpu/drm/vc4/tests/vc4_mock_output.c     |  138 +++
 drivers/gpu/drm/vc4/tests/vc4_mock_plane.c      |   47 +
 drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c  | 1039 +++++++++++++++++++++++
 drivers/gpu/drm/vc4/vc4_crtc.c                  |  102 ++-
 drivers/gpu/drm/vc4/vc4_dpi.c                   |   13 +-
 drivers/gpu/drm/vc4/vc4_drv.c                   |    4 +-
 drivers/gpu/drm/vc4/vc4_drv.h                   |   91 +-
 drivers/gpu/drm/vc4/vc4_dsi.c                   |    9 +-
 drivers/gpu/drm/vc4/vc4_hdmi_regs.h             |    4 +
 drivers/gpu/drm/vc4/vc4_hvs.c                   |   81 +-
 drivers/gpu/drm/vc4/vc4_kms.c                   |   25 +-
 drivers/gpu/drm/vc4/vc4_txp.c                   |   15 +-
 drivers/gpu/drm/vc4/vc4_vec.c                   |   13 +-
 include/drm/drm_kunit_helpers.h                 |   91 ++
 27 files changed, 2087 insertions(+), 172 deletions(-)
---
base-commit: 199557fab92548f8e9d5207e385097213abe0cab
change-id: 20221123-rpi-kunit-tests-87a388492a73

Best regards,
-- 
Maxime Ripard <maxime@cerno.tech>

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2022-12-01 13:03 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-28 14:53 [PATCH v2 00/17] drm: Introduce Kunit Tests to VC4 Maxime Ripard
2022-11-28 14:53 ` [PATCH v2 01/17] drm/tests: helpers: Move the helper header to include/drm Maxime Ripard
2022-11-30  8:00   ` Javier Martinez Canillas
2022-12-01 10:27     ` Maxime Ripard
2022-12-01 10:38       ` Javier Martinez Canillas
2022-11-28 14:53 ` [PATCH v2 02/17] drm/tests: helpers: Document drm_kunit_device_init() Maxime Ripard
2022-11-28 19:30   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 03/17] drm/tests: helpers: Rename the device init helper Maxime Ripard
2022-11-28 20:36   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 04/17] drm/tests: helpers: Remove the name parameter Maxime Ripard
2022-11-28 19:37   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 05/17] drm/tests: helpers: Create the device in another function Maxime Ripard
2022-11-28 19:48   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 06/17] drm/tests: helpers: Switch to a platform_device Maxime Ripard
2022-11-28 20:01   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 07/17] drm/tests: helpers: Make sure the device is bound Maxime Ripard
2022-11-28 20:09   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 08/17] drm/tests: helpers: Allow for a custom device struct to be allocated Maxime Ripard
2022-11-30  9:13   ` Javier Martinez Canillas
2022-11-28 14:53 ` [PATCH v2 09/17] drm/tests: helpers: Allow to pass a custom drm_driver Maxime Ripard
2022-11-30  9:27   ` Javier Martinez Canillas
2022-11-28 14:53 ` [PATCH v2 10/17] drm/tests: Add a test for DRM managed actions Maxime Ripard
2022-11-28 20:14   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 11/17] drm/vc4: Move HVS state to main header Maxime Ripard
2022-11-28 20:16   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 12/17] drm/vc4: crtc: Introduce a lower-level crtc init helper Maxime Ripard
2022-11-28 20:23   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 13/17] drm/vc4: crtc: Make encoder lookup helper public Maxime Ripard
2022-11-28 20:26   ` Maíra Canal
2022-11-28 14:53 ` [PATCH v2 14/17] drm/vc4: hvs: Provide a function to initialize the HVS structure Maxime Ripard
2022-11-28 14:53 ` [PATCH v2 15/17] drm/vc4: tests: Introduce a mocking infrastructure Maxime Ripard
2022-11-28 20:35   ` Maíra Canal
2022-11-30  9:59   ` Javier Martinez Canillas
2022-12-01 13:03     ` Maxime Ripard
2022-11-28 14:53 ` [PATCH v2 16/17] drm/vc4: tests: Fail the current test if we access a register Maxime Ripard
2022-11-30 10:09   ` Javier Martinez Canillas
2022-11-28 14:53 ` [PATCH v2 17/17] drm/vc4: tests: Add unit test suite for the PV muxing Maxime Ripard
2022-11-30 10:15   ` Javier Martinez Canillas
2022-11-28 20:48 ` [PATCH v2 00/17] drm: Introduce Kunit Tests to VC4 Maíra Canal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).