Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
35c4b414
Unverified
Commit
35c4b414
authored
Nov 15, 2018
by
Antonio Niño Díaz
Committed by
GitHub
Nov 15, 2018
Browse files
Merge pull request #1675 from SNG-ARM/integration
SPM priority level changes
parents
a6febeab
6e3bad36
Changes
6
Hide whitespace changes
Inline
Side-by-side
bl31/bl31.mk
View file @
35c4b414
...
...
@@ -8,6 +8,9 @@
# Include SPM Makefile
################################################################################
ifeq
(${ENABLE_SPM},1)
ifeq
(${EL3_EXCEPTION_HANDLING},0)
$(error
EL3_EXCEPTION_HANDLING
must
be
1
for
SPM
support)
endif
$(info
Including
SPM
makefile)
include
services/std_svc/spm/spm.mk
endif
...
...
docs/secure-partition-manager-design.rst
View file @
35c4b414
...
...
@@ -125,8 +125,9 @@ Interface). This will be referred to as the *Standalone MM Secure Partition* in
the rest of this document.
To enable SPM support in TF-A, the source code must be compiled with the build
flag ``ENABLE_SPM=1``. On Arm platforms the build option ``ARM_BL31_IN_DRAM``
must be set to 1. Also, the location of the binary that contains the BL32 image
flag ``ENABLE_SPM=1``, along with ``EL3_EXCEPTION_HANDLING=1``. On Arm
platforms the build option ``ARM_BL31_IN_DRAM`` must be set to 1. Also, the
location of the binary that contains the BL32 image
(``BL32=path/to/image.bin``) must be specified.
First, build the Standalone MM Secure Partition. To build it, refer to the
...
...
plat/arm/board/fvp/include/platform_def.h
View file @
35c4b414
...
...
@@ -268,4 +268,6 @@
#define PLAT_ARM_SP_IMAGE_STACK_BASE (ARM_SP_IMAGE_NS_BUF_BASE + \
ARM_SP_IMAGE_NS_BUF_SIZE)
#define PLAT_SP_PRI PLAT_RAS_PRI
#endif
/* PLATFORM_DEF_H */
plat/arm/common/aarch64/arm_ehf.c
View file @
35c4b414
...
...
@@ -23,6 +23,9 @@ ehf_pri_desc_t arm_exceptions[] = {
/* Normal priority SDEI */
EHF_PRI_DESC
(
ARM_PRI_BITS
,
PLAT_SDEI_NORMAL_PRI
),
#endif
#if ENABLE_SPM
EHF_PRI_DESC
(
ARM_PRI_BITS
,
PLAT_SP_PRI
),
#endif
};
/* Plug in ARM exceptions to Exception Handling Framework. */
...
...
plat/arm/css/sgi/include/sgi_base_platform_def.h
View file @
35c4b414
...
...
@@ -142,6 +142,8 @@
SOC_CSS_DEVICE_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE | MT_USER)
#define PLAT_SP_PRI PLAT_RAS_PRI
#if RAS_EXTENSION
/* Allocate 128KB for CPER buffers */
#define PLAT_SP_BUF_BASE ULL(0x20000)
...
...
services/std_svc/spm/spm_main.c
View file @
35c4b414
...
...
@@ -9,6 +9,7 @@
#include <bl31.h>
#include <context_mgmt.h>
#include <debug.h>
#include <ehf.h>
#include <errno.h>
#include <mm_svc.h>
#include <platform.h>
...
...
@@ -233,6 +234,19 @@ static uint64_t mm_communicate(uint32_t smc_fid, uint64_t mm_cookie,
VERBOSE
(
"MM_COMMUNICATE: comm_size_address is not 0 as recommended.
\n
"
);
}
/*
* The current secure partition design mandates
* - at any point, only a single core can be
* executing in the secure partiton.
* - a core cannot be preempted by an interrupt
* while executing in secure partition.
* Raise the running priority of the core to the
* interrupt level configured for secure partition
* so as to block any interrupt from preempting this
* core.
*/
ehf_activate_priority
(
PLAT_SP_PRI
);
/* Save the Normal world context */
cm_el1_sysregs_context_save
(
NON_SECURE
);
...
...
@@ -243,6 +257,12 @@ static uint64_t mm_communicate(uint32_t smc_fid, uint64_t mm_cookie,
cm_el1_sysregs_context_restore
(
NON_SECURE
);
cm_set_next_eret_context
(
NON_SECURE
);
/*
* Exited from secure partition. This core can take
* interrupts now.
*/
ehf_deactivate_priority
(
PLAT_SP_PRI
);
SMC_RET1
(
handle
,
rc
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment