Commit graph

15998 commits

Author SHA1 Message Date
Govindraj Raja
d39c2f3859 docs: add inital lts doc
Ref: https://linaro.atlassian.net/browse/TFC-669

The initial LTS document was created as pdf and was maintained in a
shared folder location, to avoid pdf getting lost and trying to find
where it is we decided to have LTS details part of docs in TF-A.

This patch directly reflects the data from pdf attached to TFC-669.
Any improvements or amends to this will be done at later phases based
on LTS maintainers comments and agreements.

Change-Id: I1434c29f0236161d2a127596e2cc528bf4cc3e85
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
2025-01-21 08:40:34 -06:00
Olivier Deprez
b8ac81c7e6 Merge "chore(fvp): use correct dts for dynamiq cores" into integration 2025-01-20 19:31:31 +01:00
Manish Pandey
d6dccfb01a Merge "build: remove Windows compatibility layer" into integration 2025-01-20 12:52:16 +01:00
Olivier Deprez
3ab2df8de9 Merge "chore(deps): bump the pip group across 2 directories with 1 update" into integration 2025-01-16 16:26:13 +01:00
Manish Pandey
a1ff78f53a Merge "fix(smmu): set root port CR0 GPCEN before ACCESSEN" into integration 2025-01-16 11:12:09 +01:00
Govindraj Raja
f532cd3069 Merge changes I137f69be,Ia2e7168f,I0e569d12,I614272ec,Ib68293f2 into integration
* changes:
  perf(psci): pass my_core_pos around instead of calling it repeatedly
  refactor(psci): move timestamp collection to psci_pwrdown_cpu
  refactor(psci): factor common code out of the standby finisher
  refactor(psci): don't use PSCI_INVALID_PWR_LVL to signal OFF state
  docs(psci): drop outdated cache maintenance comment
2025-01-15 17:03:27 +01:00
Manish Pandey
efe18729ad Merge "feat(mops): enable FEAT_MOPS in EL3 when INIT_UNUSED_NS_EL2=1" into integration 2025-01-15 15:25:23 +01:00
Olivier Deprez
1261f0aa98 Merge "fix(mediatek): covert MTK_BL to uppercase for the build" into integration 2025-01-15 10:31:39 +01:00
Gavin Liu
c7105798ed fix(mediatek): covert MTK_BL to uppercase for the build
The build macro no longer coverts variable names to uppercase.
We need to convert it to uppercase to pass it on.

Change-Id: If808fc77bce71d575e2d43ff83c4d9bcdcc52326
Signed-off-by: Gavin Liu <gavin.liu@mediatek.com>
2025-01-15 05:07:19 +02:00
Arvind Ram Prakash
6b8df7b9e5 feat(mops): enable FEAT_MOPS in EL3 when INIT_UNUSED_NS_EL2=1
FEAT_MOPS, mandatory from Arm v8.8, is typically managed in EL2.
However, in configurations where NS_EL2 is not enabled,
EL3 must set the HCRX_EL2.MSCEn bit to 1 to enable the feature.

This patch ensures FEAT_MOPS is enabled by setting HCRX_EL2.MSCEn to 1.

Change-Id: Ic4960e0cc14a44279156b79ded50de475b3b21c5
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com>
2025-01-14 15:30:19 -06:00
Manish Pandey
624ffe51ea Merge changes from topic "nxp-s32g274a/enable-mmu" into integration
* changes:
  feat(s32g274a): split early clock initialization
  feat(s32g274a): enable MMU for BL31 stage
  feat(s32g274a): dynamically map GIC regions
  feat(s32g274a): enable MMU for BL2 stage
  feat(s32g274a): dynamically map siul2 and fip img
  feat(s32g274a): map each image before its loading
  feat(nxp-clk): dynamic map of the clock modules
  feat(s32g274a): increase the number of MMU regions
  feat(s32g274a): add console mapping
