diff options
author | Edison Ai <edison.ai@arm.com> | 2018-11-21 15:15:00 +0800 |
---|---|---|
committer | Edison Ai <edison.ai@arm.com> | 2019-01-26 10:30:07 +0800 |
commit | bb614aa53862853a08c44db69c87db8f7ebdf684 (patch) | |
tree | 9688ed712055ff8b95eabead1b478bfd69a04244 | |
parent | 11883014d9a1fa542f19f4776cfe289dd7231fb3 (diff) | |
download | trusted-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>
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,
|