Unverified Commit d1386d72 authored by Louis Chauvet's avatar Louis Chauvet Committed by Maxime Ripard
Browse files

drm/vkms: Add a validation function for VKMS configuration



As the configuration will be used by userspace, add a validator to avoid
creating a broken DRM device.

For the moment, the function always returns true, but rules will be
added in future patches.

Reviewed-by: default avatarLouis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: default avatarLouis Chauvet <louis.chauvet@bootlin.com>
Co-developed-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
Signed-off-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250218101214.5790-8-jose.exposito89@gmail.com


Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
parent 969a3a4e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ static void vkms_config_test_default_config(struct kunit *test)
	KUNIT_EXPECT_EQ(test, config->writeback, params->enable_writeback);
	KUNIT_EXPECT_EQ(test, config->overlay, params->enable_overlay);

	KUNIT_EXPECT_TRUE(test, vkms_config_is_valid(config));

	vkms_config_destroy(config);
}

+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,12 @@ void vkms_config_destroy(struct vkms_config *config)
}
EXPORT_SYMBOL_IF_KUNIT(vkms_config_destroy);

bool vkms_config_is_valid(const struct vkms_config *config)
{
	return true;
}
EXPORT_SYMBOL_IF_KUNIT(vkms_config_is_valid);

static int vkms_config_show(struct seq_file *m, void *data)
{
	struct drm_debugfs_entry *entry = m->private;
+10 −0
Original line number Diff line number Diff line
@@ -67,6 +67,16 @@ vkms_config_get_device_name(struct vkms_config *config)
	return config->dev_name;
}

/**
 * vkms_config_is_valid() - Validate a configuration
 * @config: Configuration to validate
 *
 * Returns:
 * Whether the configuration is valid or not.
 * For example, a configuration without primary planes is not valid.
 */
bool vkms_config_is_valid(const struct vkms_config *config);

/**
 * vkms_config_register_debugfs() - Register a debugfs file to show the device's
 * configuration
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@ int vkms_output_init(struct vkms_device *vkmsdev)
	int writeback;
	unsigned int n;

	if (!vkms_config_is_valid(vkmsdev->config))
		return -EINVAL;

	/*
	 * Initialize used plane. One primary plane is required to perform the composition.
	 *