2025-01-14 17:25:56 +01:00
Chris Kay
c32737033c build: remove Windows compatibility layer
For a couple of releases now we have officially withdrawn support for
building TF-A on Windows using the native environment, relying instead
on POSIX emulation layers like MSYS2, Mingw64, Cygwin or WSL.

This change removes the remainder of the OS compatibility layer
entirely, and migrates the build system over to explicitly relying on a
POSIX environment.

Change-Id: I8fb60d998162422e958009afd17eab826e3bc39b
Signed-off-by: Chris Kay <chris.kay@arm.com>
2025-01-14 16:21:51 +00:00
dependabot[bot]
42f024abd5 chore(deps): bump the pip group across 2 directories with 1 update
Bumps the pip group with 1 update in the / directory: [virtualenv](https://github.com/pypa/virtualenv).
Bumps the pip group with 1 update in the /tools/tlc directory: [virtualenv](https://github.com/pypa/virtualenv).

Updates `virtualenv` from 20.26.4 to 20.26.6
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/virtualenv/compare/20.26.4...20.26.6)

Updates `virtualenv` from 20.26.5 to 20.26.6
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/virtualenv/compare/20.26.4...20.26.6)

---
updated-dependencies:
- dependency-name: virtualenv
  dependency-type: indirect
  dependency-group: pip
- dependency-name: virtualenv
  dependency-type: indirect
  dependency-group: pip
...

Change-Id: I368cd2a93d5e682f6117170d8cd8c7fa696a38d5
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Chris Kay <chris.kay@arm.com>
2025-01-14 15:41:40 +00:00
Ghennadi Procopciuc
61b5ef21af feat(s32g274a): split early clock initialization
Initializing all early clocks before the MMU is enabled can impact boot
time. Therefore, splitting the setup into A53 clocks and peripheral
clocks can be beneficial, with the peripheral clocks configured after
fully initializing the MMU.

Change-Id: I19644227b66effab8e2c43e64e057ea0c8625ebc
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
e2ae6ceccc feat(s32g274a): enable MMU for BL31 stage
Enable the MMU and add two entries to map the BL31 code and data
regions. Additional mappings will be added dynamically, enhancing
flexibility and modularity during the porting process.

Change-Id: I333c34c58274a115f62f54730bba5b71165e3e36
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
5680f81cec feat(s32g274a): dynamically map GIC regions
Dynamically add entries for the GIC distributor and all its
redistributors for the cases when the platform is booted using enabled
MMU.

Change-Id: Ia810ec2329993057173e8fc25620a3df59b1e55d
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
eb4d4185fa feat(s32g274a): enable MMU for BL2 stage
Enable the MMU and add two entries to map the BL2 code and data regions.
Additional mappings will be added dynamically, enhancing flexibility and
modularity during the porting process.

Change-Id: I107abf944dfdce9dcff47b08272a5001484de8a9
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
507ce7ed6f feat(s32g274a): dynamically map siul2 and fip img
Dynamically map the remaining regions part of the BL2 stages using
dynamic regions.

Change-Id: Ia81666920b941218ddaa7d3244dfa5212525c75d
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
34fb2b35b9 feat(s32g274a): map each image before its loading
The regions used by the stages loaded by BL2 must be mapped before they
can be used.

Change-Id: Ia70f8c5f35d7930e2b20f1a26be0ad2cdfea2b1a
Signed-off-by: Khristine Andreea Barbulescu <khristineandreea.barbulescu@nxp.com>
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
514c738045 feat(nxp-clk): dynamic map of the clock modules
Add all clock modules as entries in MMU using dynamic regions.

Change-Id: I56f724ced4bd024554c7b38afd14ea420de80cc6
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
008925861f feat(s32g274a): increase the number of MMU regions
Increase the maximum number of regions allocated by the translation
table library to accommodate the entries added in the next commits.

