arm-trusted-firmware/docs/components
Olivier Deprez f2dcf41826 refactor(spmd): boot interface and pass core id
This change refactors the SPMD to setup SPMC CPU contexts once and early
from spmd_spmc_init (single call to cm_setup_context rather than on each
and every warm boot).
Pass the core linear ID through a GP register as an implementation
defined behavior helping FF-A adoption to legacy TOSes (essentially
when secure virtualization is not used).

A first version of this change was originally submitted by Lukas [1].
Pasting below the original justification:

Our TEE, Kinibi, is used to receive the core linear ID in the x3
register of booting secondary cores.
This patch is necessary to bring up secondary cores with Kinibi as an
SPMC in SEL1.

In Kinibi, the TEE is mostly platform-independent and all platform-
specifics like topology is concentrated in TF-A of our customers.
That is why we don't have the MPIDR - linear ID mapping in Kinibi.
We need the correct linear ID to program the GICv2 target register,
for example in power management case.
It is not needed on GICv3/v4, because of using a fixed mapping from
MPIDR to ICDIPTR/GICD_ITARGETSRn register.

For debug and power management purpose, we also want a unified view to
linear id between Linux and the TEE.
E.g. to disable a core, to see what cores are printing a trace /
an event.

In the past, Kinibi had several other designs, but the complexity was
getting out of control:
* Platform-specific assembler macros in the kernel.
* A per-core SMC from Linux to tell the linear ID after the boot.
* With DynamiQ, it seems SIPs were playing with MPIDR register values,
  reusing them between cores and changing them during boot.

[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/10235

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Signed-off-by: Lukas Hanel <lukas.hanel@trustonic.com>
Change-Id: Ifa8fa208e9b8eb1642c80b5f7b54152dadafa75e
2021-09-09 16:51:17 +02:00
..
fconf doc: Update BL1 and BL2 boot flow 2020-06-26 07:26:09 +00:00
measured_boot plat/arm/board/fvp: Add support for Measured Boot 2020-07-22 10:31:23 +00:00
spd doc: Normalise section numbering and headings 2019-05-22 11:20:39 +01:00
arm-sip-service.rst docs: Update SMCCC doc, other changes for release 2020-04-16 10:03:39 -05:00
cot-binding.rst doc: Update the cot-binding for nv-counter node 2020-08-28 09:50:03 +00:00
debugfs-design.rst Fix broken links to various sections across docs 2020-08-03 09:55:04 -05:00
exception-handling.rst Fix broken links in docs 2020-08-06 12:36:17 -05:00
ffa-manifest-binding.rst feat(ff-a): change manifest messaging method 2021-07-22 14:21:41 +01:00
firmware-update.rst doc: Misc syntax and spelling fixes 2019-10-11 12:39:06 +00:00
index.rst docs: remove PSA wording for SPM chapters 2021-04-30 08:44:26 +02:00
platform-interrupt-controller-API.rst Fix broken links to various sections across docs 2020-08-03 09:55:04 -05:00
ras.rst doc: RAS: fixing broken links 2020-06-30 22:45:01 +01:00
romlib-design.rst doc: Split the User Guide into multiple files 2019-11-27 10:45:54 +00:00
sdei.rst Fix broken links to various sections across docs 2020-08-03 09:55:04 -05:00
secure-partition-manager-mm.rst docs: remove PSA wording for SPM chapters 2021-04-30 08:44:26 +02:00
secure-partition-manager.rst refactor(spmd): boot interface and pass core id 2021-09-09 16:51:17 +02:00
xlat-tables-lib-v2-design.rst doc: Convert internal links to RST format 2019-10-08 15:58:03 +00:00