[PATCH v4] tee: optee: build the Arm-specific code only on Arm
Jens Wiklander
jens.wiklander at oss.qualcomm.com
Fri Sep 25 04:40:38 PDT 2026
Hi,
On Thu, Sep 24, 2026 at 12:37 PM <marouene.boubakri at oss.nxp.com> wrote:
>
> From: Marouene Boubakri <marouene.boubakri at oss.nxp.com>
>
> The OP-TEE driver reaches OP-TEE through the SMC ABI or the FF-A ABI,
> both specific to Arm, yet builds both unconditionally together with the
> SMC Calling Convention definitions they rely on: ffa_abi.c is always
> compiled and only its registration is conditioned on
> IS_REACHABLE(CONFIG_ARM_FFA_TRANSPORT), and optee_private.h includes
> <linux/arm-smccc.h> and defines the SMC and FF-A specific types for
> every file of the driver. This is fine as long as the driver depends on
> HAVE_ARM_SMCCC, but it keeps the driver from being built for an
> architecture without SMCCC, such as RISC-V.
>
> Build smc_abi.c only when HAVE_ARM_SMCCC is set and ffa_abi.c only when
> the FF-A transport is enabled, and provide stubs for their registration
> otherwise, so that it fails with -EOPNOTSUPP as the FF-A ABI already
> does when the FF-A transport is not reachable. Keep the SMCCC header,
> the SMC invoke function type, the SMC and FF-A specific structures and
> the SMC RPC register parameters in optee_private.h under the same
> conditions, and drop the unused <linux/arm-smccc.h> include from
> notif.c.
>
> Make OPTEE depend on ARM_FFA_TRANSPORT || !ARM_FFA_TRANSPORT, as it
> already does for RPMB, so that the driver is limited to a module when
> the FF-A transport is one, rather than built in without FF-A support.
> ffa_abi.c is thus built exactly when the FF-A transport is reachable
> from the driver, and the IS_REACHABLE() checks in
> optee_ffa_abi_register() and optee_ffa_abi_unregister() are always
> true, so drop them.
>
> OPTEE still depends on HAVE_ARM_SMCCC, so smc_abi.c is still always
> built. The only visible change is that OPTEE=y can no longer be
> combined with ARM_FFA_TRANSPORT=m: such a configuration now resolves to
> OPTEE=m, with the FF-A ABI available.
>
> Signed-off-by: Marouene Boubakri <marouene.boubakri at oss.nxp.com>
> ---
> Changes in v4:
> - Make OPTEE depend on ARM_FFA_TRANSPORT || !ARM_FFA_TRANSPORT so that
> the driver is limited to =m when the FF-A transport is =m (Jens).
> - Update the commit message accordingly.
> v3: https://lore.kernel.org/all/20260922131735.524635-1-marouene.boubakri@oss.nxp.com/
>
> Changes in v3:
> - Dropped the RPMI ABI placeholder and the RISC-V enablement patches,
> this is now a single patch (Jens).
> - Key the FF-A parts of optee_private.h on IS_REACHABLE() instead of
> IS_ENABLED(): with OPTEE=y and ARM_FFA_TRANSPORT=m kbuild drops
> ffa_abi.o from the built-in optee.o while optee_ffa_abi_register()
> was still declared, which does not link.
> - Drop the now always true IS_REACHABLE() checks in
> optee_ffa_abi_register() and optee_ffa_abi_unregister().
> - Describe the current FF-A conditional compilation accurately in the
> commit message.
> - Posted as a new thread with a proper subject prefix.
> v2: https://lore.kernel.org/op-tee/20260915020235.507302-2-marouene.boubakri@oss.nxp.com/
>
> Changes in v2:
> - No code change, the testing section of the cover letter was completed.
> v1: https://lore.kernel.org/op-tee/20260914175435.118303-2-marouene.boubakri@oss.nxp.com/
> drivers/tee/optee/Kconfig | 1 +
> drivers/tee/optee/Makefile | 4 ++--
> drivers/tee/optee/ffa_abi.c | 8 ++-----
> drivers/tee/optee/notif.c | 1 -
> drivers/tee/optee/optee_private.h | 39 ++++++++++++++++++++++++++++++-
> 5 files changed, 43 insertions(+), 10 deletions(-)
Looks good, I'm picking this up.
Cheers,
Jens
More information about the linux-riscv
mailing list