From 398489452fe50118521be845a55ce3b8773cd13d Mon Sep 17 00:00:00 2001 From: Sandrine Bailleux Date: Wed, 9 May 2018 14:45:34 +0200 Subject: [PATCH] SPM: Do not trap S-EL0 access to SVE/SIMD/FP regs This allows secure partitions to access these registers. This is needed in some cases. For example, it has been reported that in order to implement secure storage services, a secure partition needs to encrypt/decrypt some authentication variables, which requires FP/SIMD support. Note that SPM will not do any saving/restoring of these registers on behalf of the SP. This falls under the SP's responsibility. Also note that if the SP gets preempted, it might not get a chance to save/restore FP/SIMD registers first. This patch does not address this problem. It only serves as a temporary solution to unblock development on the secure partition side. Change-Id: I3b8ccdebdac0219f6ac96ad66ab2be0be8374ad3 Signed-off-by: Sandrine Bailleux --- services/std_svc/spm/secure_partition_setup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/std_svc/spm/secure_partition_setup.c b/services/std_svc/spm/secure_partition_setup.c index 6998dae57..9b3f62226 100644 --- a/services/std_svc/spm/secure_partition_setup.c +++ b/services/std_svc/spm/secure_partition_setup.c @@ -236,12 +236,14 @@ void secure_partition_setup(void) SPM_SHIM_EXCEPTIONS_PTR); /* - * FPEN: Forbid the Secure Partition to access FP/SIMD registers. + * FPEN: Allow the Secure Partition to access FP/SIMD registers. + * Note that SPM will not do any saving/restoring of these registers on + * behalf of the SP. This falls under the SP's responsibility. * TTA: Enable access to trace registers. * ZEN (v8.2): Trap SVE instructions and access to SVE registers. */ write_ctx_reg(get_sysregs_ctx(ctx), CTX_CPACR_EL1, - CPACR_EL1_FPEN(CPACR_EL1_FP_TRAP_ALL)); + CPACR_EL1_FPEN(CPACR_EL1_FP_TRAP_NONE)); /* * Prepare information in buffer shared between EL3 and S-EL0