From ca9324819ee308f9b3a4bb004f02a512c8f301f6 Mon Sep 17 00:00:00 2001 From: Davidson K Date: Wed, 10 Mar 2021 12:07:15 +0530 Subject: [PATCH] feat(tc0): add support for trusted services This patch adds support for the crypto and secure storage secure partitions for the Total Compute platform. These secure partitions have to be managed by Hafnium executing at S-EL2 Change-Id: I2df690e3a99bf6bf50e2710994a905914a07026e Signed-off-by: Davidson K --- Makefile | 4 ++++ docs/plat/arm/arm-build-options.rst | 3 +++ .../tc0/fdts/tc0_spmc_optee_sp_manifest.dts | 22 ++++++++++++++++++- plat/arm/board/tc0/fdts/tc0_tb_fw_config.dts | 12 +++++++++- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 219413e5b..00ef0bd17 100644 --- a/Makefile +++ b/Makefile @@ -521,6 +521,10 @@ ifneq (${SPD},none) ifeq ($(findstring optee_sp,$(ARM_SPMC_MANIFEST_DTS)),optee_sp) DTC_CPPFLAGS += -DOPTEE_SP_FW_CONFIG endif + + ifeq ($(TS_SP_FW_CONFIG),1) + DTC_CPPFLAGS += -DTS_SP_FW_CONFIG + endif else # All other SPDs in spd directory SPD_DIR := spd diff --git a/docs/plat/arm/arm-build-options.rst b/docs/plat/arm/arm-build-options.rst index db8d94575..d4fa98dc5 100644 --- a/docs/plat/arm/arm-build-options.rst +++ b/docs/plat/arm/arm-build-options.rst @@ -104,6 +104,9 @@ Arm Platform Build Options device tree. This flag is defined only when ``ARM_SPMC_MANIFEST_DTS`` manifest file name contains pattern optee_sp. +- ``TS_SP_FW_CONFIG``: DTC build flag to include Trusted Services (Crypto and + secure-storage) as SP in tb_fw_config device tree. + - ``ARM_GPT_SUPPORT``: Enable GPT parser to get the entry address and length of the various partitions present in the GPT image. This support is available only for the BL2 component, and it is disabled by default. diff --git a/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts b/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts index 221039c43..0830d5cee 100644 --- a/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts +++ b/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts @@ -27,8 +27,28 @@ debug_name = "op-tee"; load_address = <0xfd280000>; vcpu_count = <8>; - mem_size = <30928896>; /* 32MB TZC DRAM - SPMC region */ +#ifdef TS_SP_FW_CONFIG + mem_size = <26738688>; /* 25MB TZC DRAM */ +#else + mem_size = <30928896>; /* 29MB TZC DRAM */ +#endif }; +#ifdef TS_SP_FW_CONFIG + vm2 { + is_ffa_partition; + debug_name = "secure-storage"; + load_address = <0xfee00000>; + vcpu_count = <1>; + mem_size = <2097152>; /* 2MB TZC DRAM */ + }; + vm3 { + is_ffa_partition; + debug_name = "crypto"; + load_address = <0xfec00000>; + vcpu_count = <1>; + mem_size = <2097152>; /* 2MB TZC DRAM */ + }; +#endif }; cpus { diff --git a/plat/arm/board/tc0/fdts/tc0_tb_fw_config.dts b/plat/arm/board/tc0/fdts/tc0_tb_fw_config.dts index de5f95d5e..38fd0e006 100644 --- a/plat/arm/board/tc0/fdts/tc0_tb_fw_config.dts +++ b/plat/arm/board/tc0/fdts/tc0_tb_fw_config.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Arm Limited. All rights reserved. + * Copyright (c) 2020-2021, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -27,6 +27,16 @@ secure-partitions { compatible = "arm,sp"; +#ifdef TS_SP_FW_CONFIG + secure-storage { + uuid = "dc1eef48-b17a-4ccf-ac8b-dfcff7711b14"; + load-address = <0xfee00000>; + }; + crypto { + uuid = "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0"; + load-address = <0xfec00000>; + }; +#endif #if OPTEE_SP_FW_CONFIG op-tee { uuid = <0x486178e0 0xe7f811e3 0xbc5e0002 0xa5d5c51b>;