aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdison Ai <edison.ai@arm.com>2018-11-21 15:15:00 +0800
committerEdison Ai <edison.ai@arm.com>2019-01-26 10:30:07 +0800
commitbb614aa53862853a08c44db69c87db8f7ebdf684 (patch)
tree9688ed712055ff8b95eabead1b478bfd69a04244
parent11883014d9a1fa542f19f4776cfe289dd7231fb3 (diff)
downloadtrusted-firmware-m-bb614aa53862853a08c44db69c87db8f7ebdf684.tar.gz
Core: Enhance manifest to align with PSA
Below enhancements need to be applied to follow PSA: - IPC related parameters added in manifest file (such as signal, sid, minor_version and minor_policy). - IPC service partition manifest file added to generate secure partion source. - Remove "tfm_partition_name" from manifest file and use "name" directly. - Remove IPC unused template: tfm_sfid_list.inc.template Note: - Signal header also need to be added manually by hardcode for tool cannot support it now. Change-Id: I47c2c4058e99a0b278c7b05b1e8d80058bc185a1 Signed-off-by: Edison Ai <edison.ai@arm.com>
-rw-r--r--platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template44
-rw-r--r--platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template44
-rw-r--r--platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template44
-rw-r--r--platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template44
-rw-r--r--platform/include/tfm_plat_defs.h4
-rw-r--r--secure_fw/core/ipc/include/tfm_spm_signal_defs.h12
-rw-r--r--secure_fw/core/tfm_secure_api.c31
-rw-r--r--secure_fw/services/audit_logging/manifest.yaml11
-rw-r--r--secure_fw/services/crypto/manifest.yaml11
-rw-r--r--secure_fw/services/initial_attestation/manifest.yaml10
-rw-r--r--secure_fw/services/platform/manifest.yaml11
-rw-r--r--secure_fw/services/secure_storage/manifest.yaml11
-rw-r--r--secure_fw/services/tfm_partition_defs.inc2
-rw-r--r--secure_fw/services/tfm_partition_defs.inc.template4
-rw-r--r--secure_fw/services/tfm_partition_list.inc37
-rw-r--r--secure_fw/services/tfm_partition_list.inc.template16
-rw-r--r--secure_fw/services/tfm_service_list.inc48
-rw-r--r--secure_fw/services/tfm_service_list.inc.template26
-rw-r--r--secure_fw/services/tfm_sfid_list.inc92
-rw-r--r--secure_fw/services/tfm_sfid_list.inc.template24
-rw-r--r--secure_fw/spm/spm_api.c9
-rw-r--r--secure_fw/spm/spm_api.h7
-rw-r--r--secure_fw/spm/spm_db.h31
-rw-r--r--secure_fw/spm/spm_db_setup.h26
-rw-r--r--test/suites/ipc/non_secure/ipc_ns_interface_testsuite.c4
-rw-r--r--test/test_services/CMakeLists.inc4
-rw-r--r--test/test_services/tfm_core_test/manifest.yaml10
-rw-r--r--test/test_services/tfm_core_test_2/manifest.yaml10
-rw-r--r--test/test_services/tfm_ipc_client/tfm_ipc_client_partition.yaml (renamed from test/test_services/tfm_ipc_client/manifest.yaml)11
-rw-r--r--test/test_services/tfm_ipc_client/tfm_ipc_client_test.c (renamed from test/test_services/tfm_ipc_client/ipc_client_test.c)7
-rw-r--r--test/test_services/tfm_ipc_service/manifest.yaml36
-rw-r--r--test/test_services/tfm_ipc_service/tfm_ipc_service_partition.h16
-rw-r--r--test/test_services/tfm_ipc_service/tfm_ipc_service_partition.yaml34
-rw-r--r--test/test_services/tfm_ipc_service/tfm_ipc_service_test.c (renamed from test/test_services/tfm_ipc_service/ipc_service_test.c)2
-rw-r--r--test/test_services/tfm_secure_client_service/manifest.yaml11
-rw-r--r--test/test_services/tfm_sst_test_service/manifest.yaml11
-rw-r--r--tools/tfm_generated_file_list.yaml8
-rw-r--r--tools/tfm_manifest_list.yaml4
38 files changed, 392 insertions, 375 deletions
diff --git a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
index 1eb1e65bb5..dbaea18a9f 100644
--- a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
+++ b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
@@ -95,9 +95,9 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (LOADADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_DATA))
+ LONG (LOADADDR(.@@manifest.name@@_DATA))
+ LONG (ADDR(.@@manifest.name@@_DATA))
+ LONG (SIZEOF(.@@manifest.name@@_DATA))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -116,10 +116,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (ADDR(.@@manifest.tfm_partition_name@@_BSS))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_BSS))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_STACK))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_STACK))
+ LONG (ADDR(.@@manifest.name@@_BSS))
+ LONG (SIZEOF(.@@manifest.name@@_BSS))
+ LONG (ADDR(.@@manifest.name@@_STACK))
+ LONG (SIZEOF(.@@manifest.name@@_STACK))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -157,7 +157,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@ : ALIGN(32)
+ .@@manifest.name@@ : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.text*)
@@ -167,13 +167,13 @@ SECTIONS
@@manifest.tfm_linker_pattern.object_list@@(.text*)
@@manifest.tfm_linker_pattern.object_list@@(.rodata*)
@!GENERATOR_CONDITIONAL_END!@
- *(@@manifest.tfm_partition_name@@_ATTR_FN)
+ *(@@manifest.name@@_ATTR_FN)
. = ALIGN(32);
} > FLASH
- Image$$@@manifest.tfm_partition_name@@$$RO$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$RO$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
+ Image$$@@manifest.name@@$$RO$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$RO$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@@ -312,7 +312,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@_DATA : ALIGN(32)
+ .@@manifest.name@@_DATA : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.data*)
@@ -322,10 +322,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Base = ADDR(.@@manifest.tfm_partition_name@@_DATA);
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Limit = ADDR(.@@manifest.tfm_partition_name@@_DATA) + SIZEOF(.@@manifest.tfm_partition_name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Base = ADDR(.@@manifest.name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Limit = ADDR(.@@manifest.name@@_DATA) + SIZEOF(.@@manifest.name@@_DATA);
- .@@manifest.tfm_partition_name@@_BSS : ALIGN(32)
+ .@@manifest.name@@_BSS : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.bss*)
@@ -337,15 +337,15 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_BSS);
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_BSS) + SIZEOF(.@@manifest.tfm_partition_name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Base = ADDR(.@@manifest.name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.name@@_BSS) + SIZEOF(.@@manifest.name@@_BSS);
- .@@manifest.tfm_partition_name@@_STACK : ALIGN(128)
+ .@@manifest.name@@_STACK : ALIGN(128)
{
. += @@manifest.stack_size@@;
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_STACK);
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_STACK) + SIZEOF(.@@manifest.tfm_partition_name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Base = ADDR(.@@manifest.name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.name@@_STACK) + SIZEOF(.@@manifest.name@@_STACK);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
diff --git a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
index c971c6d1e5..ede4b2b5b0 100644
--- a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
+++ b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
@@ -95,9 +95,9 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (LOADADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_DATA))
+ LONG (LOADADDR(.@@manifest.name@@_DATA))
+ LONG (ADDR(.@@manifest.name@@_DATA))
+ LONG (SIZEOF(.@@manifest.name@@_DATA))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -116,10 +116,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (ADDR(.@@manifest.tfm_partition_name@@_BSS))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_BSS))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_STACK))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_STACK))
+ LONG (ADDR(.@@manifest.name@@_BSS))
+ LONG (SIZEOF(.@@manifest.name@@_BSS))
+ LONG (ADDR(.@@manifest.name@@_STACK))
+ LONG (SIZEOF(.@@manifest.name@@_STACK))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -157,7 +157,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@ : ALIGN(32)
+ .@@manifest.name@@ : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.text*)
@@ -167,13 +167,13 @@ SECTIONS
@@manifest.tfm_linker_pattern.object_list@@(.text*)
@@manifest.tfm_linker_pattern.object_list@@(.rodata*)
@!GENERATOR_CONDITIONAL_END!@
- *(@@manifest.tfm_partition_name@@_ATTR_FN)
+ *(@@manifest.name@@_ATTR_FN)
. = ALIGN(32);
} > FLASH
- Image$$@@manifest.tfm_partition_name@@$$RO$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$RO$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
+ Image$$@@manifest.name@@$$RO$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$RO$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@@ -312,7 +312,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@_DATA : ALIGN(32)
+ .@@manifest.name@@_DATA : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.data*)
@@ -322,10 +322,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Base = ADDR(.@@manifest.tfm_partition_name@@_DATA);
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Limit = ADDR(.@@manifest.tfm_partition_name@@_DATA) + SIZEOF(.@@manifest.tfm_partition_name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Base = ADDR(.@@manifest.name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Limit = ADDR(.@@manifest.name@@_DATA) + SIZEOF(.@@manifest.name@@_DATA);
- .@@manifest.tfm_partition_name@@_BSS : ALIGN(32)
+ .@@manifest.name@@_BSS : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.bss*)
@@ -337,15 +337,15 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_BSS);
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_BSS) + SIZEOF(.@@manifest.tfm_partition_name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Base = ADDR(.@@manifest.name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.name@@_BSS) + SIZEOF(.@@manifest.name@@_BSS);
- .@@manifest.tfm_partition_name@@_STACK : ALIGN(128)
+ .@@manifest.name@@_STACK : ALIGN(128)
{
. += @@manifest.stack_size@@;
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_STACK);
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_STACK) + SIZEOF(.@@manifest.tfm_partition_name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Base = ADDR(.@@manifest.name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.name@@_STACK) + SIZEOF(.@@manifest.name@@_STACK);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
diff --git a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
index 1eb1e65bb5..dbaea18a9f 100644
--- a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
+++ b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
@@ -95,9 +95,9 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (LOADADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_DATA))
+ LONG (LOADADDR(.@@manifest.name@@_DATA))
+ LONG (ADDR(.@@manifest.name@@_DATA))
+ LONG (SIZEOF(.@@manifest.name@@_DATA))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -116,10 +116,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (ADDR(.@@manifest.tfm_partition_name@@_BSS))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_BSS))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_STACK))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_STACK))
+ LONG (ADDR(.@@manifest.name@@_BSS))
+ LONG (SIZEOF(.@@manifest.name@@_BSS))
+ LONG (ADDR(.@@manifest.name@@_STACK))
+ LONG (SIZEOF(.@@manifest.name@@_STACK))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -157,7 +157,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@ : ALIGN(32)
+ .@@manifest.name@@ : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.text*)
@@ -167,13 +167,13 @@ SECTIONS
@@manifest.tfm_linker_pattern.object_list@@(.text*)
@@manifest.tfm_linker_pattern.object_list@@(.rodata*)
@!GENERATOR_CONDITIONAL_END!@
- *(@@manifest.tfm_partition_name@@_ATTR_FN)
+ *(@@manifest.name@@_ATTR_FN)
. = ALIGN(32);
} > FLASH
- Image$$@@manifest.tfm_partition_name@@$$RO$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$RO$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
+ Image$$@@manifest.name@@$$RO$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$RO$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@@ -312,7 +312,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@_DATA : ALIGN(32)
+ .@@manifest.name@@_DATA : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.data*)
@@ -322,10 +322,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Base = ADDR(.@@manifest.tfm_partition_name@@_DATA);
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Limit = ADDR(.@@manifest.tfm_partition_name@@_DATA) + SIZEOF(.@@manifest.tfm_partition_name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Base = ADDR(.@@manifest.name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Limit = ADDR(.@@manifest.name@@_DATA) + SIZEOF(.@@manifest.name@@_DATA);
- .@@manifest.tfm_partition_name@@_BSS : ALIGN(32)
+ .@@manifest.name@@_BSS : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.bss*)
@@ -337,15 +337,15 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_BSS);
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_BSS) + SIZEOF(.@@manifest.tfm_partition_name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Base = ADDR(.@@manifest.name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.name@@_BSS) + SIZEOF(.@@manifest.name@@_BSS);
- .@@manifest.tfm_partition_name@@_STACK : ALIGN(128)
+ .@@manifest.name@@_STACK : ALIGN(128)
{
. += @@manifest.stack_size@@;
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_STACK);
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_STACK) + SIZEOF(.@@manifest.tfm_partition_name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Base = ADDR(.@@manifest.name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.name@@_STACK) + SIZEOF(.@@manifest.name@@_STACK);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
diff --git a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
index 1a6b8bb554..461862d60b 100644
--- a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
+++ b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
@@ -95,9 +95,9 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (LOADADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_DATA))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_DATA))
+ LONG (LOADADDR(.@@manifest.name@@_DATA))
+ LONG (ADDR(.@@manifest.name@@_DATA))
+ LONG (SIZEOF(.@@manifest.name@@_DATA))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -116,10 +116,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- LONG (ADDR(.@@manifest.tfm_partition_name@@_BSS))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_BSS))
- LONG (ADDR(.@@manifest.tfm_partition_name@@_STACK))
- LONG (SIZEOF(.@@manifest.tfm_partition_name@@_STACK))
+ LONG (ADDR(.@@manifest.name@@_BSS))
+ LONG (SIZEOF(.@@manifest.name@@_BSS))
+ LONG (ADDR(.@@manifest.name@@_STACK))
+ LONG (SIZEOF(.@@manifest.name@@_STACK))
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
@@ -157,7 +157,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@ : ALIGN(32)
+ .@@manifest.name@@ : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.text*)
@@ -167,13 +167,13 @@ SECTIONS
@@manifest.tfm_linker_pattern.object_list@@(.text*)
@@manifest.tfm_linker_pattern.object_list@@(.rodata*)
@!GENERATOR_CONDITIONAL_END!@
- *(@@manifest.tfm_partition_name@@_ATTR_FN)
+ *(@@manifest.name@@_ATTR_FN)
. = ALIGN(32);
} > FLASH
- Image$$@@manifest.tfm_partition_name@@$$RO$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$RO$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Base = ADDR(.@@manifest.tfm_partition_name@@);
- Image$$@@manifest.tfm_partition_name@@$$Limit = ADDR(.@@manifest.tfm_partition_name@@) + SIZEOF(.@@manifest.tfm_partition_name@@);
+ Image$$@@manifest.name@@$$RO$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$RO$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Base = ADDR(.@@manifest.name@@);
+ Image$$@@manifest.name@@$$Limit = ADDR(.@@manifest.name@@) + SIZEOF(.@@manifest.name@@);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@@ -312,7 +312,7 @@ SECTIONS
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
- .@@manifest.tfm_partition_name@@_DATA : ALIGN(32)
+ .@@manifest.name@@_DATA : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.data*)
@@ -322,10 +322,10 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Base = ADDR(.@@manifest.tfm_partition_name@@_DATA);
- Image$$@@manifest.tfm_partition_name@@_DATA$$RW$$Limit = ADDR(.@@manifest.tfm_partition_name@@_DATA) + SIZEOF(.@@manifest.tfm_partition_name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Base = ADDR(.@@manifest.name@@_DATA);
+ Image$$@@manifest.name@@_DATA$$RW$$Limit = ADDR(.@@manifest.name@@_DATA) + SIZEOF(.@@manifest.name@@_DATA);
- .@@manifest.tfm_partition_name@@_BSS : ALIGN(32)
+ .@@manifest.name@@_BSS : ALIGN(32)
{
@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_linker_pattern.library_list@@
@@manifest.tfm_linker_pattern.library_list@@:*(.bss*)
@@ -337,15 +337,15 @@ SECTIONS
@!GENERATOR_CONDITIONAL_END!@
. = ALIGN(32);
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_BSS);
- Image$$@@manifest.tfm_partition_name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_BSS) + SIZEOF(.@@manifest.tfm_partition_name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Base = ADDR(.@@manifest.name@@_BSS);
+ Image$$@@manifest.name@@_DATA$$ZI$$Limit = ADDR(.@@manifest.name@@_BSS) + SIZEOF(.@@manifest.name@@_BSS);
- .@@manifest.tfm_partition_name@@_STACK : ALIGN(128)
+ .@@manifest.name@@_STACK : ALIGN(128)
{
. += @@manifest.stack_size@@;
} > RAM AT> FLASH
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Base = ADDR(.@@manifest.tfm_partition_name@@_STACK);
- Image$$@@manifest.tfm_partition_name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.tfm_partition_name@@_STACK) + SIZEOF(.@@manifest.tfm_partition_name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Base = ADDR(.@@manifest.name@@_STACK);
+ Image$$@@manifest.name@@_STACK$$ZI$$Limit = ADDR(.@@manifest.name@@_STACK) + SIZEOF(.@@manifest.name@@_STACK);
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
diff --git a/platform/include/tfm_plat_defs.h b/platform/include/tfm_plat_defs.h
index 66747ee1ed..f0b4297a24 100644
--- a/platform/include/tfm_plat_defs.h
+++ b/platform/include/tfm_plat_defs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -30,7 +30,7 @@ enum tfm_plat_err_t {
* secure partition at linker time in TF-M Level 3.
*
* \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
- * file "tfm_partition_name" field.
+ * file "name" field.
*/
#define TFM_LINK_SET_OBJECT_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
__attribute__((section(TFM_PARTITION_NAME"_ATTR_FN")))
diff --git a/secure_fw/core/ipc/include/tfm_spm_signal_defs.h b/secure_fw/core/ipc/include/tfm_spm_signal_defs.h
new file mode 100644
index 0000000000..e632354680
--- /dev/null
+++ b/secure_fw/core/ipc/include/tfm_spm_signal_defs.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2018, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+#ifndef __TFM_SPM_SIGNAL_DEFS_H__
+#define __TFM_SPM_SIGNAL_DEFS_H__
+
+#include "test/test_services/tfm_ipc_service/tfm_ipc_service_partition.h"
+
+#endif
diff --git a/secure_fw/core/tfm_secure_api.c b/secure_fw/core/tfm_secure_api.c
index 863643b249..698f17af2f 100644
--- a/secure_fw/core/tfm_secure_api.c
+++ b/secure_fw/core/tfm_secure_api.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -94,12 +94,13 @@ static int32_t tfm_start_partition(struct tfm_sfn_req_s *desc_ptr,
caller_flags = tfm_spm_partition_get_flags(caller_partition_idx);
/* Check partition state consistency */
- if (((caller_flags&SPM_PART_FLAG_SECURE) != 0) != (!desc_ptr->ns_caller)) {
+ if (((caller_flags & SPM_PART_FLAG_APP_ROT) != 0)
+ != (!desc_ptr->ns_caller)) {
/* Partition state inconsistency detected */
return TFM_SECURE_LOCK_FAILED;
}
- if((caller_flags & SPM_PART_FLAG_SECURE) == 0) {
+ if((caller_flags & SPM_PART_FLAG_APP_ROT) == 0) {
/* Disable NS exception handling while secure service is running.
* FixMe:
* This restriction is applied to limit the number of possible attack
@@ -123,7 +124,7 @@ static int32_t tfm_start_partition(struct tfm_sfn_req_s *desc_ptr,
/* Make thread mode unprivileged while untrusted partition init is
* executed
*/
- if ((partition_flags & SPM_PART_FLAG_TRUSTED) == 0) {
+ if ((partition_flags & SPM_PART_FLAG_PSA_ROT) == 0) {
CONTROL_Type ctrl;
ctrl.w = __get_CONTROL();
@@ -158,7 +159,7 @@ static int32_t tfm_start_partition(struct tfm_sfn_req_s *desc_ptr,
caller_partition_idx);
tfm_spm_partition_store_context(caller_partition_idx, psp, excReturn);
- if ((caller_flags&SPM_PART_FLAG_SECURE)) {
+ if ((caller_flags & SPM_PART_FLAG_APP_ROT)) {
tfm_spm_partition_set_caller_client_id(partition_idx,
caller_partition_id);
} else {
@@ -245,7 +246,7 @@ static int32_t tfm_return_from_partition(uint32_t *excReturn)
tfm_secure_lock--;
- if((return_partition_flags & SPM_PART_FLAG_SECURE) == 0) {
+ if((return_partition_flags & SPM_PART_FLAG_APP_ROT) == 0) {
/* Re-enable NS exceptions when secure service returns to NS client.
* FixMe:
* To be removed when pre-emption and context management issues have
@@ -261,7 +262,7 @@ static int32_t tfm_return_from_partition(uint32_t *excReturn)
/* Restore privilege for thread mode during TF-M init. This is only
* have to be done if the partition is not trusted.
*/
- if ((current_partition_flags & SPM_PART_FLAG_TRUSTED) == 0) {
+ if ((current_partition_flags & SPM_PART_FLAG_PSA_ROT) == 0) {
CONTROL_Type ctrl;
ctrl.w = __get_CONTROL();
@@ -279,7 +280,7 @@ static int32_t tfm_return_from_partition(uint32_t *excReturn)
ERROR_MSG("Failed to configure sandbox for partition!");
tfm_secure_api_error_handler();
}
- if (return_partition_flags&SPM_PART_FLAG_SECURE) {
+ if (return_partition_flags & SPM_PART_FLAG_APP_ROT) {
/* Restore share status */
tfm_spm_partition_set_share(
return_partition_idx,
@@ -290,7 +291,7 @@ static int32_t tfm_return_from_partition(uint32_t *excReturn)
#endif
#if TFM_LVL == 1
- if (!(return_partition_flags & SPM_PART_FLAG_SECURE) ||
+ if (!(return_partition_flags & SPM_PART_FLAG_APP_ROT) ||
(tfm_secure_api_initializing)) {
/* In TFM level 1 context restore is only done when
* returning to NS or after initialization
@@ -472,7 +473,7 @@ void tfm_core_validate_secure_caller_handler(uint32_t *svc_args)
uint32_t caller_partition_flags =
tfm_spm_partition_get_flags(curr_part_data->caller_partition_idx);
- if (!(running_partition_flags&SPM_PART_FLAG_SECURE)) {
+ if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) {
/* This handler shouldn't be called from outside partition context.
* Partitions are only allowed to run while S domain is locked.
*/
@@ -481,7 +482,7 @@ void tfm_core_validate_secure_caller_handler(uint32_t *svc_args)
}
/* Store return value in r0 */
- if (caller_partition_flags&SPM_PART_FLAG_SECURE) {
+ if (caller_partition_flags & SPM_PART_FLAG_APP_ROT) {
res = TFM_SUCCESS;
}
svc_args[0] = res;
@@ -555,7 +556,7 @@ void tfm_core_get_caller_client_id_handler(uint32_t *svc_args)
tfm_spm_partition_get_runtime_data(running_partition_idx);
int res = 0;
- if (!(running_partition_flags&SPM_PART_FLAG_SECURE)) {
+ if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) {
/* This handler shouldn't be called from outside partition context.
* Partitions are only allowed to run while S domain is locked.
*/
@@ -599,7 +600,7 @@ void tfm_core_memory_permission_check_handler(uint32_t *svc_args)
int32_t flags = 0;
void *rangeptr;
- if (!(running_partition_flags&SPM_PART_FLAG_SECURE) || (size == 0)) {
+ if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT) || (size == 0)) {
/* This handler should only be called from a secure partition. */
svc_args[0] = TFM_ERROR_INVALID_PARAMETER;
return;
@@ -768,7 +769,7 @@ void tfm_core_set_buffer_area_handler(uint32_t *args)
/* tfm_core_set_buffer_area() returns int32_t */
int32_t *res_ptr = (int32_t *)&args[0];
- if (!(running_partition_flags&SPM_PART_FLAG_SECURE)) {
+ if (!(running_partition_flags & SPM_PART_FLAG_APP_ROT)) {
/* This handler should only be called from a secure partition. */
*res_ptr = TFM_ERROR_INVALID_PARAMETER;
return;
@@ -776,7 +777,7 @@ void tfm_core_set_buffer_area_handler(uint32_t *args)
switch (args[0]) {
case TFM_BUFFER_SHARE_DEFAULT:
- share = (!(caller_partition_flags&SPM_PART_FLAG_SECURE)) ?
+ share = (!(caller_partition_flags & SPM_PART_FLAG_APP_ROT)) ?
(TFM_BUFFER_SHARE_NS_CODE) : (TFM_BUFFER_SHARE_SCRATCH);
break;
case TFM_BUFFER_SHARE_SCRATCH:
diff --git a/secure_fw/services/audit_logging/manifest.yaml b/secure_fw/services/audit_logging/manifest.yaml
index 694b82279c..371ce2dd6b 100644
--- a/secure_fw/services/audit_logging/manifest.yaml
+++ b/secure_fw/services/audit_logging/manifest.yaml
@@ -1,18 +1,16 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "AUDIT_LOG",
- "type": "TRUSTED",
- "tfm_partition_name": "TFM_SP_AUDIT_LOG",
- "tfm_trusted": true,
+ "name": "TFM_SP_AUDIT_LOG",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000101",
- "entry_point": "main",
+ "entry_point": "audit_core_init",
"stack_size": "0x1000",
"heap_size": "0x0400",
"mmio_regions" : [
@@ -22,7 +20,6 @@
"conditional": "AUDIT_UART_REDIRECTION"
}
],
- "tfm_init_symbol": "audit_core_init",
"secure_functions": [
{
"sfid": "TFM_AUDIT_RETRIEVE_RECORD_SFID",
diff --git a/secure_fw/services/crypto/manifest.yaml b/secure_fw/services/crypto/manifest.yaml
index 05a23310c5..32f794b4a6 100644
--- a/secure_fw/services/crypto/manifest.yaml
+++ b/secure_fw/services/crypto/manifest.yaml
@@ -1,21 +1,18 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "CRYPTO",
- "type": "TRUSTED",
- "tfm_partition_name": "TFM_SP_CRYPTO",
- "tfm_trusted": true,
+ "name": "TFM_SP_CRYPTO",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000102",
- "entry_point": "main",
+ "entry_point": "tfm_crypto_init",
"stack_size": "0x2000",
"heap_size": "0x0400",
- "tfm_init_symbol": "tfm_crypto_init",
"secure_functions": [
{
"sfid": "TFM_CRYPTO_ALLOC_OPERATION_SFID",
diff --git a/secure_fw/services/initial_attestation/manifest.yaml b/secure_fw/services/initial_attestation/manifest.yaml
index 319987b5a2..b46f577c8f 100644
--- a/secure_fw/services/initial_attestation/manifest.yaml
+++ b/secure_fw/services/initial_attestation/manifest.yaml
@@ -1,18 +1,16 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "INITIAL_ATTESTATION",
- "type": "TRUSTED",
- "tfm_partition_name": "TFM_SP_INITIAL_ATTESTATION",
- "tfm_trusted": true,
+ "name": "TFM_SP_INITIAL_ATTESTATION",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000103",
- "entry_point": "main",
+ "entry_point": "attest_init",
"stack_size": "0x0400",
"heap_size": "0x0400",
"tfm_init_symbol": "attest_init",
diff --git a/secure_fw/services/platform/manifest.yaml b/secure_fw/services/platform/manifest.yaml
index 8688ed6dd1..e66b54eff5 100644
--- a/secure_fw/services/platform/manifest.yaml
+++ b/secure_fw/services/platform/manifest.yaml
@@ -1,21 +1,18 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "SP_PLATFORM",
- "type": "TRUSTED",
- "tfm_partition_name": "TFM_SP_PLATFORM",
- "tfm_trusted": true,
+ "name": "TFM_SP_PLATFORM",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000102",
- "entry_point": "main",
+ "entry_point": "platform_sp_init",
"stack_size": "0x0400",
"heap_size": "0x0400",
- "tfm_init_symbol": "platform_sp_init",
"secure_functions": [
{
"sfid": "TFM_SP_PLATFORM_SYSTEM_RESET_SFID",
diff --git a/secure_fw/services/secure_storage/manifest.yaml b/secure_fw/services/secure_storage/manifest.yaml
index 3b1708a52c..883f6fdba0 100644
--- a/secure_fw/services/secure_storage/manifest.yaml
+++ b/secure_fw/services/secure_storage/manifest.yaml
@@ -1,21 +1,18 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "SST",
- "type": "TRUSTED",
- "tfm_partition_name": "TFM_SP_STORAGE",
- "tfm_trusted": true,
+ "name": "TFM_SP_STORAGE",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000100",
- "entry_point": "main",
+ "entry_point": "sst_am_prepare",
"stack_size": "0x2000",
"heap_size": "0x0400",
- "tfm_init_symbol": "sst_am_prepare",
"secure_functions": [
{
"sfid": "SST_AM_CREATE_SFID",
diff --git a/secure_fw/services/tfm_partition_defs.inc b/secure_fw/services/tfm_partition_defs.inc
index b71383970b..5cd4186f25 100644
--- a/secure_fw/services/tfm_partition_defs.inc
+++ b/secure_fw/services/tfm_partition_defs.inc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
diff --git a/secure_fw/services/tfm_partition_defs.inc.template b/secure_fw/services/tfm_partition_defs.inc.template
index 6c93c77840..12eeefc32f 100644
--- a/secure_fw/services/tfm_partition_defs.inc.template
+++ b/secure_fw/services/tfm_partition_defs.inc.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -14,7 +14,7 @@
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
-#define @@manifest.tfm_partition_name@@_ID (TFM_SP_BASE + @!GENERATOR_ITERATION_COUNTER!@)
+#define @@manifest.name@@_ID (TFM_SP_BASE + @!GENERATOR_ITERATION_COUNTER!@)
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#endif /* @@attr.conditional@@ */
@!GENERATOR_CONDITIONAL_END!@
diff --git a/secure_fw/services/tfm_partition_list.inc b/secure_fw/services/tfm_partition_list.inc
index f903eddfb9..3dfc357001 100644
--- a/secure_fw/services/tfm_partition_list.inc
+++ b/secure_fw/services/tfm_partition_list.inc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -11,63 +11,76 @@
#define __TFM_PARTITION_LIST_INC__
/******** TFM_SP_STORAGE ********/
-PARTITION_DECLARE(TFM_SP_STORAGE, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_STORAGE, 0
+ , "PSA-ROT", 0x00000100, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_STORAGE, sst_am_prepare);
/******** TFM_SP_AUDIT_LOG ********/
-PARTITION_DECLARE(TFM_SP_AUDIT_LOG, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_AUDIT_LOG, 0
+ , "PSA-ROT", 0x00000101, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_AUDIT_LOG, audit_core_init);
#ifdef AUDIT_UART_REDIRECTION
PARTITION_ADD_PERIPHERAL(TFM_SP_AUDIT_LOG, TFM_PERIPHERAL_UART1);
#endif /* AUDIT_UART_REDIRECTION */
/******** TFM_SP_CRYPTO ********/
-PARTITION_DECLARE(TFM_SP_CRYPTO, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_CRYPTO, 0
+ , "PSA-ROT", 0x00000102, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_CRYPTO, tfm_crypto_init);
/******** TFM_SP_PLATFORM ********/
-PARTITION_DECLARE(TFM_SP_PLATFORM, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_PLATFORM, 0
+ , "PSA-ROT", 0x00000102, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_PLATFORM, platform_sp_init);
/******** TFM_SP_INITIAL_ATTESTATION ********/
-PARTITION_DECLARE(TFM_SP_INITIAL_ATTESTATION, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_INITIAL_ATTESTATION, 0
+ , "PSA-ROT", 0x00000103, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_INITIAL_ATTESTATION, attest_init);
#ifdef TFM_PARTITION_TEST_CORE
/******** TFM_SP_CORE_TEST ********/
-PARTITION_DECLARE(TFM_SP_CORE_TEST, SPM_PART_FLAG_SECURE);
+PARTITION_DECLARE(TFM_SP_CORE_TEST, 0
+ , "APPLICATION-ROT", 0x00000002, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_CORE_TEST, core_test_init);
PARTITION_ADD_PERIPHERAL(TFM_SP_CORE_TEST, TFM_PERIPHERAL_FPGA_IO);
#endif /* TFM_PARTITION_TEST_CORE */
#ifdef TFM_PARTITION_TEST_CORE
/******** TFM_SP_CORE_TEST_2 ********/
-PARTITION_DECLARE(TFM_SP_CORE_TEST_2, SPM_PART_FLAG_SECURE);
+PARTITION_DECLARE(TFM_SP_CORE_TEST_2, 0
+ , "APPLICATION-ROT", 0x00000003, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_CORE_TEST_2, core_test_2_init);
#endif /* TFM_PARTITION_TEST_CORE */
#ifdef TFM_PARTITION_TEST_SST
/******** TFM_SP_SST_TEST_PARTITION ********/
-PARTITION_DECLARE(TFM_SP_SST_TEST_PARTITION, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_SST_TEST_PARTITION, 0
+ , "PSA-ROT", 0x00000004, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_SST_TEST_PARTITION, sst_test_service_init);
#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
-PARTITION_DECLARE(TFM_SP_SECURE_TEST_PARTITION, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
+PARTITION_DECLARE(TFM_SP_SECURE_TEST_PARTITION, 0
+ , "PSA-ROT", 0x00000005, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_SECURE_TEST_PARTITION, tfm_secure_client_service_init);
PARTITION_ADD_PERIPHERAL(TFM_SP_SECURE_TEST_PARTITION, TFM_PERIPHERAL_STD_UART);
#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
#ifdef TFM_PSA_API
/******** TFM_SP_IPC_SERVICE_TEST ********/
-PARTITION_DECLARE(TFM_SP_IPC_SERVICE_TEST, SPM_PART_FLAG_SECURE);
+PARTITION_DECLARE(TFM_SP_IPC_SERVICE_TEST, 0
+ | SPM_PART_FLAG_IPC
+ , "APPLICATION-ROT", 0x00000007, HIGH);
PARTITION_ADD_INIT_FUNC(TFM_SP_IPC_SERVICE_TEST, ipc_service_test_main);
#endif /* TFM_PSA_API */
#ifdef TFM_PSA_API
/******** TFM_SP_IPC_CLIENT_TEST ********/
-PARTITION_DECLARE(TFM_SP_IPC_CLIENT_TEST, SPM_PART_FLAG_SECURE);
+PARTITION_DECLARE(TFM_SP_IPC_CLIENT_TEST, 0
+ | SPM_PART_FLAG_IPC
+ , "APPLICATION-ROT", 0x00000006, NORMAL);
PARTITION_ADD_INIT_FUNC(TFM_SP_IPC_CLIENT_TEST, ipc_client_init);
#endif /* TFM_PSA_API */
diff --git a/secure_fw/services/tfm_partition_list.inc.template b/secure_fw/services/tfm_partition_list.inc.template
index 7cc1993c94..5ab855e712 100644
--- a/secure_fw/services/tfm_partition_list.inc.template
+++ b/secure_fw/services/tfm_partition_list.inc.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -14,18 +14,18 @@
@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
#ifdef @@attr.conditional@@
@!GENERATOR_CONDITIONAL_END!@
-/******** @@manifest.tfm_partition_name@@ ********/
-@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_trusted@@
-PARTITION_DECLARE(@@manifest.tfm_partition_name@@, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
-@!GENERATOR_CONDITIONAL_ELSE!@
-PARTITION_DECLARE(@@manifest.tfm_partition_name@@, SPM_PART_FLAG_SECURE);
+/******** @@manifest.name@@ ********/
+PARTITION_DECLARE(@@manifest.name@@, 0
+@!GENERATOR_CONDITIONAL_START!@ @@manifest.tfm_partition_ipc@@
+ | SPM_PART_FLAG_IPC
@!GENERATOR_CONDITIONAL_END!@
-PARTITION_ADD_INIT_FUNC(@@manifest.tfm_partition_name@@, @@manifest.tfm_init_symbol@@);
+ , "@@manifest.type@@", @@manifest.id@@, @@manifest.priority@@);
+PARTITION_ADD_INIT_FUNC(@@manifest.name@@, @@manifest.entry_point@@);
@!GENERATOR_CONDITIONAL_START!@ @@manifest.mmio_regions.conditional@@
#ifdef @@manifest.mmio_regions.conditional@@
@!GENERATOR_CONDITIONAL_END!@
@!GENERATOR_CONDITIONAL_START!@ @@manifest.mmio_regions.name@@
-PARTITION_ADD_PERIPHERAL(@@manifest.tfm_partition_name@@, @@manifest.mmio_regions.name@@);
+PARTITION_ADD_PERIPHERAL(@@manifest.name@@, @@manifest.mmio_regions.name@@);
@!GENERATOR_CONDITIONAL_END!@
@!GENERATOR_CONDITIONAL_START!@ @@manifest.mmio_regions.conditional@@
#endif /* @@manifest.mmio_regions.conditional@@ */
diff --git a/secure_fw/services/tfm_service_list.inc b/secure_fw/services/tfm_service_list.inc
new file mode 100644
index 0000000000..eb29c06359
--- /dev/null
+++ b/secure_fw/services/tfm_service_list.inc
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
+
+#ifndef __TFM_SERVICE_LIST_INC__
+#define __TFM_SERVICE_LIST_INC__
+
+/******** TFM_SP_STORAGE ********/
+
+/******** TFM_SP_AUDIT_LOG ********/
+
+/******** TFM_SP_CRYPTO ********/
+
+/******** TFM_SP_PLATFORM ********/
+
+/******** TFM_SP_INITIAL_ATTESTATION ********/
+
+#ifdef TFM_PARTITION_TEST_CORE
+/******** TFM_SP_CORE_TEST ********/
+#endif /* TFM_PARTITION_TEST_CORE */
+
+#ifdef TFM_PARTITION_TEST_CORE
+/******** TFM_SP_CORE_TEST_2 ********/
+#endif /* TFM_PARTITION_TEST_CORE */
+
+#ifdef TFM_PARTITION_TEST_SST
+/******** TFM_SP_SST_TEST_PARTITION ********/
+#endif /* TFM_PARTITION_TEST_SST */
+
+#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
+/******** TFM_SP_SECURE_TEST_PARTITION ********/
+#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
+
+#ifdef TFM_PSA_API
+/******** TFM_SP_IPC_SERVICE_TEST ********/
+{"IPC_SID_BASIC", TFM_SP_IPC_SERVICE_TEST_ID, IPC_BASIC_SIGNAL, 0x00001000, true, 1, TFM_VERSION_POLICY_STRICT},
+#endif /* TFM_PSA_API */
+
+#ifdef TFM_PSA_API
+/******** TFM_SP_IPC_CLIENT_TEST ********/
+#endif /* TFM_PSA_API */
+
+#endif /* __TFM_SERVICE_LIST_INC__ */
diff --git a/secure_fw/services/tfm_service_list.inc.template b/secure_fw/services/tfm_service_list.inc.template
new file mode 100644
index 0000000000..f247fec431
--- /dev/null
+++ b/secure_fw/services/tfm_service_list.inc.template
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+@!GENERATOR_DONOTEDIT_WARNING!@
+
+#ifndef __TFM_SERVICE_LIST_INC__
+#define __TFM_SERVICE_LIST_INC__
+
+@!GENERATOR_BLOCK_START!@
+@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
+#ifdef @@attr.conditional@@
+@!GENERATOR_CONDITIONAL_END!@
+/******** @@manifest.name@@ ********/
+@!GENERATOR_CONDITIONAL_START!@ @@manifest.services@@
+{"@@manifest.services.name@@", @@manifest.name@@_ID, @@manifest.services.signal@@, @@manifest.services.sid@@, @@manifest.services.non_secure_clients@@, @@manifest.services.minor_version@@, TFM_VERSION_POLICY_@@manifest.services.minor_policy@@},
+@!GENERATOR_CONDITIONAL_END!@
+@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
+#endif /* @@attr.conditional@@ */
+@!GENERATOR_CONDITIONAL_END!@
+
+@!GENERATOR_BLOCK_END!@
+#endif /* __TFM_SERVICE_LIST_INC__ */
diff --git a/secure_fw/services/tfm_sfid_list.inc b/secure_fw/services/tfm_sfid_list.inc
deleted file mode 100644
index 4681697fdb..0000000000
--- a/secure_fw/services/tfm_sfid_list.inc
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
-
-#ifndef __TFM_SFID_LIST_INC__
-#define __TFM_SFID_LIST_INC__
-
- /******** TFM_SP_STORAGE ********/
- {sst_am_create, SST_AM_CREATE_SFID},
- {sst_am_get_info, SST_AM_GET_INFO_SFID},
- {sst_am_get_attributes, SST_AM_GET_ATTRIBUTES_SFID},
- {sst_am_set_attributes, SST_AM_SET_ATTRIBUTES_SFID},
- {sst_am_read, SST_AM_READ_SFID},
- {sst_am_write, SST_AM_WRITE_SFID},
- {sst_am_delete, SST_AM_DELETE_SFID},
-
- /******** TFM_SP_AUDIT_LOG ********/
- {audit_core_retrieve_record, TFM_AUDIT_RETRIEVE_RECORD_SFID},
- {audit_core_add_record, TFM_AUDIT_ADD_RECORD_SFID},
- {audit_core_get_info, TFM_AUDIT_GET_INFO_SFID},
- {audit_core_get_record_info, TFM_AUDIT_GET_RECORD_INFO_SFID},
- {audit_core_delete_record, TFM_AUDIT_DELETE_RECORD_SFID},
-
- /******** TFM_SP_CRYPTO ********/
- {tfm_crypto_alloc_operation, TFM_CRYPTO_ALLOC_OPERATION_SFID},
- {tfm_crypto_check_operation, TFM_CRYPTO_CHECK_OPERATION_SFID},
- {tfm_crypto_release_operation, TFM_CRYPTO_RELEASE_OPERATION_SFID},
- {tfm_crypto_import_key, TFM_CRYPTO_IMPORT_KEY_SFID},
- {tfm_crypto_destroy_key, TFM_CRYPTO_DESTROY_KEY_SFID},
- {tfm_crypto_get_key_information, TFM_CRYPTO_GET_KEY_INFORMATION_SFID},
- {tfm_crypto_export_key, TFM_CRYPTO_EXPORT_KEY_SFID},
- {tfm_crypto_encrypt_set_iv, TFM_CRYPTO_ENCRYPT_SET_IV_SFID},
- {tfm_crypto_encrypt_setup, TFM_CRYPTO_ENCRYPT_SETUP_SFID},
- {tfm_crypto_decrypt_setup, TFM_CRYPTO_DECRYPT_SETUP_SFID},
- {tfm_crypto_cipher_update_wrapper, TFM_CRYPTO_CIPHER_UPDATE_SFID},
- {tfm_crypto_cipher_abort, TFM_CRYPTO_CIPHER_ABORT_SFID},
- {tfm_crypto_cipher_finish, TFM_CRYPTO_CIPHER_FINISH_SFID},
- {tfm_crypto_hash_start, TFM_CRYPTO_HASH_START_SFID},
- {tfm_crypto_hash_update, TFM_CRYPTO_HASH_UPDATE_SFID},
- {tfm_crypto_hash_finish, TFM_CRYPTO_HASH_FINISH_SFID},
- {tfm_crypto_hash_verify, TFM_CRYPTO_HASH_VERIFY_SFID},
- {tfm_crypto_hash_abort, TFM_CRYPTO_HASH_ABORT_SFID},
-
- /******** TFM_SP_PLATFORM ********/
- {platform_sp_system_reset, TFM_SP_PLATFORM_SYSTEM_RESET_SFID},
-
- /******** TFM_SP_INITIAL_ATTESTATION ********/
- {attest_get_token, TFM_ATTEST_GET_TOKEN_SFID},
-
-#ifdef TFM_PARTITION_TEST_CORE
- /******** TFM_SP_CORE_TEST ********/
- {spm_core_test_sfn, TFM_CORE_TEST_SFN_SFID},
- {spm_core_test_sfn_init_success, TFM_CORE_TEST_SFN_INIT_SUCCESS_SFID},
- {spm_core_test_sfn_direct_recursion, TFM_CORE_TEST_SFN_DIRECT_RECURSION_SFID},
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_CORE
- /******** TFM_SP_CORE_TEST_2 ********/
- {spm_core_test_2_slave_service, TFM_CORE_TEST_2_SFN_SLAVE_SERVICE_SFID},
- {spm_core_test_2_sfn_invert, TFM_CORE_TEST_2_SFN_INVERT_SFID},
- {spm_core_test_2_check_caller_client_id, TFM_CORE_TEST_2_SFN_CHECK_CALLER_CLIENT_ID_SFID},
-#endif /* TFM_PARTITION_TEST_CORE */
-
-#ifdef TFM_PARTITION_TEST_SST
- /******** TFM_SP_SST_TEST_PARTITION ********/
- {sst_test_service_sfn_setup, TFM_SST_TEST_SFN_SETUP_SFID},
- {sst_test_service_sfn_dummy_encrypt, TFM_SST_TEST_SFN_DUMMY_ENCRYPT_SFID},
- {sst_test_service_sfn_dummy_decrypt, TFM_SST_TEST_SFN_DUMMY_DECRYPT_SFID},
- {sst_test_service_sfn_clean, TFM_SST_TEST_SFN_CLEAN_SFID},
-#endif /* TFM_PARTITION_TEST_SST */
-
-#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
- /******** TFM_SP_SECURE_TEST_PARTITION ********/
- {tfm_secure_client_service_sfn_run_tests, TFM_SECURE_CLIENT_SFN_RUN_TESTS_SFID},
-#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-
-#ifdef TFM_PSA_API
- /******** TFM_SP_IPC_SERVICE_TEST ********/
- {ipc_service_call, IPC_SERVICE_CALL_SFID},
-#endif /* TFM_PSA_API */
-
-#ifdef TFM_PSA_API
- /******** TFM_SP_IPC_CLIENT_TEST ********/
- {False, False},
-#endif /* TFM_PSA_API */
-
-#endif /* __TFM_SFID_LIST_INC__ */
diff --git a/secure_fw/services/tfm_sfid_list.inc.template b/secure_fw/services/tfm_sfid_list.inc.template
deleted file mode 100644
index 7f9bb92c16..0000000000
--- a/secure_fw/services/tfm_sfid_list.inc.template
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-@!GENERATOR_DONOTEDIT_WARNING!@
-
-#ifndef __TFM_SFID_LIST_INC__
-#define __TFM_SFID_LIST_INC__
-
-@!GENERATOR_BLOCK_START!@
-@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
-#ifdef @@attr.conditional@@
-@!GENERATOR_CONDITIONAL_END!@
- /******** @@manifest.tfm_partition_name@@ ********/
- {@@manifest.secure_functions.tfm_symbol@@, @@manifest.secure_functions.sfid@@},
-@!GENERATOR_CONDITIONAL_START!@ @@attr.conditional@@
-#endif /* @@attr.conditional@@ */
-@!GENERATOR_CONDITIONAL_END!@
-
-@!GENERATOR_BLOCK_END!@
-#endif /* __TFM_SFID_LIST_INC__ */
diff --git a/secure_fw/spm/spm_api.c b/secure_fw/spm/spm_api.c
index 2aeb903495..3167e5a2bb 100644
--- a/secure_fw/spm/spm_api.c
+++ b/secure_fw/spm/spm_api.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -118,7 +118,7 @@ enum spm_err_t tfm_spm_db_init(void)
g_spm_partition_db.partition_count]);
part_ptr->static_data.partition_id = TFM_SP_CORE_ID;
part_ptr->static_data.partition_flags =
- SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED;
+ SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_PSA_ROT;
part_ptr->runtime_data.partition_state = SPM_PARTITION_STATE_UNINIT;
++g_spm_partition_db.partition_count;
@@ -141,6 +141,11 @@ enum spm_err_t tfm_spm_partition_init(void)
/* Call the init function for each partition */
for (idx = 0; idx < g_spm_partition_db.partition_count; ++idx) {
part = &g_spm_partition_db.partitions[idx];
+#ifdef TFM_PSA_API
+ if (part->static_data.partition_flags & SPM_PART_FLAG_IPC) {
+ continue;
+ }
+#endif
tfm_spm_hal_configure_default_isolation(part->platform_data);
if (part->static_data.partition_init == NULL) {
tfm_spm_partition_set_state(idx, SPM_PARTITION_STATE_IDLE);
diff --git a/secure_fw/spm/spm_api.h b/secure_fw/spm/spm_api.h
index f0034afa34..c3f7414d4a 100644
--- a/secure_fw/spm/spm_api.h
+++ b/secure_fw/spm/spm_api.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -32,8 +32,9 @@ enum spm_part_state_t {
};
enum spm_part_flag_mask_t {
- SPM_PART_FLAG_SECURE = 0x01,
- SPM_PART_FLAG_TRUSTED = 0x02,
+ SPM_PART_FLAG_APP_ROT = 0x01,
+ SPM_PART_FLAG_PSA_ROT = 0x02,
+ SPM_PART_FLAG_IPC = 0x04
};
/**
diff --git a/secure_fw/spm/spm_db.h b/secure_fw/spm/spm_db.h
index 4b3b41388c..cba1446ea3 100644
--- a/secure_fw/spm/spm_db.h
+++ b/secure_fw/spm/spm_db.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -8,8 +8,36 @@
#ifndef __SPM_DB_H__
#define __SPM_DB_H__
+#ifdef TFM_PSA_API
+#include "tfm_thread.h"
+#endif
+
+struct spm_partition_desc_t;
+struct spm_partition_db_t;
+
+uint32_t get_partition_idx(uint32_t partition_id);
+
typedef int32_t(*sp_init_function)(void);
+#define TFM_PARTITION_TYPE_APP "APPLICATION-ROT"
+#define TFM_PARTITION_TYPE_PSA "PSA-ROT"
+
+#ifdef TFM_PSA_API
+enum tfm_partition_priority {
+ TFM_PRIORITY_LOW = THRD_PRIOR_LOWEST,
+ TFM_PRIORITY_NORMAL = THRD_PRIOR_MEDIUM,
+ TFM_PRIORITY_HIGH = THRD_PRIOR_HIGHEST,
+};
+#else
+enum tfm_partition_priority {
+ TFM_PRIORITY_LOW = 0xFF,
+ TFM_PRIORITY_NORMAL = 0x7F,
+ TFM_PRIORITY_HIGH = 0,
+};
+#endif
+
+#define TFM_PRIORITY(LEVEL) TFM_PRIORITY_##LEVEL
+
/**
* Holds the fields of the partition DB used by the SPM code. The values of
* these fields are calculated at compile time, and set during initialisation
@@ -18,6 +46,7 @@ typedef int32_t(*sp_init_function)(void);
struct spm_partition_static_data_t {
uint32_t partition_id;
uint32_t partition_flags;
+ uint32_t partition_priority;
sp_init_function partition_init;
};
diff --git a/secure_fw/spm/spm_db_setup.h b/secure_fw/spm/spm_db_setup.h
index d36f8cfc6a..217cfaa39b 100644
--- a/secure_fw/spm/spm_db_setup.h
+++ b/secure_fw/spm/spm_db_setup.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -31,10 +31,11 @@ struct spm_partition_db_t {
struct spm_partition_desc_t partitions[SPM_MAX_PARTITIONS];
};
-#define PARTITION_INIT_STATIC_DATA(data, partition, flags) \
- do { \
- data.partition_id = partition##_ID; \
- data.partition_flags = flags; \
+#define PARTITION_INIT_STATIC_DATA(data, partition, flags, id, priority) \
+ do { \
+ data.partition_id = partition##_ID; \
+ data.partition_flags = flags; \
+ data.partition_priority = TFM_PRIORITY(priority); \
} while (0)
#if TFM_LVL == 1
@@ -70,7 +71,7 @@ struct spm_partition_db_t {
} while (0)
#endif
-#define PARTITION_DECLARE(partition, flags) \
+#define PARTITION_DECLARE(partition, flag, type, id, priority) \
do { \
REGION_DECLARE(Image$$, partition, $$Base); \
REGION_DECLARE(Image$$, partition, $$Limit); \
@@ -82,13 +83,24 @@ struct spm_partition_db_t {
REGION_DECLARE(Image$$, partition, _DATA$$ZI$$Limit); \
REGION_DECLARE(Image$$, partition, _STACK$$ZI$$Base); \
REGION_DECLARE(Image$$, partition, _STACK$$ZI$$Limit); \
+ int32_t flags = flag; \
+ if (tfm_memcmp(type, TFM_PARTITION_TYPE_APP, \
+ strlen(TFM_PARTITION_TYPE_APP)) == 0) { \
+ flags |= SPM_PART_FLAG_APP_ROT; \
+ } else if (tfm_memcmp(type, TFM_PARTITION_TYPE_PSA, \
+ strlen(TFM_PARTITION_TYPE_PSA)) == 0) { \
+ flags |= SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT; \
+ } else { \
+ return SPM_ERR_INVALID_CONFIG; \
+ } \
struct spm_partition_desc_t *part_ptr; \
if (g_spm_partition_db.partition_count >= SPM_MAX_PARTITIONS) { \
return SPM_ERR_INVALID_CONFIG; \
} \
part_ptr = &(g_spm_partition_db.partitions[ \
g_spm_partition_db.partition_count]); \
- PARTITION_INIT_STATIC_DATA(part_ptr->static_data, partition, flags); \
+ PARTITION_INIT_STATIC_DATA(part_ptr->static_data, partition, flags, \
+ id, priority); \
PARTITION_INIT_RUNTIME_DATA(part_ptr->runtime_data, partition); \
PARTITION_INIT_MEMORY_DATA(part_ptr->memory_data, partition); \
++g_spm_partition_db.partition_count; \
diff --git a/test/suites/ipc/non_secure/ipc_ns_interface_testsuite.c b/test/suites/ipc/non_secure/ipc_ns_interface_testsuite.c
index 157f05157e..8621318972 100644
--- a/test/suites/ipc/non_secure/ipc_ns_interface_testsuite.c
+++ b/test/suites/ipc/non_secure/ipc_ns_interface_testsuite.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -10,7 +10,7 @@
#include "psa_client.h"
#include "test/framework/test_framework_helpers.h"
-#define IPC_TEST_SERVICE1_SID (01)
+#define IPC_TEST_SERVICE1_SID (0x1000)
#define IPC_TEST_SERVICE1_MIN_VER (0x0001)
/* List of tests */
diff --git a/test/test_services/CMakeLists.inc b/test/test_services/CMakeLists.inc
index 5ac6602cf0..6376e69432 100644
--- a/test/test_services/CMakeLists.inc
+++ b/test/test_services/CMakeLists.inc
@@ -65,8 +65,8 @@ endif()
if (NOT DEFINED CORE_TEST_IPC)
message(FATAL_ERROR "Incomplete build configuration: CORE_TEST_IPC is undefined. ")
elseif (CORE_TEST_IPC)
- list(APPEND ALL_SRC_C_S "${CORE_TEST_DIR}/tfm_ipc_service/ipc_service_test.c"
- "${CORE_TEST_DIR}/tfm_ipc_client/ipc_client_test.c"
+ list(APPEND ALL_SRC_C_S "${CORE_TEST_DIR}/tfm_ipc_service/tfm_ipc_service_test.c"
+ "${CORE_TEST_DIR}/tfm_ipc_client/tfm_ipc_client_test.c"
)
endif()
diff --git a/test/test_services/tfm_core_test/manifest.yaml b/test/test_services/tfm_core_test/manifest.yaml
index 076b6502aa..58abfe136e 100644
--- a/test/test_services/tfm_core_test/manifest.yaml
+++ b/test/test_services/tfm_core_test/manifest.yaml
@@ -1,17 +1,16 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "TFM_CORE_TEST",
- "tfm_partition_name": "TFM_SP_CORE_TEST",
- "type": "SECURE",
+ "name": "TFM_SP_CORE_TEST",
+ "type": "APPLICATION-ROT",
"priority": "NORMAL",
"id": "0x00000002",
- "entry_point": "main",
+ "entry_point": "core_test_init",
"stack_size": "0x0400",
"heap_size": "0x0400",
"mmio_regions": [
@@ -20,7 +19,6 @@
"permission": "READ-WRITE"
}
],
- "tfm_init_symbol": "core_test_init",
"secure_functions": [
{
"sfid": "TFM_CORE_TEST_SFN_SFID",
diff --git a/test/test_services/tfm_core_test_2/manifest.yaml b/test/test_services/tfm_core_test_2/manifest.yaml
index 77cc5db978..4d2b9630cf 100644
--- a/test/test_services/tfm_core_test_2/manifest.yaml
+++ b/test/test_services/tfm_core_test_2/manifest.yaml
@@ -1,20 +1,18 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "TFM_CORE_TEST_2",
- "tfm_partition_name": "TFM_SP_CORE_TEST_2",
- "type": "SECURE",
+ "name": "TFM_SP_CORE_TEST_2",
+ "type": "APPLICATION-ROT",
"priority": "NORMAL",
"id": "0x00000003",
- "entry_point": "main",
+ "entry_point": "core_test_2_init",
"stack_size": "0x0400",
"heap_size": "0x0400",
- "tfm_init_symbol": "core_test_2_init",
"secure_functions": [
{
"sfid": "TFM_CORE_TEST_2_SFN_SLAVE_SERVICE_SFID",
diff --git a/test/test_services/tfm_ipc_client/manifest.yaml b/test/test_services/tfm_ipc_client/tfm_ipc_client_partition.yaml
index 8c8ccdbc6b..75546b3721 100644
--- a/test/test_services/tfm_ipc_client/manifest.yaml
+++ b/test/test_services/tfm_ipc_client/tfm_ipc_client_partition.yaml
@@ -6,15 +6,14 @@
#-------------------------------------------------------------------------------
{
- "name": "IPC_CLIENT",
- "type": "SECURE",
- "tfm_partition_name": "TFM_SP_IPC_CLIENT_TEST",
+ "name": "TFM_SP_IPC_CLIENT_TEST",
+ "type": "APPLICATION-ROT",
"priority": "NORMAL",
"id": "0x00000006",
- "entry_point": "main",
+ "entry_point": "ipc_client_init",
"stack_size": "0x1000",
- "heap_size": "0x0400",
- "tfm_init_symbol": "ipc_client_init",
+ "heap_size": "0",
+ "tfm_partition_ipc": true,
"source_files": [
"ipc_client_test.c",
],
diff --git a/test/test_services/tfm_ipc_client/ipc_client_test.c b/test/test_services/tfm_ipc_client/tfm_ipc_client_test.c
index 6c449eb28f..f343a042b6 100644
--- a/test/test_services/tfm_ipc_client/ipc_client_test.c
+++ b/test/test_services/tfm_ipc_client/tfm_ipc_client_test.c
@@ -9,11 +9,8 @@
#include "psa_client.h"
#include "secure_utilities.h"
-/*
- * FixMe: These SID should come from manifest.
- * Temporarily adds them here for test.
- */
-#define IPC_TEST_SERVICE1_SID (01)
+/* These SID should be same with service manifest.*/
+#define IPC_TEST_SERVICE1_SID (0x1000)
#define IPC_TEST_SERVICE1_MIN_VER (0x0001)
int ipc_client_init(void)
diff --git a/test/test_services/tfm_ipc_service/manifest.yaml b/test/test_services/tfm_ipc_service/manifest.yaml
deleted file mode 100644
index 8594f042e1..0000000000
--- a/test/test_services/tfm_ipc_service/manifest.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-{
- "name": "IPC_SERVICE_TEST",
- "tfm_partition_name": "TFM_SP_IPC_SERVICE_TEST",
- "type": "SECURE", "IPC",
- "priority": "NORMAL",
- "id": "0x00000007",
- "entry_point": "main",
- "stack_size": "0x1000",
- "heap_size": "0x0400",
- "tfm_init_symbol": "ipc_service_test_main",
- "secure_functions": [
- {
- "sfid": "IPC_SERVICE_CALL_SFID",
- "signal": "IPC_SERVICE_CALL",
- "tfm_symbol": "ipc_service_call",
- "non_secure_clients": true,
- "minor_version": 1,
- "minor_policy": "strict"
- }
- ],
- "source_files": [
- "./ipc_service_test.c",
- ],
- "tfm_linker_pattern": {
- "library_list": [
- "*ipc_service_test*"
- ]
- }
-}
diff --git a/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.h b/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.h
new file mode 100644
index 0000000000..759ccfa35e
--- /dev/null
+++ b/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2018, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __TFM_IPC_SERVICE_PARTITION_H__
+#define __TFM_IPC_SERVICE_PARTITION_H__
+
+/* FixMe: hardcode it for the tool cannot support now */
+#ifdef TFM_PSA_API
+#define IPC_BASIC_SIGNAL (1 << (0 + 4))
+#endif /* TFM_PSA_API */
+
+#endif /* __TFM_IPC_SERVICE_PARTITION_H__ */
diff --git a/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.yaml b/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.yaml
new file mode 100644
index 0000000000..7d17589176
--- /dev/null
+++ b/test/test_services/tfm_ipc_service/tfm_ipc_service_partition.yaml
@@ -0,0 +1,34 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+{
+ "name": "TFM_SP_IPC_SERVICE_TEST",
+ "type": "APPLICATION-ROT",
+ "priority": "HIGH",
+ "id": "0x00000007",
+ "entry_point": "ipc_service_test_main",
+ "stack_size": "0x1000",
+ "heap_size": "0",
+ "tfm_partition_ipc": true,
+ "services" : [{
+ "name": "IPC_SID_BASIC",
+ "sid": "0x00001000",
+ "signal": "IPC_BASIC_SIGNAL",
+ "non_secure_clients": "true",
+ "minor_version": 1,
+ "minor_policy": "STRICT"
+ }
+ ],
+ "source_files": [
+ "./ipc_service_test.c",
+ ],
+ "tfm_linker_pattern": {
+ "library_list": [
+ "*ipc_service_test*"
+ ]
+ }
+}
diff --git a/test/test_services/tfm_ipc_service/ipc_service_test.c b/test/test_services/tfm_ipc_service/tfm_ipc_service_test.c
index 279d1b1bef..e8f25a804f 100644
--- a/test/test_services/tfm_ipc_service/ipc_service_test.c
+++ b/test/test_services/tfm_ipc_service/tfm_ipc_service_test.c
@@ -12,9 +12,9 @@
#include "secure_fw/core/secure_utilities.h"
#include "secure_fw/core/tfm_secure_api.h"
#include "tfm_api.h"
+#include "tfm_ipc_service_partition.h"
#define IPC_SERVICE_BUFFER_LEN 64
-#define IPC_BASIC_SIGNAL 1
static int inuse = 0;
diff --git a/test/test_services/tfm_secure_client_service/manifest.yaml b/test/test_services/tfm_secure_client_service/manifest.yaml
index 9ab5b62ed7..79728eea50 100644
--- a/test/test_services/tfm_secure_client_service/manifest.yaml
+++ b/test/test_services/tfm_secure_client_service/manifest.yaml
@@ -1,18 +1,16 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "TFM_SECURE_CLIENT",
- "tfm_partition_name": "TFM_SP_SECURE_TEST_PARTITION",
- "type": "TRUSTED",
- "tfm_trusted": true,
+ "name": "TFM_SP_SECURE_TEST_PARTITION",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000005",
- "entry_point": "main",
+ "entry_point": "tfm_secure_client_service_init",
"stack_size": "0x1000",
"heap_size": "0x0400",
"mmio_regions": [
@@ -21,7 +19,6 @@
"permission": "READ-WRITE"
}
],
- "tfm_init_symbol": "tfm_secure_client_service_init",
"secure_functions": [
{
"sfid": "TFM_SECURE_CLIENT_SFN_RUN_TESTS_SFID",
diff --git a/test/test_services/tfm_sst_test_service/manifest.yaml b/test/test_services/tfm_sst_test_service/manifest.yaml
index e6b26b0c6a..ce83dadbc2 100644
--- a/test/test_services/tfm_sst_test_service/manifest.yaml
+++ b/test/test_services/tfm_sst_test_service/manifest.yaml
@@ -1,21 +1,18 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
{
- "name": "TFM_SST_TEST",
- "tfm_partition_name": "TFM_SP_SST_TEST_PARTITION",
- "type": "TRUSTED",
- "tfm_trusted": true,
+ "name": "TFM_SP_SST_TEST_PARTITION",
+ "type": "PSA-ROT",
"priority": "NORMAL",
"id": "0x00000004",
- "entry_point": "main",
+ "entry_point": "sst_test_service_init",
"stack_size": "0x0400",
"heap_size": "0x0400",
- "tfm_init_symbol": "sst_test_service_init",
"secure_functions": [
{
"sfid": "TFM_SST_TEST_SFN_SETUP_SFID",
diff --git a/tools/tfm_generated_file_list.yaml b/tools/tfm_generated_file_list.yaml
index 88206969d2..9fd18f8148 100644
--- a/tools/tfm_generated_file_list.yaml
+++ b/tools/tfm_generated_file_list.yaml
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -22,9 +22,9 @@
"output": "secure_fw/services/tfm_partition_list.inc"
},
{
- "name": "Secure Function list",
- "short_name": "tfm_sfid_list",
- "output": "secure_fw/services/tfm_sfid_list.inc"
+ "name": "Secure Service list",
+ "short_name": "tfm_service_list",
+ "output": "secure_fw/services/tfm_service_list.inc"
},
{
"name": "AN521 secure ld file",
diff --git a/tools/tfm_manifest_list.yaml b/tools/tfm_manifest_list.yaml
index 9edbd32c85..711ffabf10 100644
--- a/tools/tfm_manifest_list.yaml
+++ b/tools/tfm_manifest_list.yaml
@@ -90,7 +90,7 @@
{
"name": "TFM IPC Service Test",
"short_name": "TFM_IPC_Service",
- "manifest": "test/test_services/tfm_ipc_service/manifest.yaml",
+ "manifest": "test/test_services/tfm_ipc_service/tfm_ipc_service_partition.yaml",
"tfm_extensions": true,
"conditional": "TFM_PSA_API",
"version_major": 0,
@@ -99,7 +99,7 @@
{
"name": "TFM IPC Client Service",
"short_name": "TFM_IPC_Client",
- "manifest": "test/test_services/tfm_ipc_client/manifest.yaml",
+ "manifest": "test/test_services/tfm_ipc_client/tfm_ipc_client_partition.yaml",
"tfm_extensions": true,
"conditional": "TFM_PSA_API",
"version_major": 0,