RE: [PATCH v2] firmware: arm_scmi: Give SMC transport precedence over mailbox

From: Peng Fan
Date: Mon Oct 07 2024 - 22:14:33 EST


> Subject: [PATCH v2] firmware: arm_scmi: Give SMC transport
> precedence over mailbox
>
> Broadcom STB platforms have for historical reasons included both
> "arm,scmi-smc" and "arm,scmi" in their SCMI Device Tree node
> compatible string, in that order.

If compatible = "arm,scmi-smc", "arm,scmi", smc driver should be used.
or I missed something?

>
> After the commit cited in the Fixes tag and with a kernel configuration
> that enables both the SMC and the Mailbox transports, we would
> probe the mailbox transport, but fail to complete since we would not
> have a mailbox driver available. With each SCMI transport being a
> platform driver with its own set of compatible strings to match, rather
> than an unique platform driver entry point, we no longer match from
> most specific to least specific. There is also no simple way for the
> mailbox driver to return -ENODEV and let another platform driver
> attempt probing. This leads to a platform with no SCMI provider,
> therefore all drivers depending upon SCMI resources are put on
> deferred probe forever.
>
> By keeping the SMC transport objects linked first, we can let the
> platform driver match the compatible string and probe successfully
> with no adverse effects on platforms using the mailbox transport.
>
> Fixes: b53515fa177c ("firmware: arm_scmi: Make MBOX transport a
> standalone driver")
> Signed-off-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
> ---
> Changes in v2:
>
> - removed downstream Change-Id
> - s/SCMI/SMC in the second paragraph
> - added details about what changed and how that affects the probing
>
> drivers/firmware/arm_scmi/transports/Makefile | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/firmware/arm_scmi/transports/Makefile
> b/drivers/firmware/arm_scmi/transports/Makefile
> index 362a406f08e6..3ba3d3bee151 100644
> --- a/drivers/firmware/arm_scmi/transports/Makefile
> +++ b/drivers/firmware/arm_scmi/transports/Makefile
> @@ -1,8 +1,10 @@
> # SPDX-License-Identifier: GPL-2.0-only -scmi_transport_mailbox-
> objs := mailbox.o
> -obj-$(CONFIG_ARM_SCMI_TRANSPORT_MAILBOX) +=
> scmi_transport_mailbox.o
> +# Keep before scmi_transport_mailbox.o to allow precedence # while
> +matching the compatible.
> scmi_transport_smc-objs := smc.o
> obj-$(CONFIG_ARM_SCMI_TRANSPORT_SMC) +=
> scmi_transport_smc.o
> +scmi_transport_mailbox-objs := mailbox.o
> +obj-$(CONFIG_ARM_SCMI_TRANSPORT_MAILBOX) +=

This seems more like a hack.

Regards,
Peng.

> scmi_transport_mailbox.o
> scmi_transport_optee-objs := optee.o
> obj-$(CONFIG_ARM_SCMI_TRANSPORT_OPTEE) +=
> scmi_transport_optee.o scmi_transport_virtio-objs := virtio.o
> --
> 2.34.1
>