Commit fcb1398f authored by Olivier Deprez's avatar Olivier Deprez
Browse files

doc: secure partition manager design



Former EL3 Secure Partition Manager using MM protocol is renamed
Secure Partition Manager (MM).
A new Secure Partition Manager document covers TF-A support for the
PSA FF-A compliant implementation.
Signed-off-by: default avatarOlivier Deprez <olivier.deprez@arm.com>
Change-Id: I9763359c2e96181e1726c8ad72738de293b80eb4
parent 70501930
......@@ -16,7 +16,8 @@ Components
ras
romlib-design
sdei
secure-partition-manager-design
secure-partition-manager
secure-partition-manager-mm
psa-ffa-manifest-binding
xlat-tables-lib-v2-design
cot-binding
Secure Partition Manager
************************
Secure Partition Manager (MM)
*****************************
Foreword
========
Two implementations of a Secure Partition Manager co-exist in the TF-A codebase:
- SPM based on the PSA FF-A specification (`Secure Partition Manager`__).
- SPM based on the MM interface.
.. __: secure-partition-manager.html
Both implementations differ in their architectures and only one can be selected
at build time.
This document describes the latter implementation where the Secure Partition Manager
resides at EL3 and management services run from isolated Secure Partitions at S-EL0.
The communication protocol is established through the Management Mode (MM) interface.
Background
==========
......
This diff is collapsed.
/'
' Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
'
' SPDX-License-Identifier: BSD-3-Clause
'/
@startuml
participant bl1
participant FIP
bl1 -> FIP : read(FW_CONFIG)
create FW_CONFIG
bl1 -> FW_CONFIG : load
bl1 -> FIP : read(bl2)
create bl2
bl1 -> bl2 : load
bl1 --> bl2 : hand off (FW_CONFIG)
bl2 -> FW_CONFIG : read_node(SPKs)
loop for each spkg subnode
bl2 -> FW_CONFIG : read(UUID)
bl2 -> FW_CONFIG : read(load_address)
bl2 -> FIP : read(spkg@UUID)
create SPKG
bl2 -> SPKG : load
end loop
bl2 -> FW_CONFIG : read_node(TOS_FW_CONFIG)
create TOS_FW_CONFIG
bl2 -> TOS_FW_CONFIG : load
bl2 -> FIP : read(bl32/SPMC)
create SPMC
bl2 -> SPMC : load
bl2 -> FIP : read(bl31)
create bl31
bl2 -> bl31 : load
bl2 --> bl31 : hand off (TOS_FW_CONFIG)
bl31 --> SPMC : hand off (TOS_FW_CONFIG)
@enduml
/'
' Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
'
' SPDX-License-Identifier: BSD-3-Clause
'/
@startuml
folder SP_vendor_1 {
artifact sp_binary_1
artifact sp_manifest_1 [
sp_manifest_1
===
UUID = xxx
load_address = 0xaaa
...
]
}
folder SP_vendor_2 {
artifact sp_binary_2
artifact sp_manifest_2 [
sp_manifest_2
===
UUID = yyy
load_address = 0xbbb
]
}
artifact config.json [
SP_LAYOUT.json
===
path to sp_binary_1
path to sp_manifest_1
---
path to sp_binary_2
path to sp_manifest_2
---
...
]
control sp_mk_generator
artifact fconf_node [
fconf_sp.dts
===
spkg_1 UUID
spkg_1 load_address
---
spkg_2 UUID
spkg_2 load_address
]
artifact sp_gen [
sp_gen.mk
===
FDT_SOURCE = ...
SPTOOL_ARGS = ...
FIP_ARG = ...
]
control dtc
control sptool
artifact FW_CONFIG
artifact spkg_1 [
spkg_1.bin
===
<i>header</i>
---
manifest
---
binary
]
artifact spkg_2 [
spkg_2.bin
===
<i>header</i>
---
manifest
---
binary
]
control fiptool
artifact fip [
fip.bin
===
FW_CONFIG.dtb
---
...
---
SPKG1
---
SPKG2
---
...
]
config.json .up.> SP_vendor_1
config.json .up.> SP_vendor_2
config.json --> sp_mk_generator
sp_mk_generator --> fconf_node
sp_mk_generator --> sp_gen
sp_gen --> sptool
sptool --> spkg_1
sptool --> spkg_2
fconf_node -down-> dtc
dtc --> FW_CONFIG
sp_gen --> fiptool
FW_CONFIG --> fiptool
spkg_1 -down-> fiptool
spkg_2 -down-> fiptool
fiptool -down-> fip
@enduml
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment