[PATCH v3 5/9] firmware: arm_scmi: Make use of FastChannels configurable

Cristian Marussi cristian.marussi at arm.com
Mon Jun 27 05:30:34 PDT 2022


Add a Kernel configuration entry used to optionally disable, globally, the
usage of SCMI FastChannels even on platforms where they are available.

Make such option default-no to preserve the original SCMI system behaviour
of using any available FC.

Signed-off-by: Cristian Marussi <cristian.marussi at arm.com>
---
v2 --> v3
- fixed wording in Kconfig
- reverted Kconfig logic _USE_ -> _AVOID_
---
 drivers/firmware/arm_scmi/Kconfig  | 13 +++++++++++++
 drivers/firmware/arm_scmi/driver.c |  6 ++++++
 2 files changed, 19 insertions(+)

diff --git a/drivers/firmware/arm_scmi/Kconfig b/drivers/firmware/arm_scmi/Kconfig
index 1e7b7fec97d9..3fb34db01014 100644
--- a/drivers/firmware/arm_scmi/Kconfig
+++ b/drivers/firmware/arm_scmi/Kconfig
@@ -42,6 +42,19 @@ config ARM_SCMI_HAVE_MSG
 	  This declares whether a message passing based transport for SCMI is
 	  available.
 
+config ARM_SCMI_AVOID_FASTCHANNELS
+	bool "Avoid using SCMI FastChannels even when available"
+	help
+	  Avoid using SCMI FastChannels even if advertised as available by
+	  the platform.
+
+	  On systems where the SCMI platform advertises the availability of
+	  FastChannels, supported SCMI commands can be issued triggering a
+	  one-way FastChannel request, much more quickly than using a
+	  regular SCMI message transfer.
+	  When set to Y forces the OSPM to use instead regular SCMI message
+	  transfers even if FastChannels are available. If unsure say N.
+
 config ARM_SCMI_TRANSPORT_MAILBOX
 	bool "SCMI transport based on Mailbox"
 	depends on MAILBOX
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index 00b7f2aff4ec..76dc82ba04b3 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -1298,6 +1298,12 @@ scmi_common_fastchannel_init(const struct scmi_protocol_handle *ph,
 	struct scmi_msg_resp_desc_fc *resp;
 	const struct scmi_protocol_instance *pi = ph_to_pi(ph);
 
+	if (IS_ENABLED(CONFIG_ARM_SCMI_AVOID_FASTCHANNELS)) {
+		dev_warn_once(ph->dev,
+			      "FastChannels usage disabled in Kconfig.\n");
+		return;
+	}
+
 	if (!p_addr) {
 		ret = -EINVAL;
 		goto err_out;
-- 
2.32.0




More information about the linux-arm-kernel mailing list