mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 17:44:19 +00:00
Merge "SPM: build OP-TEE as an S-EL1 Secure Partition" into integration
This commit is contained in:
commit
070632f97b
7 changed files with 123 additions and 3 deletions
4
Makefile
4
Makefile
|
@ -484,6 +484,10 @@ ifneq (${SPD},none)
|
|||
$(error SPMD with SPM at S-EL2 requires CTX_INCLUDE_EL2_REGS option)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(findstring optee_sp,$(ARM_SPMC_MANIFEST_DTS)),optee_sp)
|
||||
DTC_CPPFLAGS += -DOPTEE_SP_FW_CONFIG
|
||||
endif
|
||||
else
|
||||
# All other SPDs in spd directory
|
||||
SPD_DIR := spd
|
||||
|
|
|
@ -91,6 +91,9 @@ Arm Platform Build Options
|
|||
platforms. If this option is specified, then the path to the CryptoCell
|
||||
SBROM library must be specified via ``CCSBROM_LIB_PATH`` flag.
|
||||
|
||||
- ``ARM_SPMC_MANIFEST_DTS`` : path to an alternate manifest file used as the
|
||||
SPMC Core manifest. Valid when ``SPD=spmd`` is selected.
|
||||
|
||||
For a better understanding of these options, the Arm development platform memory
|
||||
map is explained in the :ref:`Firmware Design`.
|
||||
|
||||
|
|
33
fdts/optee_sp_manifest.dts
Normal file
33
fdts/optee_sp_manifest.dts
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* This file is a Partition Manifest (PM) for a minimal Secure Partition (SP)
|
||||
* that has additional optional properties defined.
|
||||
*
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
compatible = "arm,ffa-manifest-1.0";
|
||||
|
||||
/* Properties */
|
||||
description = "op-tee";
|
||||
ffa-version = <0x00010000>; /* 31:16 - Major, 15:0 - Minor */
|
||||
uuid = <0x486178e0 0xe7f811e3 0xbc5e0002 0xa5d5c51b>;
|
||||
id = <1>;
|
||||
execution-ctx-count = <8>;
|
||||
exception-level = <2>; /* S-EL1 */
|
||||
execution-state = <0>; /* AARCH64 */
|
||||
load-address = <0x6280000>;
|
||||
entrypoint-offset = <0x1000>;
|
||||
xlat-granule = <0>; /* 4KiB */
|
||||
boot-order = <0>;
|
||||
messaging-method = <0>; /* Direct messaging only */
|
||||
run-time-model = <1>; /* Run to completion */
|
||||
|
||||
/* Boot protocol */
|
||||
gp-register-num = <0x0>;
|
||||
};
|
|
@ -13,7 +13,7 @@
|
|||
/* arm_sp getter */
|
||||
#define arm__sp_getter(prop) arm_sp.prop
|
||||
|
||||
#define ARM_SP_MAX_SIZE U(0x10000)
|
||||
#define ARM_SP_MAX_SIZE U(0x80000)
|
||||
|
||||
struct arm_sp_t {
|
||||
unsigned int number_of_sp;
|
||||
|
|
68
plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts
Normal file
68
plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#define AFF 00
|
||||
|
||||
#include "fvp-defs.dtsi"
|
||||
#undef POST
|
||||
#define POST \
|
||||
};
|
||||
|
||||
/ {
|
||||
compatible = "arm,ffa-core-manifest-1.0";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
|
||||
attribute {
|
||||
spmc_id = <0x8000>;
|
||||
maj_ver = <0x1>;
|
||||
min_ver = <0x0>;
|
||||
exec_state = <0x0>;
|
||||
load_address = <0x0 0x6000000>;
|
||||
entrypoint = <0x0 0x6000000>;
|
||||
binary_size = <0x80000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
linux,initrd-start = <0>;
|
||||
linux,initrd-end = <0>;
|
||||
};
|
||||
|
||||
hypervisor {
|
||||
compatible = "hafnium,hafnium";
|
||||
vm1 {
|
||||
is_ffa_partition;
|
||||
debug_name = "op-tee";
|
||||
load_address = <0x6280000>;
|
||||
smc_whitelist = <0xbe000000>;
|
||||
};
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x0>;
|
||||
|
||||
CPU_0
|
||||
|
||||
/*
|
||||
* SPMC(Hafnium) requires secondary core nodes are declared
|
||||
* in descending order.
|
||||
*/
|
||||
CPU_7
|
||||
CPU_6
|
||||
CPU_5
|
||||
CPU_4
|
||||
CPU_3
|
||||
CPU_2
|
||||
CPU_1
|
||||
};
|
||||
|
||||
memory@60000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x6000000 0x2000000>; /* Trusted DRAM */
|
||||
};
|
||||
};
|
|
@ -75,6 +75,12 @@
|
|||
|
||||
secure-partitions {
|
||||
compatible = "arm,sp";
|
||||
#ifdef OPTEE_SP_FW_CONFIG
|
||||
op-tee {
|
||||
uuid = <0xe0786148 0xe311f8e7 0x02005ebc 0x1bc5d5a5>;
|
||||
load-address = <0x6280000>;
|
||||
};
|
||||
#else
|
||||
cactus-primary {
|
||||
uuid = <0x1e67b5b4 0xe14f904a 0x13fb1fb8 0xcbdae1da>;
|
||||
load-address = <0x7000000>;
|
||||
|
@ -84,6 +90,7 @@
|
|||
uuid = <0x092358d1 0xb94723f0 0x64447c82 0xc88f57f5>;
|
||||
load-address = <0x7100000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
#if COT_DESC_IN_DTB
|
||||
|
|
|
@ -253,8 +253,13 @@ $(eval $(call TOOL_ADD_PAYLOAD,${FVP_TOS_FW_CONFIG},--tos-fw-config))
|
|||
endif
|
||||
|
||||
ifeq (${SPD},spmd)
|
||||
FDT_SOURCES += plat/arm/board/fvp/fdts/${PLAT}_spmc_manifest.dts
|
||||
FVP_TOS_FW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}_spmc_manifest.dtb
|
||||
|
||||
ifeq ($(ARM_SPMC_MANIFEST_DTS),)
|
||||
ARM_SPMC_MANIFEST_DTS := plat/arm/board/fvp/fdts/${PLAT}_spmc_manifest.dts
|
||||
endif
|
||||
|
||||
FDT_SOURCES += ${ARM_SPMC_MANIFEST_DTS}
|
||||
FVP_TOS_FW_CONFIG := ${BUILD_PLAT}/fdts/$(notdir $(basename ${ARM_SPMC_MANIFEST_DTS})).dtb
|
||||
|
||||
# Add the TOS_FW_CONFIG to FIP and specify the same to certtool
|
||||
$(eval $(call TOOL_ADD_PAYLOAD,${FVP_TOS_FW_CONFIG},--tos-fw-config))
|
||||
|
|
Loading…
Add table
Reference in a new issue