VKMS is manly used to test userspace program and its behavior. The current implementation is not very configurable as you can only have one device, with few specific planes. This series aims to introduce a new interface, using ConfigFS, to create and configure more devices. This will introduce: - Device creation - Plane creation - Plane configuration (type, color encoding, color range, rotations) - Encoder creation - CRTC creation - Linking between CRTC and planes/encoders The proposition is: /config/vkms DEVICE_1 ┣━ enable ┣━ writeback ┣━ planes ┃ ┣━ PLANE_1 ┃ ┃ ┣━ type ┃ ┃ ┣━ supported_rotations ┃ ┃ ┣━ default_rotations ┃ ┃ ┣━ supported_formats ┃ ┃ ┗━ possible_crtcs ┃ ┃ ┗━ >> /config/vkms/DEVICE_1/crtc/CRTC_1 ┃ ┣━ PLANE_2 ┃ ┃ ┗━ ditto ┃ ┗━ PLANE_3 ┃ ┗━ ditto ┃ ┣━ encoders ┃ ┣━ ENCODER_1 ┃ ┃ ┗━ possible_crtcs ┃ ┃ ┗━ >> /config/vkms/DEVICE_1/crtc/CRTC_1 ┃ ┗━ ENCODER_2 ┃ ┗━ ditto ┃ ┗━ crtc ┗━ CRTC_1 This interface aims to be extendable (new property can easly be added in objects) and easy to use (objects are created simply by creating folders, and configured by writing files). This series depends on https://lore.kernel.org/all/20250121-google-remove-crtc-index-from-parameter-v3-0-cac00a3c3544@xxxxxxxxxxx/ Signed-off-by: Louis Chauvet <louis.chauvet@xxxxxxxxxxx> --- Changes in v3: - Rebased on drm-misc-next and https://lore.kernel.org/all/20250121-google-remove-crtc-index-from-parameter-v3-0-cac00a3c3544@xxxxxxxxxxx/ - Remove color encoding and color range configuration - Link to v2: https://lore.kernel.org/r/20241122-google-config-fs-v2-0-4b7e6f183320@xxxxxxxxxxx Changes in v2: - Added many new configuration (mainly connector) - Link to v1: https://lore.kernel.org/r/20240814-google-config-fs-v1-0-8363181907a6@xxxxxxxxxxx --- Louis Chauvet (14): drm/vkms: Add vkms_delete/create_device helper drm/vkms: Cleanup configuration field on device destroy drm/vkms: Introduce ConfigFS interface drm/vkms: Introduce configfs for plane drm/vkms: Introduce configfs for plane rotation drm/vkms: Introduce configfs for crtc and encoder drm/vkms: Introduce configfs for connectors drm/vkms: Introduce configfs for connector type drm/vkms: Introduce configfs for plane format drm/vkms: Introduce configfs for device name drm/vkms: Introduce configfs for connector status drm/vkms: Introduce configfs for connector id drm/vkms: Introduce configfs for connector EDID drm/vkms: Introduce configfs for encoder type drivers/gpu/drm/vkms/Kconfig | 1 + drivers/gpu/drm/vkms/Makefile | 1 + drivers/gpu/drm/vkms/vkms_config.c | 36 + drivers/gpu/drm/vkms/vkms_config.h | 6 +- drivers/gpu/drm/vkms/vkms_configfs.c | 1194 ++++++++++++++++++++++++++++++++++ drivers/gpu/drm/vkms/vkms_configfs.h | 128 ++++ drivers/gpu/drm/vkms/vkms_drv.c | 21 +- drivers/gpu/drm/vkms/vkms_drv.h | 3 + 8 files changed, 1384 insertions(+), 6 deletions(-) --- base-commit: 49a167c393b0ceb592b9d2e65cc4f46bcc707108 change-id: 20240521-google-config-fs-b935b66b8d7b prerequisite-message-id: 20250121-google-remove-crtc-index-from-parameter-v3-0-cac00a3c3544@xxxxxxxxxxx prerequisite-patch-id: f4e26c103417f44bb47682d43e6550299e58b857 prerequisite-patch-id: aefc656e8bc9edfd5527971231b7db23b416a19a prerequisite-patch-id: 5d4cef18db0f817bc0e9074987c725a9b7739ab0 prerequisite-patch-id: a74401787cc57fd29164dcea46aca9cee3ac50f8 prerequisite-patch-id: f0d5640738b5947ab84272c458a2f729a611ab0f prerequisite-patch-id: 91ba55d575e4d85500c713079455b112695abecc prerequisite-patch-id: d8210f842130e4d0b47ef25b4aa1ec41a7e53db3 prerequisite-patch-id: 83a4752516471b5152d5e2cb6b56d7ecaae70f66 prerequisite-patch-id: 5b6aaa13b3e61cee85de8739cc9fa9f0d86e4ac0 prerequisite-patch-id: a65a919c52e47b81af3adaf660f18b4a6f107492 prerequisite-patch-id: d85cd3d48810fa53bda9e97928249c1899898b24 prerequisite-patch-id: c47a619ac3b9b244375776aa03b6c19c32108cca prerequisite-patch-id: ef3b0b41bcf9e770319b72d866cef880088bdff0 prerequisite-patch-id: d1d7c3323f1a0690f94220e9eb9cc4d6a28df112 prerequisite-patch-id: c87e20092e0a2f6d657837dbf1611b9dbf100b2c prerequisite-patch-id: c12f46d01d578587d93d20e9d987394ab63a65ab Best regards, -- Louis Chauvet <louis.chauvet@xxxxxxxxxxx>