aarch64,smc: remove KernelAllowSMCCalls

Remove the KernelAllowSMCCalls cmake option together with configurable
CONFIG_ALLOW_SMC_CALLS. Instead, provide CONFIG_ALLOW_SMC_CALLS as
always-on to user space, together with a deprecation warning.

The rationale is that system initialisation can either delete or not
pass on the initial SMC caps and achieve the same behaviour as
CONFIG_ALLOW_SMC_CALLS being off.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
This commit is contained in:
Gerwin Klein
2026-02-18 13:52:29 +11:00
parent a53d8544ff
commit 973825aff9
3 changed files with 5 additions and 15 deletions

View File

@@ -8,4 +8,6 @@
#include <sel4/config.h>
/* nothing here */
#if defined(CONFIG_ARCH_AARCH64) && !defined(CONFIG_ALLOW_SMC_CALLS)
#define CONFIG_ALLOW_SMC_CALLS SEL4_DEPRECATE_MACRO(1)
#endif

View File

@@ -234,18 +234,6 @@ config_option(
)
mark_as_advanced(KernelAArch64SErrorIgnore)
config_option(
KernelAllowSMCCalls
ALLOW_SMC_CALLS
"Allow components to make SMC calls. \
WARNING: Allowing SMC calls causes a couple of issues. Since seL4 cannot \
pre-empt the secure monitor, the WCET is no longer guaranteed. Also, since the \
secure monitor is a higher privilege level and can make any change in the \
system, the proofs can no longer be guaranteed."
DEFAULT OFF
DEPENDS "KernelSel4ArchAarch64"
)
config_choice(
KernelArmTLSReg
ARM_TLS_REG

View File

@@ -164,7 +164,7 @@ BOOT_CODE static void init_smmu(cap_t root_cnode_cap)
#endif
#ifdef CONFIG_ALLOW_SMC_CALLS
#ifdef CONFIG_ARCH_AARCH64
BOOT_CODE static void init_smc(cap_t root_cnode_cap)
{
/* Provide the SMC cap*/
@@ -451,7 +451,7 @@ static BOOT_CODE bool_t try_init_kernel(
/* initialise the SMMU and provide the SMMU control caps*/
init_smmu(root_cnode_cap);
#endif
#ifdef CONFIG_ALLOW_SMC_CALLS
#ifdef CONFIG_ARCH_AARCH64
init_smc(root_cnode_cap);
#endif