[PATCH v3 00/20] drm: Introduce Kunit Tests to VC4
Maxime Ripard
maxime at cerno.tech
Thu Dec 1 15:11:31 UTC 2022
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 at gmail.com>
To: Daniel Vetter <daniel at ffwll.ch>
To: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
To: Maxime Ripard <mripard at kernel.org>
To: Thomas Zimmermann <tzimmermann at suse.de>
Cc: Dave Stevenson <dave.stevenson at raspberrypi.com>
Cc: Javier Martinez Canillas <javierm at redhat.com>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Maíra Canal <mairacanal at riseup.net>
Cc: Brendan Higgins <brendan.higgins at linux.dev>
Cc: David Gow <davidgow at google.com>
Cc: linux-kselftest at vger.kernel.org
Cc: kunit-dev at googlegroups.com
Cc: dri-devel at lists.freedesktop.org
Cc: linux-kernel at vger.kernel.org
Cc: linux-media at vger.kernel.org
Cc: linaro-mm-sig at lists.linaro.org
Signed-off-by: Maxime Ripard <maxime at cerno.tech>
---
Changes in v3:
- Add a Kconfig option for the KUnit helpers
- Switch to EXPORT_SYMBOL_GPL for the helpers
- Add some documentation on how to run the tests
- Add some documentation for __vc4_crtc_init
- Fix KUnit casing
- Link to v2: https://lore.kernel.org/r/20221123-rpi-kunit-tests-v2-0-efe5ed518b63@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 (20):
drm/tests: helpers: Move the helper header to include/drm
drm/tests: Introduce a config option for the KUnit helpers
drm/tests: helpers: Document drm_kunit_device_init()
drm/tests: helpers: Switch to EXPORT_SYMBOL_GPL
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
Documentation: gpu: vc4: Add KUnit Tests Section
Documentation/gpu/vc4.rst | 16 +
drivers/gpu/drm/Kconfig | 7 +
drivers/gpu/drm/Makefile | 2 +-
drivers/gpu/drm/tests/Makefile | 5 +-
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 | 16 +
drivers/gpu/drm/vc4/Makefile | 7 +
drivers/gpu/drm/vc4/tests/.kunitconfig | 13 +
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 | 120 ++-
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 ++
30 files changed, 2132 insertions(+), 174 deletions(-)
---
base-commit: 199557fab92548f8e9d5207e385097213abe0cab
change-id: 20221123-rpi-kunit-tests-87a388492a73
Best regards,
--
Maxime Ripard <maxime at cerno.tech>
More information about the dri-devel
mailing list