Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 1 | Secure Partition Manager |
| 2 | ************************ |
| 3 | |
| 4 | .. contents:: |
| 5 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 6 | .. toctree:: |
| 7 | ffa-manifest-binding |
| 8 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 9 | Acronyms |
| 10 | ======== |
| 11 | |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 12 | +--------+--------------------------------------+ |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 13 | | DTS | Device Tree Source | |
| 14 | +--------+--------------------------------------+ |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 15 | | FF-A | Firmware Framework for Arm A-profile | |
| 16 | +--------+--------------------------------------+ |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 17 | | NWd | Normal World | |
| 18 | +--------+--------------------------------------+ |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 19 | | SP | Secure Partition | |
| 20 | +--------+--------------------------------------+ |
| 21 | | SPD | Secure Payload Dispatcher | |
| 22 | +--------+--------------------------------------+ |
| 23 | | SPM | Secure Partition Manager | |
| 24 | +--------+--------------------------------------+ |
| 25 | | SPMC | SPM Core | |
| 26 | +--------+--------------------------------------+ |
| 27 | | SPMD | SPM Dispatcher | |
| 28 | +--------+--------------------------------------+ |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 29 | | SWd | Secure World | |
| 30 | +--------+--------------------------------------+ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 31 | |
| 32 | Foreword |
| 33 | ======== |
| 34 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 35 | Three implementations of a Secure Partition Manager co-exist in the TF-A |
| 36 | codebase: |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 37 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 38 | #. S-EL2 SPMC based on the FF-A specification `[1]`_, enabling virtualization in |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 39 | the secure world, managing multiple S-EL1 or S-EL0 partitions `[5]`_. |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 40 | #. EL3 SPMC based on the FF-A specification, managing a single S-EL1 partition |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 41 | without virtualization in the secure world `[6]`_. |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 42 | #. EL3 SPM based on the MM specification, legacy implementation managing a |
| 43 | single S-EL0 partition `[2]`_. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 44 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 45 | These implementations differ in their respective SW architecture and only one |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 46 | can be selected at build time. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 47 | |
| 48 | Support for legacy platforms |
| 49 | ---------------------------- |
| 50 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 51 | The SPM is split into a dispatcher and a core component (respectively SPMD and |
| 52 | SPMC) residing at different exception levels. To permit the FF-A specification |
| 53 | adoption and a smooth migration, the SPMD supports an SPMC residing either at |
| 54 | S-EL1 or S-EL2: |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 55 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 56 | - The SPMD is located at EL3 and mainly relays the FF-A protocol from NWd |
| 57 | (Hypervisor or OS kernel) to the SPMC. |
| 58 | - The same SPMD component is used for both S-EL1 and S-EL2 SPMC configurations. |
| 59 | - The SPMC exception level is a build time choice. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 60 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 61 | TF-A supports both cases: |
| 62 | |
| 63 | - S-EL1 SPMC for platforms not supporting the FEAT_SEL2 architecture |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 64 | extension. The SPMD relays the FF-A protocol from EL3 to S-EL1. |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 65 | - S-EL2 SPMC for platforms implementing the FEAT_SEL2 architecture |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 66 | extension. The SPMD relays the FF-A protocol from EL3 to S-EL2. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 67 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 68 | TF-A build options |
| 69 | ================== |
| 70 | |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 71 | This section explains the TF-A build options involved in building with |
| 72 | support for an FF-A based SPM where the SPMD is located at EL3 and the |
Marc Bonnici | abaac16 | 2021-12-01 18:00:40 +0000 | [diff] [blame] | 73 | SPMC located at S-EL1, S-EL2 or EL3: |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 74 | |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 75 | - **SPD=spmd**: this option selects the SPMD component to relay the FF-A |
| 76 | protocol from NWd to SWd back and forth. It is not possible to |
| 77 | enable another Secure Payload Dispatcher when this option is chosen. |
| 78 | - **SPMD_SPM_AT_SEL2**: this option adjusts the SPMC exception |
Marc Bonnici | abaac16 | 2021-12-01 18:00:40 +0000 | [diff] [blame] | 79 | level to being at S-EL2. It defaults to enabled (value 1) when |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 80 | SPD=spmd is chosen. |
Marc Bonnici | abaac16 | 2021-12-01 18:00:40 +0000 | [diff] [blame] | 81 | - **SPMC_AT_EL3**: this option adjusts the SPMC exception level to being |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 82 | at EL3. If neither ``SPMD_SPM_AT_SEL2`` or ``SPMC_AT_EL3`` are enabled the |
| 83 | SPMC exception level is set to S-EL1. |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 84 | ``SPMD_SPM_AT_SEL2`` is enabled. The context save/restore routine |
| 85 | and exhaustive list of registers is visible at `[4]`_. |
Nishant Sharma | 9e71911 | 2023-06-27 00:36:01 +0100 | [diff] [blame] | 86 | - **SPMC_AT_EL3_SEL0_SP**: this option enables the support to load SEL0 SP |
| 87 | when SPMC at EL3 support is enabled. |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 88 | - **SP_LAYOUT_FILE**: this option specifies a text description file |
| 89 | providing paths to SP binary images and manifests in DTS format |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 90 | (see `[3]`_). It |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 91 | is required when ``SPMD_SPM_AT_SEL2`` is enabled hence when multiple |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 92 | secure partitions are to be loaded by BL2 on behalf of the SPMC. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 93 | |
Govindraj Raja | 0264d6c | 2022-11-21 13:10:40 +0000 | [diff] [blame] | 94 | +---------------+------------------+-------------+-------------------------+ |
| 95 | | | SPMD_SPM_AT_SEL2 | SPMC_AT_EL3 | CTX_INCLUDE_EL2_REGS(*) | |
| 96 | +---------------+------------------+-------------+-------------------------+ |
| 97 | | SPMC at S-EL1 | 0 | 0 | 0 | |
| 98 | +---------------+------------------+-------------+-------------------------+ |
| 99 | | SPMC at S-EL2 | 1 (default when | 0 | 1 | |
| 100 | | | SPD=spmd) | | | |
| 101 | +---------------+------------------+-------------+-------------------------+ |
| 102 | | SPMC at EL3 | 0 | 1 | 0 | |
| 103 | +---------------+------------------+-------------+-------------------------+ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 104 | |
| 105 | Other combinations of such build options either break the build or are not |
| 106 | supported. |
| 107 | |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 108 | Notes: |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 109 | |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 110 | - Only Arm's FVP platform is supported to use with the TF-A reference software |
| 111 | stack. |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 112 | - When ``SPMD_SPM_AT_SEL2=1``, the reference software stack assumes enablement |
| 113 | of FEAT_PAuth, FEAT_BTI and FEAT_MTE architecture extensions. |
Govindraj Raja | 0264d6c | 2022-11-21 13:10:40 +0000 | [diff] [blame] | 114 | - ``(*) CTX_INCLUDE_EL2_REGS``, this flag is |TF-A| internal and informational |
| 115 | in this table. When set, it provides the generic support for saving/restoring |
| 116 | EL2 registers required when S-EL2 firmware is present. |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 117 | - BL32 option is re-purposed to specify the SPMC image. It can specify either |
| 118 | the Hafnium binary path (built for the secure world) or the path to a TEE |
| 119 | binary implementing FF-A interfaces. |
| 120 | - BL33 option can specify the TFTF binary or a normal world loader |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 121 | such as U-Boot or the UEFI framework payload. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 122 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 123 | Sample TF-A build command line when the SPMC is located at S-EL1 |
| 124 | (e.g. when the FEAT_SEL2 architecture extension is not implemented): |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 125 | |
| 126 | .. code:: shell |
| 127 | |
| 128 | make \ |
| 129 | CROSS_COMPILE=aarch64-none-elf- \ |
| 130 | SPD=spmd \ |
| 131 | SPMD_SPM_AT_SEL2=0 \ |
| 132 | BL32=<path-to-tee-binary> \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 133 | BL33=<path-to-bl33-binary> \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 134 | PLAT=fvp \ |
| 135 | all fip |
| 136 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 137 | Sample TF-A build command line when FEAT_SEL2 architecture extension is |
| 138 | implemented and the SPMC is located at S-EL2: |
Nicola Mazzucato | b106376 | 2023-05-01 10:19:18 +0100 | [diff] [blame] | 139 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 140 | .. code:: shell |
| 141 | |
| 142 | make \ |
| 143 | CROSS_COMPILE=aarch64-none-elf- \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 144 | PLAT=fvp \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 145 | SPD=spmd \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 146 | ARM_ARCH_MINOR=5 \ |
| 147 | BRANCH_PROTECTION=1 \ |
| 148 | CTX_INCLUDE_PAUTH_REGS=1 \ |
Govindraj Raja | c1be66f | 2024-03-07 14:42:20 -0600 | [diff] [blame] | 149 | ENABLE_FEAT_MTE2=1 \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 150 | BL32=<path-to-hafnium-binary> \ |
| 151 | BL33=<path-to-bl33-binary> \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 152 | SP_LAYOUT_FILE=sp_layout.json \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 153 | all fip |
| 154 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 155 | Sample TF-A build command line when FEAT_SEL2 architecture extension is |
| 156 | implemented, the SPMC is located at S-EL2, and enabling secure boot: |
Nicola Mazzucato | b106376 | 2023-05-01 10:19:18 +0100 | [diff] [blame] | 157 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 158 | .. code:: shell |
| 159 | |
| 160 | make \ |
| 161 | CROSS_COMPILE=aarch64-none-elf- \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 162 | PLAT=fvp \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 163 | SPD=spmd \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 164 | ARM_ARCH_MINOR=5 \ |
| 165 | BRANCH_PROTECTION=1 \ |
| 166 | CTX_INCLUDE_PAUTH_REGS=1 \ |
Govindraj Raja | c1be66f | 2024-03-07 14:42:20 -0600 | [diff] [blame] | 167 | ENABLE_FEAT_MTE2=1 \ |
Olivier Deprez | 5e0a73f | 2021-04-30 14:42:24 +0200 | [diff] [blame] | 168 | BL32=<path-to-hafnium-binary> \ |
| 169 | BL33=<path-to-bl33-binary> \ |
| 170 | SP_LAYOUT_FILE=sp_layout.json \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 171 | MBEDTLS_DIR=<path-to-mbedtls-lib> \ |
| 172 | TRUSTED_BOARD_BOOT=1 \ |
| 173 | COT=dualroot \ |
| 174 | ARM_ROTPK_LOCATION=devel_rsa \ |
| 175 | ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem \ |
| 176 | GENERATE_COT=1 \ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 177 | all fip |
| 178 | |
Olivier Deprez | 3de57e3 | 2022-04-28 18:18:36 +0200 | [diff] [blame] | 179 | Sample TF-A build command line when the SPMC is located at EL3: |
Marc Bonnici | abaac16 | 2021-12-01 18:00:40 +0000 | [diff] [blame] | 180 | |
| 181 | .. code:: shell |
| 182 | |
| 183 | make \ |
| 184 | CROSS_COMPILE=aarch64-none-elf- \ |
| 185 | SPD=spmd \ |
| 186 | SPMD_SPM_AT_SEL2=0 \ |
| 187 | SPMC_AT_EL3=1 \ |
| 188 | BL32=<path-to-tee-binary> \ |
| 189 | BL33=<path-to-bl33-binary> \ |
| 190 | PLAT=fvp \ |
| 191 | all fip |
| 192 | |
Nishant Sharma | 9e71911 | 2023-06-27 00:36:01 +0100 | [diff] [blame] | 193 | Sample TF-A build command line when the SPMC is located at EL3 and SEL0 SP is |
| 194 | enabled: |
| 195 | |
| 196 | .. code:: shell |
| 197 | |
| 198 | make \ |
| 199 | CROSS_COMPILE=aarch64-none-elf- \ |
| 200 | SPD=spmd \ |
| 201 | SPMD_SPM_AT_SEL2=0 \ |
| 202 | SPMC_AT_EL3=1 \ |
| 203 | SPMC_AT_EL3_SEL0_SP=1 \ |
| 204 | BL32=<path-to-tee-binary> \ |
| 205 | BL33=<path-to-bl33-binary> \ |
| 206 | PLAT=fvp \ |
| 207 | all fip |
| 208 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 209 | Boot process |
| 210 | ============ |
| 211 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 212 | The boot process involving SPMC is highly dependent on the SPMC implementation. |
| 213 | It is recommended to refer to corresponding SPMC documentation for further |
| 214 | details. Some aspects of boot process are described here in the greater interest |
| 215 | of the project. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 216 | |
| 217 | SPMC boot |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 218 | --------- |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 219 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 220 | When SPMC resides at a lower EL i.e., S-EL1 or S-EL2, it is loaded by BL2 as the |
| 221 | BL32 image. The SPMC manifest is loaded by BL2 as the ``TOS_FW_CONFIG`` image `[7]`_. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 222 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 223 | BL2 passes the SPMC manifest address to BL31 through a register. At boot time, |
| 224 | the SPMD in BL31 runs from the primary core, initializes the core contexts and |
| 225 | launches the SPMC (BL32) passing the following information through registers: |
Olivier Deprez | 4ab7a4a | 2021-06-21 09:47:13 +0200 | [diff] [blame] | 226 | |
| 227 | - X0 holds the ``TOS_FW_CONFIG`` physical address (or SPMC manifest blob). |
| 228 | - X1 holds the ``HW_CONFIG`` physical address. |
| 229 | - X4 holds the currently running core linear id. |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 230 | |
Raghu Krishnamurthy | 7f3f7ce | 2021-10-17 16:48:29 -0700 | [diff] [blame] | 231 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 232 | References |
| 233 | ========== |
| 234 | |
| 235 | .. _[1]: |
| 236 | |
Olivier Deprez | 2b0be75 | 2021-09-01 10:25:21 +0200 | [diff] [blame] | 237 | [1] `Arm Firmware Framework for Arm A-profile <https://developer.arm.com/docs/den0077/latest>`__ |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 238 | |
| 239 | .. _[2]: |
| 240 | |
Madhukar Pappireddy | 86350ae | 2020-07-29 09:37:25 -0500 | [diff] [blame] | 241 | [2] :ref:`Secure Partition Manager using MM interface<Secure Partition Manager (MM)>` |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 242 | |
| 243 | .. _[3]: |
| 244 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 245 | [3] https://hafnium.readthedocs.io/en/latest/secure-partition-manager/secure-partition-manager.html#secure-partitions-layout-file |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 246 | |
| 247 | .. _[4]: |
| 248 | |
| 249 | [4] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/lib/el3_runtime/aarch64/context.S#n45 |
| 250 | |
| 251 | .. _[5]: |
| 252 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 253 | [5] https://hafnium.readthedocs.io/en/latest/secure-partition-manager/index.html |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 254 | |
| 255 | .. _[6]: |
| 256 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 257 | [6] :ref:`EL3 Secure Partition Manager<EL3 Secure Partition Manager>` |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 258 | |
| 259 | .. _[7]: |
| 260 | |
Madhukar Pappireddy | 4fc4d60 | 2024-07-25 17:23:55 -0500 | [diff] [blame] | 261 | [7] https://trustedfirmware-a.readthedocs.io/en/latest/design/firmware-design.html#dynamic-configuration-during-cold-boot |
Olivier Deprez | 4ab7a4a | 2021-06-21 09:47:13 +0200 | [diff] [blame] | 262 | |
Olivier Deprez | ecb2fe5 | 2020-04-02 15:38:02 +0200 | [diff] [blame] | 263 | -------------- |
| 264 | |
Govindraj Raja | 24d3a4e | 2023-12-21 13:57:49 -0600 | [diff] [blame] | 265 | *Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.* |