Add boot-order property to SP manifests
Capture the boot-order in the SP manifest files for each SP to help
portability. The legacy way to set the boot order is integration
system, packaging method and SPMC implementation specific.
The boot order of SP is dictated by service dependency and relative
boot order of TS SPs should be as follows:
0 - logging
1 - block-storage
1 - se-proxy (corstone1000-opteesp)
2 - se-proxy (default-opteesp or default-sp)
2 - internal-trusted-storage
3 - protected-storage
4 - crypto
5 - attestation
6 - se-proxy
7 - fwu
8 - smm-gateway
Signed-off-by: Gabor Toth <gabor.toth2@arm.com>
Change-Id: I4b93015c68e7261fdc87434a6c7f4ec86965af54
diff --git a/deployments/attestation/config/default-opteesp/CMakeLists.txt b/deployments/attestation/config/default-opteesp/CMakeLists.txt
index 58ecb34..7e13465 100644
--- a/deployments/attestation/config/default-opteesp/CMakeLists.txt
+++ b/deployments/attestation/config/default-opteesp/CMakeLists.txt
@@ -23,6 +23,7 @@
set(SP_BIN_UUID_CANON "a1baf155-8876-4695-8f7c-54955e8db974")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "5")
set(TRACE_PREFIX "ATT" CACHE STRING "Trace prefix")
target_include_directories(attestation PRIVATE
@@ -90,6 +91,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "attestation"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_attestation.dts.in
diff --git a/deployments/attestation/config/default-opteesp/default_attestation.dts.in b/deployments/attestation/config/default-opteesp/default_attestation.dts.in
index 3a2ac76..e310cc6 100644
--- a/deployments/attestation/config/default-opteesp/default_attestation.dts.in
+++ b/deployments/attestation/config/default-opteesp/default_attestation.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/attestation/config/default-sp/CMakeLists.txt b/deployments/attestation/config/default-sp/CMakeLists.txt
index cdcbdcd..43d8805 100644
--- a/deployments/attestation/config/default-sp/CMakeLists.txt
+++ b/deployments/attestation/config/default-sp/CMakeLists.txt
@@ -28,6 +28,7 @@
set(TRACE_PREFIX "ATT" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "5")
#-------------------------------------------------------------------------------
# Default deployment specific configuration
@@ -90,6 +91,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/attestation/config/default-sp/default_attestation.dts.in b/deployments/attestation/config/default-sp/default_attestation.dts.in
index 2e16f7e..e8383ae 100644
--- a/deployments/attestation/config/default-sp/default_attestation.dts.in
+++ b/deployments/attestation/config/default-sp/default_attestation.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/block-storage/config/cfi-flash-optee/CMakeLists.txt b/deployments/block-storage/config/cfi-flash-optee/CMakeLists.txt
index b6501f2..53bd078 100644
--- a/deployments/block-storage/config/cfi-flash-optee/CMakeLists.txt
+++ b/deployments/block-storage/config/cfi-flash-optee/CMakeLists.txt
@@ -28,6 +28,7 @@
set(SP_BIN_UUID_CANON "63646e80-eb52-462f-ac4f-8cdf3987519c")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "120 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "BLOCK" CACHE STRING "Trace prefix")
target_include_directories(block-storage PRIVATE
@@ -95,6 +96,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "block-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_block-storage.dts.in
diff --git a/deployments/block-storage/config/cfi-flash-optee/default_block-storage.dts.in b/deployments/block-storage/config/cfi-flash-optee/default_block-storage.dts.in
index 0a97cb5..287ecb0 100644
--- a/deployments/block-storage/config/cfi-flash-optee/default_block-storage.dts.in
+++ b/deployments/block-storage/config/cfi-flash-optee/default_block-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/block-storage/config/default-opteesp/CMakeLists.txt b/deployments/block-storage/config/default-opteesp/CMakeLists.txt
index 5592dcd..7702492 100644
--- a/deployments/block-storage/config/default-opteesp/CMakeLists.txt
+++ b/deployments/block-storage/config/default-opteesp/CMakeLists.txt
@@ -21,6 +21,7 @@
set(SP_BIN_UUID_CANON "63646e80-eb52-462f-ac4f-8cdf3987519c")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "120 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "BLOCK" CACHE STRING "Trace prefix")
target_include_directories(block-storage PRIVATE
@@ -73,6 +74,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "block-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_block-storage.dts.in
diff --git a/deployments/block-storage/config/default-opteesp/default_block-storage.dts.in b/deployments/block-storage/config/default-opteesp/default_block-storage.dts.in
index 0a97cb5..287ecb0 100644
--- a/deployments/block-storage/config/default-opteesp/default_block-storage.dts.in
+++ b/deployments/block-storage/config/default-opteesp/default_block-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/block-storage/config/default-sp/CMakeLists.txt b/deployments/block-storage/config/default-sp/CMakeLists.txt
index 2241c9c..2f9c85c 100644
--- a/deployments/block-storage/config/default-sp/CMakeLists.txt
+++ b/deployments/block-storage/config/default-sp/CMakeLists.txt
@@ -26,6 +26,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "120 * 1024" CACHE STRING "SP heap size in bytes")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "BLOCK" CACHE STRING "Trace prefix")
#-------------------------------------------------------------------------------
@@ -78,6 +79,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/block-storage/config/default-sp/default_block-storage.dts.in b/deployments/block-storage/config/default-sp/default_block-storage.dts.in
index 5d1cf5d..916925b 100644
--- a/deployments/block-storage/config/default-sp/default_block-storage.dts.in
+++ b/deployments/block-storage/config/default-sp/default_block-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/block-storage/config/edk2-secure-flash-opteesp/CMakeLists.txt b/deployments/block-storage/config/edk2-secure-flash-opteesp/CMakeLists.txt
index 5b8bedf..bba970c 100644
--- a/deployments/block-storage/config/edk2-secure-flash-opteesp/CMakeLists.txt
+++ b/deployments/block-storage/config/edk2-secure-flash-opteesp/CMakeLists.txt
@@ -32,6 +32,7 @@
set(SP_BIN_UUID_CANON "63646e80-eb52-462f-ac4f-8cdf3987519c")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "120 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "BLOCK" CACHE STRING "Trace prefix")
target_include_directories(block-storage PRIVATE
@@ -96,6 +97,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "block-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_block-storage.dts.in
diff --git a/deployments/block-storage/config/edk2-secure-flash-opteesp/default_block-storage.dts.in b/deployments/block-storage/config/edk2-secure-flash-opteesp/default_block-storage.dts.in
index 0a97cb5..287ecb0 100644
--- a/deployments/block-storage/config/edk2-secure-flash-opteesp/default_block-storage.dts.in
+++ b/deployments/block-storage/config/edk2-secure-flash-opteesp/default_block-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/block-storage/config/semihosted-opteesp/CMakeLists.txt b/deployments/block-storage/config/semihosted-opteesp/CMakeLists.txt
index 2be5176..fe7b48d 100644
--- a/deployments/block-storage/config/semihosted-opteesp/CMakeLists.txt
+++ b/deployments/block-storage/config/semihosted-opteesp/CMakeLists.txt
@@ -27,6 +27,7 @@
set(SP_BIN_UUID_CANON "63646e80-eb52-462f-ac4f-8cdf3987519c")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "120 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "BLOCK" CACHE STRING "Trace prefix")
target_include_directories(block-storage PRIVATE
@@ -92,6 +93,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "block-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_block-storage.dts.in
diff --git a/deployments/block-storage/config/semihosted-opteesp/default_block-storage.dts.in b/deployments/block-storage/config/semihosted-opteesp/default_block-storage.dts.in
index 0a97cb5..287ecb0 100644
--- a/deployments/block-storage/config/semihosted-opteesp/default_block-storage.dts.in
+++ b/deployments/block-storage/config/semihosted-opteesp/default_block-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/crypto/config/default-opteesp/CMakeLists.txt b/deployments/crypto/config/default-opteesp/CMakeLists.txt
index 1e4069d..11e2dfb 100644
--- a/deployments/crypto/config/default-opteesp/CMakeLists.txt
+++ b/deployments/crypto/config/default-opteesp/CMakeLists.txt
@@ -30,6 +30,7 @@
set(SP_BIN_UUID_CANON "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "490 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "4")
set(TRACE_PREFIX "CRYPTO" CACHE STRING "Trace prefix")
target_include_directories(crypto PRIVATE
@@ -91,6 +92,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "crypto"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_crypto.dts.in
diff --git a/deployments/crypto/config/default-opteesp/default_crypto.dts.in b/deployments/crypto/config/default-opteesp/default_crypto.dts.in
index c900636..729dca7 100644
--- a/deployments/crypto/config/default-opteesp/default_crypto.dts.in
+++ b/deployments/crypto/config/default-opteesp/default_crypto.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/crypto/config/default-sp/CMakeLists.txt b/deployments/crypto/config/default-sp/CMakeLists.txt
index 83594c5..b327728 100644
--- a/deployments/crypto/config/default-sp/CMakeLists.txt
+++ b/deployments/crypto/config/default-sp/CMakeLists.txt
@@ -35,6 +35,7 @@
set(TRACE_PREFIX "CRYPTO" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "490 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "4")
#-------------------------------------------------------------------------------
# Components that are specific to deployment in the opteesp environment.
@@ -91,6 +92,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/crypto/config/default-sp/default_crypto.dts.in b/deployments/crypto/config/default-sp/default_crypto.dts.in
index fcc7ce5..ef63c63 100644
--- a/deployments/crypto/config/default-sp/default_crypto.dts.in
+++ b/deployments/crypto/config/default-sp/default_crypto.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/fwu/config/default-opteesp/CMakeLists.txt b/deployments/fwu/config/default-opteesp/CMakeLists.txt
index f5087d8..d19e429 100644
--- a/deployments/fwu/config/default-opteesp/CMakeLists.txt
+++ b/deployments/fwu/config/default-opteesp/CMakeLists.txt
@@ -23,6 +23,7 @@
set(SP_BIN_UUID_CANON "6823a838-1b06-470e-9774-0cce8bfb53fd")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "7")
target_include_directories(fwu PRIVATE
${CMAKE_CURRENT_LIST_DIR}
@@ -90,6 +91,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "fwu"
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_fwu.dts.in
JSON_IN ${TS_ROOT}/environments/opteesp/sp_pkg.json.in
diff --git a/deployments/fwu/config/default-opteesp/default_fwu.dts.in b/deployments/fwu/config/default-opteesp/default_fwu.dts.in
index 14970d5..d62850f 100644
--- a/deployments/fwu/config/default-opteesp/default_fwu.dts.in
+++ b/deployments/fwu/config/default-opteesp/default_fwu.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/fwu/config/default-sp/CMakeLists.txt b/deployments/fwu/config/default-sp/CMakeLists.txt
index f84ba8f..9ddc7cc 100644
--- a/deployments/fwu/config/default-sp/CMakeLists.txt
+++ b/deployments/fwu/config/default-sp/CMakeLists.txt
@@ -27,6 +27,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "7")
#-------------------------------------------------------------------------------
# Configure trace output
@@ -90,6 +91,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/fwu/config/default-sp/default_fwu.dts.in b/deployments/fwu/config/default-sp/default_fwu.dts.in
index 3f1292e..a30111a 100644
--- a/deployments/fwu/config/default-sp/default_fwu.dts.in
+++ b/deployments/fwu/config/default-sp/default_fwu.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/internal-trusted-storage/config/default-opteesp/CMakeLists.txt b/deployments/internal-trusted-storage/config/default-opteesp/CMakeLists.txt
index bb15942..d28e250 100644
--- a/deployments/internal-trusted-storage/config/default-opteesp/CMakeLists.txt
+++ b/deployments/internal-trusted-storage/config/default-opteesp/CMakeLists.txt
@@ -22,6 +22,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "2")
set(TRACE_PREFIX "ITS" CACHE STRING "Trace prefix")
target_include_directories(internal-trusted-storage PRIVATE
@@ -81,6 +82,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "internal-trusted-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_internal-trusted-storage.dts.in
diff --git a/deployments/internal-trusted-storage/config/default-opteesp/default_internal-trusted-storage.dts.in b/deployments/internal-trusted-storage/config/default-opteesp/default_internal-trusted-storage.dts.in
index 77d0805..9c5c897 100644
--- a/deployments/internal-trusted-storage/config/default-opteesp/default_internal-trusted-storage.dts.in
+++ b/deployments/internal-trusted-storage/config/default-opteesp/default_internal-trusted-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/internal-trusted-storage/config/default-sp/CMakeLists.txt b/deployments/internal-trusted-storage/config/default-sp/CMakeLists.txt
index 90c0f70..c3221e8 100644
--- a/deployments/internal-trusted-storage/config/default-sp/CMakeLists.txt
+++ b/deployments/internal-trusted-storage/config/default-sp/CMakeLists.txt
@@ -26,6 +26,7 @@
set(TRACE_PREFIX "ITS" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "2")
#-------------------------------------------------------------------------------
# Set target platform to provide drivers needed by the deployment
@@ -85,6 +86,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/internal-trusted-storage/config/default-sp/default_internal-trusted-storage.dts.in b/deployments/internal-trusted-storage/config/default-sp/default_internal-trusted-storage.dts.in
index bfe55b6..068ecc0 100644
--- a/deployments/internal-trusted-storage/config/default-sp/default_internal-trusted-storage.dts.in
+++ b/deployments/internal-trusted-storage/config/default-sp/default_internal-trusted-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/internal-trusted-storage/config/shared-flash-opteesp/CMakeLists.txt b/deployments/internal-trusted-storage/config/shared-flash-opteesp/CMakeLists.txt
index 7a0c209..ab2cf1c 100644
--- a/deployments/internal-trusted-storage/config/shared-flash-opteesp/CMakeLists.txt
+++ b/deployments/internal-trusted-storage/config/shared-flash-opteesp/CMakeLists.txt
@@ -21,6 +21,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "2")
set(TRACE_PREFIX "ITS" CACHE STRING "Trace prefix")
target_include_directories(internal-trusted-storage PRIVATE
@@ -74,6 +75,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "internal-trusted-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_internal-trusted-storage.dts.in
diff --git a/deployments/internal-trusted-storage/config/shared-flash-opteesp/default_internal-trusted-storage.dts.in b/deployments/internal-trusted-storage/config/shared-flash-opteesp/default_internal-trusted-storage.dts.in
index 77d0805..9c5c897 100644
--- a/deployments/internal-trusted-storage/config/shared-flash-opteesp/default_internal-trusted-storage.dts.in
+++ b/deployments/internal-trusted-storage/config/shared-flash-opteesp/default_internal-trusted-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/logging/config/default-opteesp/CMakeLists.txt b/deployments/logging/config/default-opteesp/CMakeLists.txt
index dfe6e1c..7801eba 100644
--- a/deployments/logging/config/default-opteesp/CMakeLists.txt
+++ b/deployments/logging/config/default-opteesp/CMakeLists.txt
@@ -25,6 +25,7 @@
set(SP_BIN_UUID_CANON "da9dffbd-d590-40ed-975f-19c65a3d52d3")
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "0")
set(TRACE_PREFIX "LOGGING" CACHE STRING "Trace prefix")
target_include_directories(logging PRIVATE
@@ -88,6 +89,7 @@
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
SP_UUID_LE ${SP_UUID_LE}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "logging"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_logging.dts.in
diff --git a/deployments/logging/config/default-opteesp/default_logging.dts.in b/deployments/logging/config/default-opteesp/default_logging.dts.in
index 8eaf795..ca21f8f 100644
--- a/deployments/logging/config/default-opteesp/default_logging.dts.in
+++ b/deployments/logging/config/default-opteesp/default_logging.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/logging/config/default-sp/CMakeLists.txt b/deployments/logging/config/default-sp/CMakeLists.txt
index 95da442..e685d73 100644
--- a/deployments/logging/config/default-sp/CMakeLists.txt
+++ b/deployments/logging/config/default-sp/CMakeLists.txt
@@ -29,6 +29,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
+set(SP_BOOT_ORDER "0")
set(TRACE_PREFIX "LOGGING" CACHE STRING "Trace prefix")
target_include_directories(logging PRIVATE
@@ -99,6 +100,7 @@
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
SP_UUID_LE ${SP_UUID_LE}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/logging/config/default-sp/default_logging.dts.in b/deployments/logging/config/default-sp/default_logging.dts.in
index 165ea2d..1d73164 100644
--- a/deployments/logging/config/default-sp/default_logging.dts.in
+++ b/deployments/logging/config/default-sp/default_logging.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/protected-storage/config/default-opteesp/CMakeLists.txt b/deployments/protected-storage/config/default-opteesp/CMakeLists.txt
index 27540c7..c9736c4 100644
--- a/deployments/protected-storage/config/default-opteesp/CMakeLists.txt
+++ b/deployments/protected-storage/config/default-opteesp/CMakeLists.txt
@@ -22,6 +22,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "3")
set(TRACE_PREFIX "PS" CACHE STRING "Trace prefix")
target_include_directories(protected-storage PRIVATE
@@ -80,6 +81,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "protected-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_protected-storage.dts.in
diff --git a/deployments/protected-storage/config/default-opteesp/default_protected-storage.dts.in b/deployments/protected-storage/config/default-opteesp/default_protected-storage.dts.in
index b305fbb..2bc74a4 100644
--- a/deployments/protected-storage/config/default-opteesp/default_protected-storage.dts.in
+++ b/deployments/protected-storage/config/default-opteesp/default_protected-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/protected-storage/config/default-sp/CMakeLists.txt b/deployments/protected-storage/config/default-sp/CMakeLists.txt
index 3b05daa..5972397 100644
--- a/deployments/protected-storage/config/default-sp/CMakeLists.txt
+++ b/deployments/protected-storage/config/default-sp/CMakeLists.txt
@@ -26,6 +26,7 @@
set(TRACE_PREFIX "PS" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "3")
#-------------------------------------------------------------------------------
# Set target platform to provide drivers needed by the deployment
@@ -85,6 +86,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/protected-storage/config/default-sp/default_protected-storage.dts.in b/deployments/protected-storage/config/default-sp/default_protected-storage.dts.in
index 38c9b58..79c001f 100644
--- a/deployments/protected-storage/config/default-sp/default_protected-storage.dts.in
+++ b/deployments/protected-storage/config/default-sp/default_protected-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/protected-storage/config/shared-flash-opteesp/CMakeLists.txt b/deployments/protected-storage/config/shared-flash-opteesp/CMakeLists.txt
index 1a3480d..31724de 100644
--- a/deployments/protected-storage/config/shared-flash-opteesp/CMakeLists.txt
+++ b/deployments/protected-storage/config/shared-flash-opteesp/CMakeLists.txt
@@ -22,6 +22,7 @@
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
set(TRACE_PREFIX "PS" CACHE STRING "Trace prefix")
+set(SP_BOOT_ORDER "3")
target_include_directories(protected-storage PRIVATE
${CMAKE_CURRENT_LIST_DIR}
@@ -72,6 +73,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "protected-storage"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_protected-storage.dts.in
diff --git a/deployments/protected-storage/config/shared-flash-opteesp/default_protected-storage.dts.in b/deployments/protected-storage/config/shared-flash-opteesp/default_protected-storage.dts.in
index b305fbb..2bc74a4 100644
--- a/deployments/protected-storage/config/shared-flash-opteesp/default_protected-storage.dts.in
+++ b/deployments/protected-storage/config/shared-flash-opteesp/default_protected-storage.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/se-proxy/config/corstone1000-opteesp/CMakeLists.txt b/deployments/se-proxy/config/corstone1000-opteesp/CMakeLists.txt
index 2c0da0e..3e2cef6 100644
--- a/deployments/se-proxy/config/corstone1000-opteesp/CMakeLists.txt
+++ b/deployments/se-proxy/config/corstone1000-opteesp/CMakeLists.txt
@@ -23,6 +23,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "1")
set(TRACE_PREFIX "SEPROXY" CACHE STRING "Trace prefix")
target_include_directories(se-proxy PRIVATE
@@ -84,6 +85,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "se-proxy"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_se-proxy.dts.in
diff --git a/deployments/se-proxy/config/corstone1000-opteesp/default_se-proxy.dts.in b/deployments/se-proxy/config/corstone1000-opteesp/default_se-proxy.dts.in
index cc42929..d3added 100644
--- a/deployments/se-proxy/config/corstone1000-opteesp/default_se-proxy.dts.in
+++ b/deployments/se-proxy/config/corstone1000-opteesp/default_se-proxy.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/se-proxy/config/default-opteesp/CMakeLists.txt b/deployments/se-proxy/config/default-opteesp/CMakeLists.txt
index 77ea841..a9b1bad 100644
--- a/deployments/se-proxy/config/default-opteesp/CMakeLists.txt
+++ b/deployments/se-proxy/config/default-opteesp/CMakeLists.txt
@@ -25,6 +25,7 @@
set(SP_FFA_UUID_CANON "${TS_RPC_UUID_CANON}")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "SP heap size in bytes")
+set(SP_BOOT_ORDER "2")
set(TRACE_PREFIX "SEPROXY" CACHE STRING "Trace prefix")
target_include_directories(se-proxy PRIVATE
@@ -86,6 +87,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "se-proxy"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_se-proxy.dts.in
diff --git a/deployments/se-proxy/config/default-opteesp/default_se-proxy.dts.in b/deployments/se-proxy/config/default-opteesp/default_se-proxy.dts.in
index 902017c..7c2f038 100644
--- a/deployments/se-proxy/config/default-opteesp/default_se-proxy.dts.in
+++ b/deployments/se-proxy/config/default-opteesp/default_se-proxy.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/se-proxy/config/default-sp/CMakeLists.txt b/deployments/se-proxy/config/default-sp/CMakeLists.txt
index 70d4073..59780b4 100644
--- a/deployments/se-proxy/config/default-sp/CMakeLists.txt
+++ b/deployments/se-proxy/config/default-sp/CMakeLists.txt
@@ -29,6 +29,7 @@
set(TRACE_PREFIX "SEPROXY" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
set(SP_HEAP_SIZE "32 * 1024" CACHE STRING "Heap size")
+set(SP_BOOT_ORDER "2")
#-------------------------------------------------------------------------------
# Components that are specific to deployment in the opteesp environment.
@@ -85,6 +86,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/se-proxy/config/default-sp/default_se-proxy.dts.in b/deployments/se-proxy/config/default-sp/default_se-proxy.dts.in
index 3b66f92..09f0dc1 100644
--- a/deployments/se-proxy/config/default-sp/default_se-proxy.dts.in
+++ b/deployments/se-proxy/config/default-sp/default_se-proxy.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/deployments/smm-gateway/config/default-opteesp/CMakeLists.txt b/deployments/smm-gateway/config/default-opteesp/CMakeLists.txt
index 3f844e6..ab9e92b 100644
--- a/deployments/smm-gateway/config/default-opteesp/CMakeLists.txt
+++ b/deployments/smm-gateway/config/default-opteesp/CMakeLists.txt
@@ -33,6 +33,7 @@
set(SP_BIN_UUID_CANON "ed32d533-99e6-4209-9cc0-2d72cdd998a7")
set(SP_FFA_UUID_CANON "${SP_BIN_UUID_CANON}")
+set(SP_BOOT_ORDER "8")
if (UEFI_AUTH_VAR)
set(SP_HEAP_SIZE "64 * 1024" CACHE STRING "SP heap size in bytes")
@@ -106,6 +107,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME "smm-gateway"
MK_IN ${TS_ROOT}/environments/opteesp/sp.mk.in
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_smm-gateway.dts.in
diff --git a/deployments/smm-gateway/config/default-opteesp/default_smm-gateway.dts.in b/deployments/smm-gateway/config/default-opteesp/default_smm-gateway.dts.in
index d74c2f3..eb5ebf5 100644
--- a/deployments/smm-gateway/config/default-opteesp/default_smm-gateway.dts.in
+++ b/deployments/smm-gateway/config/default-opteesp/default_smm-gateway.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
elf-format = <1>;
diff --git a/deployments/smm-gateway/config/default-sp/CMakeLists.txt b/deployments/smm-gateway/config/default-sp/CMakeLists.txt
index 6a3f890..cb3a596 100644
--- a/deployments/smm-gateway/config/default-sp/CMakeLists.txt
+++ b/deployments/smm-gateway/config/default-sp/CMakeLists.txt
@@ -38,6 +38,7 @@
set(SP_FFA_UUID_CANON "${SP_BIN_UUID_CANON}")
set(TRACE_PREFIX "SMMGW" CACHE STRING "Trace prefix")
set(SP_STACK_SIZE "64 * 1024" CACHE STRING "Stack size")
+set(SP_BOOT_ORDER "8")
if (UEFI_AUTH_VAR)
set(SP_HEAP_SIZE "64 * 1024" CACHE STRING "Heap size")
@@ -105,6 +106,7 @@
export_sp(
SP_FFA_UUID_CANON ${SP_FFA_UUID_CANON}
SP_BIN_UUID_CANON ${SP_BIN_UUID_CANON}
+ SP_BOOT_ORDER ${SP_BOOT_ORDER}
SP_NAME ${SP_NAME}
DTS_IN ${CMAKE_CURRENT_LIST_DIR}/default_${SP_NAME}.dts.in
DTS_MEM_REGIONS ${SP_BIN_UUID_CANON}_memory_regions.dtsi
diff --git a/deployments/smm-gateway/config/default-sp/default_smm-gateway.dts.in b/deployments/smm-gateway/config/default-sp/default_smm-gateway.dts.in
index 9b8988e..8e41eb7 100644
--- a/deployments/smm-gateway/config/default-sp/default_smm-gateway.dts.in
+++ b/deployments/smm-gateway/config/default-sp/default_smm-gateway.dts.in
@@ -15,6 +15,7 @@
exception-level = <1>; /* S-EL0 */
execution-state = <0>; /* AArch64 */
xlat-granule = <0>; /* 4KiB */
+ boot-order = /bits/ 16 <@EXPORT_SP_BOOT_ORDER@>;
messaging-method = <3>; /* Direct messaging only */
ns-interrupts-action = <2>; /* Non-secure interrupts are signaled */
diff --git a/tools/cmake/common/ExportSp.cmake b/tools/cmake/common/ExportSp.cmake
index 78701b9..ceb7700 100644
--- a/tools/cmake/common/ExportSp.cmake
+++ b/tools/cmake/common/ExportSp.cmake
@@ -15,6 +15,7 @@
export_sp(
SP_FFA_UUID_CANON <uuid_str_canon>
SP_NAME <name> MK_IN <.mk path>
+ SP_BOOT_ORDER <number>
DTS_IN <DTS path>
DTS_MEM_REGIONS <Memory region manifest path>
JSON_IN <JSON path>
@@ -29,6 +30,9 @@
The UUID of the SP binary a canonical string. When not set use the
SP_FFA_UUID_CANON as the SP_BIN_UUID_CANON.
+ ``SP_BOOT_ORDER``
+ Boot-order of the SP. 0 will be booted first.
+
``SP_NAME``
The name of the SP.
@@ -47,7 +51,7 @@
#]===]
function (export_sp)
set(options)
- set(oneValueArgs SP_FFA_UUID_CANON SP_BIN_UUID_CANON SP_NAME MK_IN DTS_IN DTS_MEM_REGIONS JSON_IN)
+ set(oneValueArgs SP_FFA_UUID_CANON SP_BIN_UUID_CANON SP_BOOT_ORDER SP_NAME MK_IN DTS_IN DTS_MEM_REGIONS JSON_IN)
set(multiValueArgs)
cmake_parse_arguments(EXPORT "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN} )
@@ -59,6 +63,9 @@
# We use the same UUID for the binary and FF-A if the UUID of the SP binary is not set
set(EXPORT_SP_BIN_UUID_CANON ${EXPORT_SP_FFA_UUID_CANON})
endif()
+ if(NOT DEFINED EXPORT_SP_BOOT_ORDER)
+ message(FATAL_ERROR "export_sp: mandatory parameter SP_BOOT_ORDER not defined!")
+ endif()
if(NOT DEFINED EXPORT_SP_NAME)
message(FATAL_ERROR "export_sp: mandatory parameter SP_NAME not defined!")
endif()