| 17ef5da7 | 18-Oct-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(context-mgmt): introduce EL3/root context" into integration |
| 9890eab5 | 18-Oct-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(brbe): allow RME builds with BRBE
It used to be the case that a FEAT_RME build could not be built with FEAT_BRBE support. BRBE doesn't have a 3-world aware disable and MDCR_EL3 was not context s
fix(brbe): allow RME builds with BRBE
It used to be the case that a FEAT_RME build could not be built with FEAT_BRBE support. BRBE doesn't have a 3-world aware disable and MDCR_EL3 was not context switched to allow for disabling in Realm world.
As of commit 123002f9171384d976d95935b7f566740d69cc68 MDCR_EL3 is context switched. Since the flag for BRBE support is ENABLE_BRBE_FOR_NS, move brbe_enable() to only happen for NS world. The other worlds will see BRBE disabled and branch recording prohibited. This allows for a build with both RME and BRBE.
Note that EL2 BRBE registers are not context switched. Further work is needed if non-NS support is required.
Change-Id: I82f0f08399dcd080902477dc9636bc4541685f89 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 8fa54607 | 02-Oct-2024 |
Govindraj Raja <govindraj.raja@arm.com> |
feat(cpus): add support for arcadia cpu
Add basic CPU library code to support the Arcadia CPU.
Change-Id: Iecb0634dc6dcb34e9b5fda4902335530d237cc43 Signed-off-by: Govindraj Raja <govindraj.raja@arm
feat(cpus): add support for arcadia cpu
Add basic CPU library code to support the Arcadia CPU.
Change-Id: Iecb0634dc6dcb34e9b5fda4902335530d237cc43 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| db9ee834 | 26-Sep-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
chore(cpus): optimise runtime errata applications
The errata framework has a helper to invoke workarounds, complete with a cpu rev_var check. We can use that directly instead of the apply_cpu_pwr_dw
chore(cpus): optimise runtime errata applications
The errata framework has a helper to invoke workarounds, complete with a cpu rev_var check. We can use that directly instead of the apply_cpu_pwr_dwn_errata to save on some code, as well as an extra branch. It's also more readable.
Also, apply_erratum invocation in cpu files don't need to check the rev_var as that was already done by the cpu_ops dispatcher for us to end up in the file.
Finally, X2 erratum 2768515 only applies in the powerdown sequence, i.e. at runtime. It doesn't achieve anything at reset, so we can label it accordingly.
Change-Id: I02f9dd7d0619feb54c870938ea186be5e3a6ca7b Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 40e5f7a5 | 08-Aug-2023 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(context-mgmt): introduce EL3/root context
* This patch adds root context procedure to restore/configure the registers, which are of importance during EL3 execution.
* EL3/Root context is a s
feat(context-mgmt): introduce EL3/root context
* This patch adds root context procedure to restore/configure the registers, which are of importance during EL3 execution.
* EL3/Root context is a simple restore operation that overwrites the following bits: (MDCR_EL3.SDD, SCR_EL3.{EA, SIF}, PMCR_EL0.DP PSTATE.DIT) while the execution is in EL3.
* It ensures EL3 world maintains its own settings distinct from other worlds (NS/Realm/SWd). With this in place, the EL3 system register settings is no longer influenced by settings of incoming worlds. This allows the EL3/Root world to access features for its own execution at EL3 (eg: Pauth).
* It should be invoked at cold and warm boot entry paths and also at all the possible exception handlers routing to EL3 at runtime. Cold and warm boot paths are handled by including setup_el3_context function in "el3_entrypoint_common" macro, which gets invoked in both the entry paths.
* At runtime, el3_context is setup at the stage, while we get prepared to enter into EL3 via "prepare_el3_entry" routine.
Change-Id: I5c090978c54a53bc1c119d1bc5fa77cd8813cdc2 Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
show more ...
|
| 4ec4e545 | 06-Sep-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(sctlr2): add support for FEAT_SCTLR2
Arm v8.9 introduces FEAT_SCTLR2, adding SCTLR2_ELx registers. Support this, context switching the registers and disabling traps so lower ELs can access the
feat(sctlr2): add support for FEAT_SCTLR2
Arm v8.9 introduces FEAT_SCTLR2, adding SCTLR2_ELx registers. Support this, context switching the registers and disabling traps so lower ELs can access the new registers.
Change the FVP platform to default to handling this as a dynamic option so the right decision can be made by the code at runtime.
Change-Id: I0c4cba86917b6b065a7e8dd6af7daf64ee18dcda Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 6d0433f0 | 05-Sep-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(the): add support for FEAT_THE
Arm v8.9 introduces FEAT_THE, adding Translation Hardening Extension Read-Check-Write mask registers, RCWMASK_EL1 and RCWSMASK_EL1. Support this, context switchin
feat(the): add support for FEAT_THE
Arm v8.9 introduces FEAT_THE, adding Translation Hardening Extension Read-Check-Write mask registers, RCWMASK_EL1 and RCWSMASK_EL1. Support this, context switching the registers and disabling traps so lower ELs can access the new registers.
Change the FVP platform to default to handling this as a dynamic option so the right decision can be made by the code at runtime.
Change-Id: I8775787f523639b39faf61d046ef482f73b2a562 Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 5765e0c9 | 07-Oct-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(cpus): modify the fix for Cortex-A75 erratum 764081" into integration |
| 7f152ea6 | 10-Jul-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): modify the fix for Cortex-A75 erratum 764081
Apply the mitigation only for the revision and variant mentioned in the SDEN.
SDEN Documentation: https://developer.arm.com/documentation/SDE
fix(cpus): modify the fix for Cortex-A75 erratum 764081
Apply the mitigation only for the revision and variant mentioned in the SDEN.
SDEN Documentation: https://developer.arm.com/documentation/SDEN859515/latest
Change-Id: Ifda1f4cb32bdec9a9af29397ddc03bf22a7a87fc Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| db7eb688 | 21-May-2024 |
Ryan Everett <ryan.everett@arm.com> |
fix(cpus): workaround for Cortex-X4 erratum 3076789
Cortex-X4 erratum 3076789 is a Cat B erratum that is present in revisions r0p0, r0p1 and is fixed in r0p2.
The workaround is to set chicken bits
fix(cpus): workaround for Cortex-X4 erratum 3076789
Cortex-X4 erratum 3076789 is a Cat B erratum that is present in revisions r0p0, r0p1 and is fixed in r0p2.
The workaround is to set chicken bits CPUACTLR3_EL1[14:13]=0b11 and CPUACTLR_EL1[52] = 1. Expected performance degradation is < 0.5%, but isolated benchmark components might see higher impact.
SDEN documentation: https://developer.arm.com/documentation/SDEN2432808/latest
Change-Id: Ib100bfab91efdb6330fdcdac127bcc5732d59196 Signed-off-by: Ryan Everett <ryan.everett@arm.com>
show more ...
|
| e6f7929d | 25-Sep-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(cpus): workaround for Cortex-X4 erratum 2897503" into integration |
| 1297a45d | 25-Sep-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "dynamic-toolchain" into integration
* changes: build: allow multiple toolchain defaults build: determine toolchain tools dynamically |
| 609d08a8 | 26-Aug-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(cpus): workaround for Cortex-X4 erratum 2897503
Cortex-X4 erratum 2897503 is a Cat B erratum that applies to all revisions <= r0p1 and is fixed in r0p2.
The workaround is to set CPUACTLR4_EL1[8
fix(cpus): workaround for Cortex-X4 erratum 2897503
Cortex-X4 erratum 2897503 is a Cat B erratum that applies to all revisions <= r0p1 and is fixed in r0p2.
The workaround is to set CPUACTLR4_EL1[8] to 1.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2432808/latest
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I3178a890b6f1307b310e817af75f8fdfb8668cc9
show more ...
|
| 670150b8 | 20-Aug-2024 |
Moritz Fischer <moritzf@google.com> |
chore(gpt): fix typo in comment
Fix a confusing typo in comment docstring.
Change-Id: I9424454b9fa140bf6a482dea7f8cba24806068b6 Signed-off-by: Moritz Fischer <moritzf@google.com> |
| 3789c3c0 | 03-Jun-2024 |
Chris Kay <chris.kay@arm.com> |
build: determine toolchain tools dynamically
Since the introduction of the toolchain detection framework into the build system, we have done determination and identification of the toolchain(s) used
build: determine toolchain tools dynamically
Since the introduction of the toolchain detection framework into the build system, we have done determination and identification of the toolchain(s) used for the build at the initialization of the build system.
This incurs a large cost to the build every time - for every toolchain that has been requested by the current makefile, we try to identify each tool in the list of known tool classes, even if that tool doesn't actually see any use.
For the clean and check-like targets we worked around this by disabling most of the toolchains if we detect these targets, but this is inflexible and not very reliable, and it still means that when building normal targets we are incurring that cost for all tools whether they are used or not.
This change instead modifies the toolchain detection framework to only initialize a tool for a given toolchain when it is first used. This does mean that we can no longer warn about an incorrectly-configured toolchain at the beginning of build system invocation, but it has the advantage of substantially reducing build time and the complexity of *using* the framework (at the cost of an increase in complexity in the framework itself).
Change-Id: I7f3d06b2eb58c1b26a846791a13b0037f32c8013 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| f4303d05 | 02-Sep-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(cm): handle asymmetry for FEAT_TCR2
With introduction of FEAT_STATE_CHECK_ASYMMETRIC, the asymmetry of cores can be handled. FEAT_TCR2 is one of the features which can be asymmetric across core
feat(cm): handle asymmetry for FEAT_TCR2
With introduction of FEAT_STATE_CHECK_ASYMMETRIC, the asymmetry of cores can be handled. FEAT_TCR2 is one of the features which can be asymmetric across cores and the respective support is added here.
Adding a function to handle this asymmetry by re-visting the feature presence on running core. There are two possible cases: - If the primary core has the feature and secondary does not have it then the feature is disabled. - If the primary does not have the feature and secondary has it then, the feature need to be enabled in secondary cores.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: I73a70891d52268ddfa4effe40edf04115f5821ca
show more ...
|
| cc4f3838 | 27-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "clean-up-errata-compatibility" into integration
* changes: refactor(cpus): remove cpu specific errata funcs refactor(cpus): directly invoke errata reporter |
| 021cdbfb | 21-Aug-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge changes from topic "jc/refact_el1_ctx" into integration
* changes: feat(cm): enhance the cpu_context memory report refactor(cm): remove el1 context when SPMD_SPM_AT_SEL2=1 |
| 781e1a44 | 20-May-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(cm): enhance the cpu_context memory report
Currently, as part of the context_memory report, we explicitly list the EL3, EL1 and EL2 registers and memory usage per CPU for each world. The remain
feat(cm): enhance the cpu_context memory report
Currently, as part of the context_memory report, we explicitly list the EL3, EL1 and EL2 registers and memory usage per CPU for each world. The remaining bits in the cpu_context_t structure are grouped and listed as other section.
This patch enhances this part, by individually listing all the remaining bits (GPREGS, PAUTH_REGS) separately providing a much detailed overview of the context memory consumption amongst the registers.
The patch has been tested on the CI with the following patch and the results are summarised precisely. [https://review.trustedfirmware.org/c/ci/tf-a-ci-scripts/+/28849]
Change-Id: I16f210b605ddd7900600519520accf1ccd057bc7 Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
show more ...
|
| a0674ab0 | 07-May-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
refactor(cm): remove el1 context when SPMD_SPM_AT_SEL2=1
* Currently, EL1 context is included in cpu_context_t by default for all the build configurations. As part of the cpu context structure,
refactor(cm): remove el1 context when SPMD_SPM_AT_SEL2=1
* Currently, EL1 context is included in cpu_context_t by default for all the build configurations. As part of the cpu context structure, we hold a copy of EL1, EL2 system registers, per world per PE. This context structure is enormous and will continue to grow bigger with the addition of new features incorporating new registers.
* Ideally, EL3 should save and restore the system registers at its next lower exception level, which is EL2 in majority of the configurations.
* This patch aims at optimising the memory allocation in cases, when the members from the context structure are unused. So el1 system register context must be omitted when lower EL is always x-EL2.
* "CTX_INCLUDE_EL2_REGS" is the internal build flag which gets set, when SPD=spmd and SPMD_SPM_AT_SEL2=1 or ENABLE_RME=1. It indicates, the system registers at EL2 are context switched for the respective build configuration. Here, there is no need to save and restore EL1 system registers, while x-EL2 is enabled.
Henceforth, this patch addresses this issue, by taking out the EL1 context at all possible places, while EL2 (CTX_INCLUDE_EL2_REGS) is enabled, there by saving memory.
Change-Id: Ifddc497d3c810e22a15b1c227a731bcc133c2f4a Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
show more ...
|
| 31826ba2 | 21-Aug-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(cpus): workaround for Cortex-A720 erratum 2792132" into integration |
| a0d9a973 | 30-Jul-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
chore(cm): reorganise sctlr_el1 and tcr_el1 ctx code
SCTLR_EL1 and TCR_EL1 regs are included either as part of errata "ERRATA_SPECULATIVE_AT" or under el1_sysregs_t context structure. The code to wr
chore(cm): reorganise sctlr_el1 and tcr_el1 ctx code
SCTLR_EL1 and TCR_EL1 regs are included either as part of errata "ERRATA_SPECULATIVE_AT" or under el1_sysregs_t context structure. The code to write and read into these context entries, looks repetitive and is invoked at most places. This section is refactored to bring them under a static procedure, keeping the code neat and easier to maintain.
Change-Id: Ib0d8c51bee09e1600c5baaa7f9745083dca9fee1 Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
show more ...
|
| 4b6e4e61 | 20-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "mp/simd_ctxt_mgmt" into integration
* changes: feat(fvp): allow SIMD context to be put in TZC DRAM docs(simd): introduce CTX_INCLUDE_SVE_REGS build flag feat(fvp): ad
Merge changes from topic "mp/simd_ctxt_mgmt" into integration
* changes: feat(fvp): allow SIMD context to be put in TZC DRAM docs(simd): introduce CTX_INCLUDE_SVE_REGS build flag feat(fvp): add Cactus partition manifest for EL3 SPMC chore(simd): remove unused macros and utilities for FP feat(el3-spmc): support simd context management upon world switch feat(trusty): switch to simd_ctx_save/restore apis feat(pncd): switch to simd_ctx_save/restore apis feat(spm-mm): switch to simd_ctx_save/restore APIs feat(simd): add rules to rationalize simd ctxt mgmt feat(simd): introduce simd context helper APIs feat(simd): add routines to save, restore sve state feat(simd): add sve state to simd ctxt struct feat(simd): add data struct for simd ctxt management
show more ...
|
| b1bde25e | 19-Jul-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(cpus): workaround for Cortex-A720 erratum 2792132
Cortex-A720 erratum 2792132 is a Cat B erratum that is present in revision r0p0, r0p1 and is fixed in r0p2.
The workaround is to set bit[26] of
fix(cpus): workaround for Cortex-A720 erratum 2792132
Cortex-A720 erratum 2792132 is a Cat B erratum that is present in revision r0p0, r0p1 and is fixed in r0p2.
The workaround is to set bit[26] of the CPUACTLR2_EL1 to 1.
SDEN documentation: https://developer.arm.com/documentation/SDEN2439421/latest
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I8d11fe65a2ab5f79244cc3395d0645f77256304c
show more ...
|
| 308ebfa1 | 17-Jun-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
feat(simd): introduce simd context helper APIs
This patch adds the common API to save and restore FP and SVE. When SVE is enabled we save and restore SVE which automatically covers FP. If FP is enab
feat(simd): introduce simd context helper APIs
This patch adds the common API to save and restore FP and SVE. When SVE is enabled we save and restore SVE which automatically covers FP. If FP is enabled while SVE is not, then we save and restore FP only.
The patch uses simd_ctx_t to save and restore both FP and SVE which means developers need not use fp or sve routines directly. Once all the calls to fpregs_context_* are replaced with simd_ctx_*, we can remove fp_regs_t data structure and macros (taken care in a following patch).
simd_ctx_t is currently allocated in section of its own. This will go into BSS section by default but platform will have option of relocating it to a different section by overriding in plat.ld.S.
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com> Signed-off-by: Okash Khawaja <okash@google.com> Change-Id: I090f8b8fa3862e527b6c40385249adc69256bf24
show more ...
|