diff options
author | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2017-10-24 10:07:35 +0100 |
---|---|---|
committer | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2017-11-08 18:05:14 +0000 |
commit | 2fccb228045696b98f83b1d865bac3c65d96b980 (patch) | |
tree | 4c3a4b67406989e65611a103a7adaf233fed4f2e /include/common | |
parent | ad02a7596f73ea9f07ebc9e04970ab7e9961c868 (diff) |
SPM: Introduce Secure Partition Manager
A Secure Partition is a software execution environment instantiated in
S-EL0 that can be used to implement simple management and security
services. Since S-EL0 is an unprivileged exception level, a Secure
Partition relies on privileged firmware e.g. ARM Trusted Firmware to be
granted access to system and processor resources. Essentially, it is a
software sandbox that runs under the control of privileged software in
the Secure World and accesses the following system resources:
- Memory and device regions in the system address map.
- PE system registers.
- A range of asynchronous exceptions e.g. interrupts.
- A range of synchronous exceptions e.g. SMC function identifiers.
A Secure Partition enables privileged firmware to implement only the
absolutely essential secure services in EL3 and instantiate the rest in
a partition. Since the partition executes in S-EL0, its implementation
cannot be overly complex.
The component in ARM Trusted Firmware responsible for managing a Secure
Partition is called the Secure Partition Manager (SPM). The SPM is
responsible for the following:
- Validating and allocating resources requested by a Secure Partition.
- Implementing a well defined interface that is used for initialising a
Secure Partition.
- Implementing a well defined interface that is used by the normal world
and other secure services for accessing the services exported by a
Secure Partition.
- Implementing a well defined interface that is used by a Secure
Partition to fulfil service requests.
- Instantiating the software execution environment required by a Secure
Partition to fulfil a service request.
Change-Id: I6f7862d6bba8732db5b73f54e789d717a35e802f
Co-authored-by: Douglas Raillard <douglas.raillard@arm.com>
Co-authored-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Co-authored-by: Achin Gupta <achin.gupta@arm.com>
Co-authored-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Diffstat (limited to 'include/common')
-rw-r--r-- | include/common/aarch64/asm_macros.S | 8 | ||||
-rw-r--r-- | include/common/param_header.h | 13 |
2 files changed, 11 insertions, 10 deletions
diff --git a/include/common/aarch64/asm_macros.S b/include/common/aarch64/asm_macros.S index 6d6989c2..94a9df92 100644 --- a/include/common/aarch64/asm_macros.S +++ b/include/common/aarch64/asm_macros.S @@ -51,8 +51,8 @@ * so that it inserts illegal AArch64 instructions. This increases * security, robustness and potentially facilitates debugging. */ - .macro vector_base label - .section .vectors, "ax" + .macro vector_base label, section_name=.vectors + .section \section_name, "ax" .align 11, 0 \label: .endm @@ -64,9 +64,9 @@ * so that it inserts illegal AArch64 instructions. This increases * security, robustness and potentially facilitates debugging. */ - .macro vector_entry label + .macro vector_entry label, section_name=.vectors .cfi_sections .debug_frame - .section .vectors, "ax" + .section \section_name, "ax" .align 7, 0 .type \label, %function .func \label diff --git a/include/common/param_header.h b/include/common/param_header.h index 90d59b3a..c982fc90 100644 --- a/include/common/param_header.h +++ b/include/common/param_header.h @@ -8,12 +8,13 @@ #define __PARAM_HEADER_H__ /* Param header types */ -#define PARAM_EP 0x01 -#define PARAM_IMAGE_BINARY 0x02 -#define PARAM_BL31 0x03 -#define PARAM_BL_LOAD_INFO 0x04 -#define PARAM_BL_PARAMS 0x05 -#define PARAM_PSCI_LIB_ARGS 0x06 +#define PARAM_EP 0x01 +#define PARAM_IMAGE_BINARY 0x02 +#define PARAM_BL31 0x03 +#define PARAM_BL_LOAD_INFO 0x04 +#define PARAM_BL_PARAMS 0x05 +#define PARAM_PSCI_LIB_ARGS 0x06 +#define PARAM_SP_IMAGE_BOOT_INFO 0x07 /* Param header version */ #define VERSION_1 0x01 |