Change-Id: Ib0dd2d0dbc9b4a574367141a7c96d76dd08e2c7f
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Ghennadi Procopciuc
a1e07b399b feat(s32g274a): add console mapping
Add on-demand mapping of the console registers.

Change-Id: I146af2306f167602710c57b637deb1845fd95aff
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
2025-01-14 13:02:51 +02:00
Olivier Deprez
9ac82c4979 Merge "fix(cm): change back owning security state when a feature is disabled" into integration 2025-01-14 11:24:31 +01:00
Boyan Karatotev
3b8021058a perf(psci): pass my_core_pos around instead of calling it repeatedly
On some platforms plat_my_core_pos is a nontrivial function that takes a
bit of time and the compiler really doesn't like to inline. In the PSCI
library, at least, we have no need to keep repeatedly calling it and we
can instead pass it around as an argument. This saves on a lot of
redundant calls, speeding the library up a bit.

Change-Id: I137f69bea80d7cac90d7a20ffe98e1ba8d77246f
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 10:02:00 +00:00
Boyan Karatotev
9b1e800ef0 refactor(psci): move timestamp collection to psci_pwrdown_cpu
psci_pwrdown_cpu has two callers, both of which save timestamps meant to
measure how much time the cache maintenance operations take. Move the
timestamp collection inside to save on a bit of code duplication.

Change-Id: Ia2e7168faf7773d99b696cbdb6c98db7b58e31cf
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 10:01:37 +00:00
Boyan Karatotev
44ee7714a2 refactor(psci): factor common code out of the standby finisher
psci_suspend_to_standby_finisher and psci_cpu_suspend_finish do mostly
the same stuff, besides the system management associated with their
respective wakeup paths. So bring the wake from standby path in line
with the wake from reset path - caller acquires locks and manages
context. This way both behave in vaguely the same way. We can also bring
their names in line so it's more apparent how they are different.

This is in preparation for cores waking from sleep, coming in another
patch. No functional change is expected.

Change-Id: I0e569d12f65d231606080faa0149d22efddc386d
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 10:01:34 +00:00
Boyan Karatotev
0c836554b2 refactor(psci): don't use PSCI_INVALID_PWR_LVL to signal OFF state
The target_pwrlvl field in the psci cpu data struct only stores the
highest power domain that a CPU_SUSPEND call affected, and is used to
resume those same domains on warm reset. If the cpu is otherwise OFF
(never turned on or CPU_OFF), then this needs to be the highest power
level because we don't know the highest level that will be off.

So skip the invalidation and always keep the field to the maximum value.
During suspend the field will be lowered to the appropriate value and
then put back after wakeup.

Also, do that in the suspend to standby path as well as it will have
been written before the sleep and it might end up incorrect.

Change-Id: I614272ec387e1d83023c94700780a0f538a9a6b6
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 09:23:49 +00:00
Boyan Karatotev
39fba640de docs(psci): drop outdated cache maintenance comment
The comment was written when cache maintenance had to be considered when
calling this function. But that argument was dropped a while back and
this comment no longer makes any sense.

Change-Id: Ib68293f23cc3edca3010164dfe8866956b8e1a63
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 09:23:49 +00:00
Boyan Karatotev
13f4a25251 fix(cm): change back owning security state when a feature is disabled
Patch fc7dca72ba656e5f147487b20f9f0fb6eb39e116 changed the owning
security states of the TRBE and SPE buffers to NS. The thinking was that
this would assist SMCCC feature availability to more easily determine
if the feature is enabled or disabled. However, that only changed bit 0
while the SMCCC feature only looks at bit 1 so this change is redundant.

It was also meant to tighten security but that was done by
73d98e3759 instead.

Annoyingly, FEAT_TRBE has TRBIDR_EL1 which reports that programming is
allowed when the current security state owns the buffer even when the
MDCR_EL3 setting disallows this in practice.

