Commit 530897ec authored by Cristian Marussi's avatar Cristian Marussi Committed by Sudeep Holla
Browse files

firmware: arm_scmi: Make virtio Version_1 compliance optional

Introduce a compilation option to disable strict enforcement of compliance
against VirtIO Version_1 backends, so as to allow to support also Legacy
VirtIO devices implementations.

Link: https://lore.kernel.org/r/20211115102910.7639-1-cristian.marussi@arm.com


Signed-off-by: default avatarCristian Marussi <cristian.marussi@arm.com>
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent 5f90f189
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -89,6 +89,21 @@ config ARM_SCMI_TRANSPORT_VIRTIO
	  If you want the ARM SCMI PROTOCOL stack to include support for a
	  transport based on VirtIO, answer Y.

config ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
	bool "SCMI VirtIO transport Version 1 compliance"
	depends on ARM_SCMI_TRANSPORT_VIRTIO
	default y
	help
	  This enforces strict compliance with VirtIO Version 1 specification.

	  If you want the ARM SCMI VirtIO transport layer to refuse to work
	  with Legacy VirtIO backends and instead support only VirtIO Version 1
	  devices (or above), answer Y.

	  If you want instead to support also old Legacy VirtIO backends (like
	  the ones implemented by kvmtool) and let the core Kernel VirtIO layer
	  take care of the needed conversions, say N.

endif #ARM_SCMI_PROTOCOL

config ARM_SCMI_POWER_DOMAIN
+2 −1
Original line number Diff line number Diff line
@@ -459,12 +459,13 @@ static void scmi_vio_remove(struct virtio_device *vdev)

static int scmi_vio_validate(struct virtio_device *vdev)
{
#ifdef CONFIG_ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
		dev_err(&vdev->dev,
			"device does not comply with spec version 1.x\n");
		return -EINVAL;
	}

#endif
	return 0;
}