[PATCH v4 00/37] VKMS: Introduce multiple configFS attributes

Louis Chauvet
2026-04-22T16:48:52Z

VKMS have a wide range of options. The aim of this series is to introduce
many configfs attribute so VKMS can be used to test a wide range of
configurations.

PATCH 1-5 are to expose human readable strings from drm core
PATCH 6 is a fix for rotation value
PATCH 7 is ABI documentation
PATCH 8 added some error checks in plane configuration
PATCH 9 cleanup in plane_release
PATCH 10-12 change the display in configfs to be more readable
PATCH 13,14 plane name
PATCH 15,16 plane rotation
PATCH 17,18 plane color encoding
PATCH 19,20 plane color range
PATCH 21,22 plane format
PATCH 23 properly use zpos
PATCH 24,25 plane zpos
PATCH 26,27 connector type
PATCH 28 preparation in connector initialization
PATCH 29,30 connector supported colorspace
PATCH 31,32 connector EDID
PATCH 33-35 dynamic connectors
PATCH 36-37 PATH property

PS: Each pair of config/configfs patch are independant. I could
technically create ≈10 different series, but there will be a lot of
(trivial) conflicts between them. I will be happy to reordoer, split and
partially apply this series to help the review process.

Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
---
Changes in v4:
- Introduced a way to change the PATH property
- Reordered drm-only patches to the front of the series.
- Fixed a bug when dynamic connector are allocated/freed (drmm instead of
kzalloc)
- Properly handle errors in vkms_connector_init
- Only parse formats one by one (no more complex algorithm, you will have
to write multiple times for multiple formats)
- Use sysfs_emit instead of sprintf
- Fix rotate property default value
- Link to v3: https://lore.kernel.org/r/20251222-vkms-all-config-v3-0-ba42dc3fb9ff@bootlin.com

Changes in v3:
- Added Documentation/ABI (Thomas Petazzoni)
- PATCH 2: Clarify return value
- PATCH 6,7: Avoid passing null to printf
- PATCH 7: Restrict plane name to A-Za-z0-9
- PATCH 12: Fix missing s
- PATCH 13: Add macro to avoid repetition, fix missing s, make code
consistent, remove wrong comment, properly check bit values
- PATCH 15: Fix missing s
- PATCH 16: Fix missing s, make code consistent, remove wrong comments,
properly check value and fix default_color_range value
- PATCH 17: Create function to reduce code complexity, fix missing s
- PATCH 18: Fix parsing, rename data, reject strings > 4 chars
- PATCH 20: Remove duplicated lines, fix test comments simplify conditions,
remove useless documentation,
- PATCH 21: {Min,Max}imal -> {Min,Max}imum, simplify commit log
- PATCH 25: Fix wrong comment
- PATCH 26: Rename type to colorspaces
- PATCH 27: Improve comment, avoid useless iterations
- PATCH 28: Fix typo in commit log
- PATCH 29: Fix typo in commit log
- PATCH 30: Remove useless include and move it to proper commit
- PATCH 32: Clarify documentation
- PATCH 33: Simplify code and use better variable names
- PATCH *: Fix EINVAL/EBUSY
- Link to v2: https://lore.kernel.org/r/20251029-vkms-all-config-v2-0-be20b9bf146e@bootlin.com

Changes in v2:
- PATCH 1: reorder includes (José)
- PATCH 2: use name property instead of folder name (José)
- PATCH 3: Fix default rotations (José)
- PATCH 3,5,7,12: Add tests and extract validation for planes (José)
- PATCH 3,5: Do not create color range/encoding properties if not set
- PATCH 5,6,7,8: Set plural form for vkms_config_plane fields (José)
- PATCH 4,6,8,13: Remove checking for default in supported (José)
- PATCH 9: Add break in vkms_config_plane_add_format (José)
- PATCH 12: fix zpos_enabled typo (José)
- PATCH 13: fix documentation (José)
- Add debug display (José)
- PATCH 20: use drmm_kzalloc instead of kzalloc (José)
- PATCH 22: simplify the code (José)
- Link to v1: https://lore.kernel.org/r/20251018-vkms-all-config-v1-0-a7760755d92d@bootlin.com