So revert the functional aspect of the patch as it causes linux panics
with ERRATA_A520_2938996. Keep the defines as they are used elsewhere.

Change-Id: I39463d585df89aee44d1996137616da85d678f41
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
2025-01-14 09:06:37 +00:00
Mark Dykes
d0658e6086 Merge "fix(intel): handle cold reset via physical reset switch" into integration 2025-01-13 20:13:04 +01:00
Olivier Deprez
ee990d5217 Merge changes from topic "hob_creation_in_tf_a" into integration
* changes:
  feat(el3_spmc): ffa error handling in direct msg
  feat(ff-a): support FFA_MSG_SEND_DIRECT_REQ2/RESP2
  feat(ff-a): add FFA_MEM_PERM_GET/SET_SMC64
  feat(el3-spmc): support Hob list to boot S-EL0 SP
  feat(synquacer): add support Hob creation
  fix(fvp): exclude extend memory map TZC regions
  feat(fvp): add StandaloneMm manifest in fvp
  feat(spm): use xfer list with Hob list in SPM_MM
2025-01-13 20:02:39 +01:00
Manish Pandey
5e8509c22c Merge "feat(mt8196): link prebuilt library" into integration 2025-01-13 15:52:51 +01:00
Manish Pandey
4e59323c8f Merge "feat(mt8196): add Mediatek EMI stub implementation for mt8196" into integration 2025-01-13 15:52:22 +01:00
Levi Yun
e1168bc375 feat(el3_spmc): ffa error handling in direct msg
When an FFA_ERROR happens while handling a direct message
from normal world, return to normal world with
FFA_ERROR. Otherwise, the system would re-enter the secure partition
with FFA_ERROR.

Change-Id: I3d9a68a41b4815c1a8e10354cfcf68fec9f4b800
Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
2025-01-13 11:35:12 +00:00
Levi Yun
09a580b796 feat(ff-a): support FFA_MSG_SEND_DIRECT_REQ2/RESP2
StandaloneMm which is S-EL0 partition uses
FFA_MSG_SEND_DIRECT_REQ2/RESP2 to handle multiple services.
For this, add support for FFA_MSG_SEND_DIRECT_REQ2/RESP2 in el3_spmc
restrictly up to use 8 registers.
although FF-A v1.2 defines FFA_MSG_SEND_DIRECT_REQ2/RESP2
with ability to pass/return up to 18 registers.

Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
Change-Id: I8ab1c332d269d9d131330bb2debd10d75bdba1ee
2025-01-13 11:34:41 +00:00
Gavin Liu
e033943661 feat(mt8196): link prebuilt library
If MTKLIB_PATH is provided, the build will use the library provided by
MTKLIB_PATH. Otherwise, it will use stub implementation.

Change-Id: I218e724231c8bbc6cc851a240c6bbc4f6f49f154
Signed-off-by: Gavin Liu <gavin.liu@mediatek.corp-partner.google.com>
2025-01-13 08:45:06 +01:00
Govindraj Raja
ea7bffdb85 Merge changes from topic "handoff_tpm_event_log" into integration
* changes:
  feat(qemu): hand off TPM event log via TL
  feat(handoff): common API for TPM event log handoff
  feat(handoff): transfer entry ID for TPM event log
  fix(qemu): fix register convention in BL31 for qemu
  fix(handoff): fix register convention in opteed
