From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 328F838C2DF for ; Wed, 22 Apr 2026 16:49:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876570; cv=none; b=UFA9ngsaCuvX5jI2vv4MOtgnb/j8OZM+g8E85QJw8YBQWHgcIm8Xtjk7h17OFcxaBkoeuQkwI9s28Zv9x+KDTjFBGwSfjQAcF5fbL4uQc5x7S3I2UC/UGRbOIY5yF6CQLKTi+z/L9LSA5gQ8vVq9fVCpkv9zSGFC81Fr+A0nK0Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876570; c=relaxed/simple; bh=II7j/pgXB6DwKJE19WAHYWwsrow1k46rUMhsWQ9wxPU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aZP2/sdil23kb3o4tQKVVA5DC1gg7hasWN09pFoa49m9TRUFsmPY/HvBn6Bx7zRuE6f8+2boKfxAa+SZeEX9KkYIW2yHsFEXCsMHzg0+2vUEkgtwwX/6zcAWA5LeNj2gQxFz278uZ5veQgQXJ/Wt9wQmXEnzcweUPkbVwgdDjgE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=k2kh0ldD; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="k2kh0ldD" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id E05D74E42AC0; Wed, 22 Apr 2026 16:49:27 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id A46B65FA8F; Wed, 22 Apr 2026 16:49:27 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 17B6C104609C6; Wed, 22 Apr 2026 18:49:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1776876566; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=BzxwxLxYZcDpfoFGoKi6treapFHs3jwvAzPXYMKJp44=; b=k2kh0ldDpYfUWkci3fTHH8KTLls9TvWOtvBmHjv/9Ye6AKeJfjY4To7F2OdRRniaisJmTm 113ROE5OqGC7RTGkUFR++Yh2EOPbSg3Z2fRrOdwO1uMvBGCEKjOXWAnY3NXKTMich3ya2X QXN1cokTFMVjHfVzhiGKNlDOjNZyMTe/sOXsr8nMOjg4EjUaceGCRI6bS0p4F9a+VSKe/E clKpRSGIATyveqnyt6bwYc4+P8RHzc+QsfEY7myboTcPmBcKZn5oJkD5GbnekvjSHsWHf6 3gV9H2FgFX//3wuOcyKlsq70lQe8XKrgNCpWhzhcUV2QkayfI//8cLwwRkySYQ== From: Louis Chauvet Date: Wed, 22 Apr 2026 18:48:10 +0200 Subject: [PATCH v4 13/37] drm/vkms: Introduce config for plane name Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260422-vkms-all-config-v4-13-dbb52e9aadc3@bootlin.com> References: <20260422-vkms-all-config-v4-0-dbb52e9aadc3@bootlin.com> In-Reply-To: <20260422-vkms-all-config-v4-0-dbb52e9aadc3@bootlin.com> To: Haneen Mohammed , Simona Vetter , Melissa Wen , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , jose.exposito89@gmail.com, Jonathan Corbet , Shuah Khan , Miguel Ojeda , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: victoria@system76.com, sebastian.wick@redhat.com, victoria@system76.com, airlied@gmail.com, thomas.petazzoni@bootlin.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Louis Chauvet , llvm@lists.linux.dev X-Mailer: b4 0.16-dev X-Last-TLS-Session-Version: TLSv1.3 As planes can have a name in DRM, prepare VKMS to configure it using ConfigFS. Signed-off-by: Louis Chauvet --- drivers/gpu/drm/vkms/vkms_config.c | 11 +++++++++++ drivers/gpu/drm/vkms/vkms_config.h | 33 +++++++++++++++++++++++++++++++++ drivers/gpu/drm/vkms/vkms_plane.c | 3 ++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vkms/vkms_config.c b/drivers/gpu/drm/vkms/vkms_config.c index 9071d6864d52..9dcac8af8d03 100644 --- a/drivers/gpu/drm/vkms/vkms_config.c +++ b/drivers/gpu/drm/vkms/vkms_config.c @@ -356,6 +356,9 @@ static int vkms_config_show(struct seq_file *m, void *data) seq_puts(m, "plane:\n"); seq_printf(m, "\ttype=%s\n", drm_get_plane_type_name(vkms_config_plane_get_type(plane_cfg))); + seq_printf(m, "\tname=%s\n", + vkms_config_plane_get_name(plane_cfg) ? + vkms_config_plane_get_name(plane_cfg) : "(null)"); } vkms_config_for_each_crtc(vkmsdev->config, crtc_cfg) { @@ -400,12 +403,19 @@ struct vkms_config_plane __must_check *vkms_config_create_plane(struct vkms_conf plane_cfg->config = config; plane_cfg->default_pipeline = false; vkms_config_plane_set_type(plane_cfg, DRM_PLANE_TYPE_OVERLAY); + + ret = vkms_config_plane_set_name(plane_cfg, NULL); + if (ret) + goto cleanup_plane_cfg; + xa_init_flags(&plane_cfg->possible_crtcs, XA_FLAGS_ALLOC); list_add_tail(&plane_cfg->link, &config->planes); return plane_cfg; +cleanup_plane_cfg: + kfree(plane_cfg); fail: return ERR_PTR(ret); } @@ -415,6 +425,7 @@ void vkms_config_destroy_plane(struct vkms_config_plane *plane_cfg) { xa_destroy(&plane_cfg->possible_crtcs); list_del(&plane_cfg->link); + kfree_const(plane_cfg->name); kfree(plane_cfg); } EXPORT_SYMBOL_IF_KUNIT(vkms_config_destroy_plane); diff --git a/drivers/gpu/drm/vkms/vkms_config.h b/drivers/gpu/drm/vkms/vkms_config.h index 8f7f286a4bdd..6fd921074203 100644 --- a/drivers/gpu/drm/vkms/vkms_config.h +++ b/drivers/gpu/drm/vkms/vkms_config.h @@ -35,6 +35,7 @@ struct vkms_config { * * @link: Link to the others planes in vkms_config * @config: The vkms_config this plane belongs to + * @name: Name of the plane * @type: Type of the plane. The creator of configuration needs to ensures that * at least one primary plane is present. * @possible_crtcs: Array of CRTCs that can be used with this plane @@ -47,6 +48,7 @@ struct vkms_config_plane { struct list_head link; struct vkms_config *config; + const char *name; enum drm_plane_type type; struct xarray possible_crtcs; bool default_pipeline; @@ -314,6 +316,37 @@ vkms_config_plane_set_default_pipeline(struct vkms_config_plane *plane_cfg, plane_cfg->default_pipeline = default_pipeline; } +/** + * vkms_config_plane_set_name() - Set the plane name + * @plane_cfg: Plane to set the name to + * @name: New plane name. The name is copied. + * + * Returns: -ENOMEM if the memory allocation failed, 0 in case of success + */ +static inline int __must_check +vkms_config_plane_set_name(struct vkms_config_plane *plane_cfg, + const char *name) +{ + if (plane_cfg->name) + kfree_const(plane_cfg->name); + plane_cfg->name = kstrdup_const(name, GFP_KERNEL); + + if (name && !plane_cfg->name) + return -ENOMEM; + + return 0; +} + +/** + * vkms_config_plane_get_name - Get the plane name + * @plane_cfg: Plane to get the name from + */ +static inline const char * +vkms_config_plane_get_name(const struct vkms_config_plane *plane_cfg) +{ + return plane_cfg->name; +} + /** * vkms_config_plane_attach_crtc - Attach a plane to a CRTC * @plane_cfg: Plane to attach diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c index ca7aee101a95..71650c5c7b38 100644 --- a/drivers/gpu/drm/vkms/vkms_plane.c +++ b/drivers/gpu/drm/vkms/vkms_plane.c @@ -11,6 +11,7 @@ #include #include +#include "vkms_config.h" #include "vkms_drv.h" #include "vkms_formats.h" @@ -228,7 +229,7 @@ struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev, &vkms_plane_funcs, vkms_formats, ARRAY_SIZE(vkms_formats), NULL, vkms_config_plane_get_type(plane_cfg), - NULL); + vkms_config_plane_get_name(plane_cfg)); if (IS_ERR(plane)) return plane; -- 2.54.0