To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Maxime Ripard <mripard@kernel.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
To: David Airlie <airlied@gmail.com>
To: Simona Vetter <simona@ffwll.ch>
To: Louis Chauvet <louis.chauvet@bootlin.com>
To: Haneen Mohammed <hamohammed.sa@gmail.com>
To: Melissa Wen <melissa.srw@gmail.com>
To: Jonathan Corbet <corbet@lwn.net>
To: Shuah Khan <skhan@linuxfoundation.org>
To: Miguel Ojeda <ojeda@kernel.org>
To: Nathan Chancellor <nathan@kernel.org>
To: Nick Desaulniers <nick.desaulniers+lkml@gmail.com>
To: Bill Wendling <morbo@google.com>
To: Justin Stitt <justinstitt@google.com>
Cc: thomas.petazzoni@bootlin.com
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: llvm@lists.linux.dev

---
Louis Chauvet (37):
drm/drm_mode_config: Add helper to get plane type name
drm/blend: Get a rotation name from it's bitfield
drm/drm_color_mgmt: Expose drm_get_color_encoding_name
drm/drm_color_mgmt: Expose drm_get_color_range_name
drm/connector: Export drm_get_colorspace_name
drm/drm_atomic_state_helper: Properly load default value for rotation
Documentation: ABI: vkms: Add current VKMS ABI documentation
drm/vkms: Add error handling in plane config creation
drm/vkms: Simplify plane_release code
drm/vkms: Explicitly display plane type
drm/vkms: Use enabled/disabled instead of 1/0 for debug
drm/vkms: Explicitly display connector status
drm/vkms: Introduce config for plane name
drm/vkms: Introduce configfs for plane name
drm/vkms: Introduce config for plane rotation
drm/vkms: Introduce configfs for plane rotation
drm/vkms: Introduce config for plane color encoding
drm/vkms: Introduce configfs for plane color encoding
drm/vkms: Introduce config for plane color range
drm/vkms: Introduce configfs for plane color range
drm/vkms: Introduce config for plane format
drm/vkms: Introduce configfs for plane format
drm/vkms: Properly render plane using their zpos
drm/vkms: Introduce config for plane zpos property
drm/vkms: Introduce configfs for plane zpos property
drm/vkms: Introduce config for connector type
drm/vkms: Introduce configfs for connector type
drm/vkms: Rename vkms_connector_init to vkms_connector_init_static
drm/vkms: Introduce config for connector supported colorspace
drm/vkms: Introduce configfs for connector supported colorspace
drm/vkms: Introduce config for connector EDID
drm/vkms: Introduce configfs for connector EDID
drm/vkms: Store the enabled/disabled status for connector
drm/vkms: Allow to hot-add connectors
drm/vkms: Introduce configfs for dynamic connector creation
drm/vkms: Add connector parent configuration in vkms_config
drm/vkms: Add ConfigFS interface for connector parent and port_id

.clang-format | 2 +
Documentation/ABI/testing/configfs-vkms | 256 ++++
Documentation/gpu/vkms.rst | 45 +-
drivers/gpu/drm/drm_atomic_state_helper.c | 6 +
drivers/gpu/drm/drm_blend.c | 35 +-
drivers/gpu/drm/drm_color_mgmt.c | 4 +-
drivers/gpu/drm/drm_connector.c | 1 +
drivers/gpu/drm/drm_crtc_internal.h | 6 -
drivers/gpu/drm/drm_mode_config.c | 16 +
drivers/gpu/drm/vkms/tests/Makefile | 3 +-
drivers/gpu/drm/vkms/tests/vkms_config_test.c | 513 +++++++-
drivers/gpu/drm/vkms/tests/vkms_configfs_test.c | 102 ++
drivers/gpu/drm/vkms/vkms_config.c | 425 ++++++-
drivers/gpu/drm/vkms/vkms_config.h | 640 +++++++++-
drivers/gpu/drm/vkms/vkms_configfs.c | 1444 +++++++++++++++++++----
drivers/gpu/drm/vkms/vkms_configfs.h | 4 +
drivers/gpu/drm/vkms/vkms_connector.c | 266 ++++-
drivers/gpu/drm/vkms/vkms_connector.h | 48 +-
drivers/gpu/drm/vkms/vkms_crtc.c | 10 +-
drivers/gpu/drm/vkms/vkms_output.c | 15 +-
drivers/gpu/drm/vkms/vkms_plane.c | 73 +-
include/drm/drm_blend.h | 2 +
include/drm/drm_color_mgmt.h | 3 +
include/drm/drm_mode_config.h | 3 +
24 files changed, 3623 insertions(+), 299 deletions(-)
---
base-commit: 8711eb2dde2ed44c98714b875dcf7329950c71ba
change-id: 20251017-vkms-all-config-bd0c2a01846f

Best regards,
--
Louis Chauvet <louis.chauvet@bootlin.com>