2025-01-09 20:20:41 +01:00
Soby Mathew
c53087e73e Merge "fix(qemu): fix RMM manifest checksum calculation" into integration 2025-01-09 17:47:31 +01:00
Jean-Philippe Brucker
d08dca4263 fix(qemu): fix RMM manifest checksum calculation
Commit 71c4443886ff ("fix(lib/rmm_el3_ifc): add console name to checksum
calculation") on TF-RMM updated the checksum calcualtion of the RMM
manifest to include the console names.

Include console names in the QEMU manifest to remain compatible with
RMM, just like commit aa99881d30 ("fix(rme): add console name to
checksum calculation") did for FVP.

Checksum calculation is done by adding together 64-bit values. Add a
helper that does this.

Change-Id: Ica6cab628160593830270bef1acdeb475d1c0c36
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
2025-01-09 14:41:37 +00:00
Manish Pandey
6157ef37fb Merge changes from topic "bk/smccc_feature" into integration
* changes:
  feat(smccc): implement SMCCC_ARCH_FEATURE_AVAILABILITY
  refactor(cm): clean up per-world context
  refactor(cm): change owning security state when a feature is disabled
2025-01-09 13:57:00 +01:00
Gavin Liu
39f5e27820 feat(mt8196): add Mediatek EMI stub implementation for mt8196
Implement stub functions for the EMI driver to ensure that the build
can pass when a prebuilt library is not available.

Change-Id: I296945a3df6766a3a133cd385a1e5038ca979403
Signed-off-by: Gavin Liu <gavin.liu@mediatek.corp-partner.google.com>
2025-01-09 09:16:00 +02:00
Govindraj Raja
79e11f5654 Merge changes I1f662f82,I59a3b297 into integration
* changes:
  fix(build): include platform mk earlier
  fix(arm): use EL3_PAS in MAP_BL2_TOTAL definition
2025-01-09 00:03:35 +01:00
Manish Pandey
001f22cdd4 Merge "feat(tc): print ni-tower discovery tree" into integration 2025-01-08 12:57:33 +01:00
Manish Pandey
78f9c43786 Merge changes I58ba6b70,Id463a9dd into integration
* changes:
  fix(tc): set console baurate to 38400 for fvp as well
  refactor(tc): remove redundant macro UARTCLK_FREQ
2025-01-08 12:57:23 +01:00
Manish Pandey
14cbe32c19 Merge "chore(deps): bump jinja2" into integration 2025-01-07 22:56:02 +01:00
Olivier Deprez
8cc972421f fix(smmu): set root port CR0 GPCEN before ACCESSEN
In the SMMU root port programming model, changing both
SMMU_ROOT_CR0.GPCEN and ACCESSEN bits in the same MMIO write operation
is permitted by the architecture but left to the SMMU IP implementation
to determine the order of completing one or the other operation.

Enforce more determinism by setting CR0.GPCEN, wait for CR0ACK.GPCEN
completion, then setting CR0.ACCESSEN and wait for CR0ACK.ACCESSEN
completion.

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I36ba5fbc13d06c6243226008d18a2d57477b0d28
2025-01-07 17:45:01 +01:00
dependabot[bot]
f927511145 chore(deps): bump jinja2
Bumps the pip group with 1 update in the /tools/tlc directory: [jinja2](https://github.com/pallets/jinja).

Updates `jinja2` from 3.1.4 to 3.1.5
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
  dependency-group: pip
...

Change-Id: Ib7988c4ee21d6125c073d5b27241921b53a6cac4
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Chris Kay <chris.kay@arm.com>
2025-01-07 16:36:58 +00:00
Olivier Deprez
696ed16877 fix(build): include platform mk earlier
Move platform.mk inclusion in top level Makefile to permit a platform
specifying BRANCH_PROTECTION option.

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I1f662f82cd949eedfdbb61b9f66de15c46fb3106
2025-01-07 17:14:18 +01:00
Olivier Deprez
875423de49 fix(arm): use EL3_PAS in MAP_BL2_TOTAL definition
Similarly to BL1 and BL31, use EL3_PAS macro from xlat_tables header
(depends on ENABLE_RME) in BL2 to define MAP_BL2_TOTAL.

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I59a3b297efd2eacd082a297de6b579b7c9052883
2025-01-07 17:13:44 +01:00
Olivier Deprez
c7545b22e6 Merge "chore(deps): bump cross-spawn" into integration 2025-01-07 17:05:44 +01:00