| 83435637 | 04-Jan-2022 |
johpow01 <john.powell@arm.com> |
fix(errata): workaround for Cortex-A510 erratum 1922240
Cortex-A510 erratum 1922240 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
Since no errata framework code existed for
fix(errata): workaround for Cortex-A510 erratum 1922240
Cortex-A510 erratum 1922240 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
Since no errata framework code existed for A510 prior to this patch, it has been added as well. Also some general cleanup changes in the CPU lib makefile.
SDEN can be found here: https://developer.arm.com/documentation/SDEN2397239
Signed-off-by: John Powell <john.powell@arm.com> Change-Id: I8c427ef255cb4b38ed3e5c2c7444fcef957277e4
show more ...
|
| 47909f9d | 22-Feb-2022 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge changes from topic "x2_errata" into integration
* changes: fix(errata): workaround for Cortex-A710 erratum 2136059 fix(errata): workaround for Cortex-A710 erratum 2267065 fix(errata): w
Merge changes from topic "x2_errata" into integration
* changes: fix(errata): workaround for Cortex-A710 erratum 2136059 fix(errata): workaround for Cortex-A710 erratum 2267065 fix(errata): workaround for Cortex-X2 erratum 2216384 fix(errata): workaround for Cortex-X2 errata 2081180 fix(errata): workaround for Cortex-X2 errata 2017096
show more ...
|
| 8a855bd2 | 06-Feb-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(errata): workaround for Cortex-A710 erratum 2136059
Cortex-A710 erratum 2136059 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of the CPU. It is fixed in r2p1. The workaround i
fix(errata): workaround for Cortex-A710 erratum 2136059
Cortex-A710 erratum 2136059 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of the CPU. It is fixed in r2p1. The workaround is to set CPUACTLR5_EL1[44] to 1 which will cause the CPP instruction to invalidate the hardware prefetcher state trained from any EL.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775101/latest
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: I43a86a365418fb663cc1b6ab1d365b4beddae0bc
show more ...
|
| cfe1a8f7 | 06-Feb-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(errata): workaround for Cortex-A710 erratum 2267065
Cortex-A710 erratum 2267065 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of the CPU. It is fixed in r2p1. The workaround
fix(errata): workaround for Cortex-A710 erratum 2267065
Cortex-A710 erratum 2267065 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of the CPU. It is fixed in r2p1. The workaround is to set CPUACTLR_EL1[22] to 1'b1. Setting CPUACTLR_EL1[22] will cause the CFP instruction to invalidate all branch predictor resources regardless of context.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775101/latest
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: Ia9085aaf9b2b6a2b25d03ab36bd3774839fac9aa
show more ...
|
| 4dff7594 | 06-Feb-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(errata): workaround for Cortex-X2 erratum 2216384
Cortex-X2 erratum 2216384 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of CPU. It is fixed in r2p1. The workaround is to set
fix(errata): workaround for Cortex-X2 erratum 2216384
Cortex-X2 erratum 2216384 is a Cat B erratum that applies to revisions r0p0, r1p0 and r2p0 of CPU. It is fixed in r2p1. The workaround is to set CPUACTLR5_EL1[17] to 1'b1 followed by applying an instruction patching sequence.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775100/latest
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: I3c216161678887c06a28c59644e784e0c7d37bab
show more ...
|
| c060b533 | 20-Jan-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(errata): workaround for Cortex-X2 errata 2081180
Cortex-X2 erratum 2081180 is a Cat B erratum present in r0p0, r1p0 and r2p0 of the Cortex-X2 processor core.
Cortex-X2 SDEN: https://developer.a
fix(errata): workaround for Cortex-X2 errata 2081180
Cortex-X2 erratum 2081180 is a Cat B erratum present in r0p0, r1p0 and r2p0 of the Cortex-X2 processor core.
Cortex-X2 SDEN: https://developer.arm.com/documentation/SDEN1775100
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: I64bed2fd5b7e12932d6de2ae668786e689885188
show more ...
|
| e7ca4433 | 20-Jan-2022 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(errata): workaround for Cortex-X2 errata 2017096
Cortex-X2 erratum 2017096 is a Cat B erratum that applies to revisions r0p0, r1p0 & r2p0. The workaround is to set CPUECLTR_EL1[8] to 1 which dis
fix(errata): workaround for Cortex-X2 errata 2017096
Cortex-X2 erratum 2017096 is a Cat B erratum that applies to revisions r0p0, r1p0 & r2p0. The workaround is to set CPUECLTR_EL1[8] to 1 which disables store issue prefetching.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775100
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: I3b740aedc95c2394f6b8d1186014d2b2f640ae05
show more ...
|
| 14714755 | 07-Dec-2021 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(cpu): add library support for Poseidon CPU
This patch adds the basic CPU library code to support the Poseidon CPU in TF-A. Poseidon is derived from HunterELP core, an implementation of v9.2 arc
feat(cpu): add library support for Poseidon CPU
This patch adds the basic CPU library code to support the Poseidon CPU in TF-A. Poseidon is derived from HunterELP core, an implementation of v9.2 architecture. Currently, Hunter CPU the predecessor to HunterELP, is supported in TF-A. Accordingly the Hunter CPU library code has been as the base and adapted here.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: I406b4de156a67132e6a5523370115aaac933f18d
show more ...
|
| 8bbb1d80 | 21-Oct-2021 |
Jiafei Pan <Jiafei.Pan@nxp.com> |
feat(cpu/cortex_a53): add L1PCTL macro definiton for CPUACTLR_EL1
Add L1PCTL field definiton in register CPUACTLR_EL1.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com> Change-Id: Iebfb240ac58aa8f3dc8
feat(cpu/cortex_a53): add L1PCTL macro definiton for CPUACTLR_EL1
Add L1PCTL field definiton in register CPUACTLR_EL1.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com> Change-Id: Iebfb240ac58aa8f3dc870804bf4390dfbdfa9b95
show more ...
|
| e16045de | 03-Dec-2021 |
johpow01 <john.powell@arm.com> |
fix(errata): workaround for Cortex X2 erratum 2058056
Cortex X2 erratum 2058056 is a Cat B erratum present in the X2 core. It applies to revisions r0p0, r1p0, and r2p0 and is still open.
There are
fix(errata): workaround for Cortex X2 erratum 2058056
Cortex X2 erratum 2058056 is a Cat B erratum present in the X2 core. It applies to revisions r0p0, r1p0, and r2p0 and is still open.
There are 2 ways this workaround can be accomplished, the first of which involves executing a few additional instructions around MSR writes to CPUECTLR when disabling the prefetcher. (see SDEN for details)
However, this patch implements the 2nd possible workaround which sets the prefetcher into its most conservative mode, since this workaround is generic.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775100
Signed-off-by: John Powell <john.powell@arm.com> Change-Id: Idb20d9928c986616cd5bedf40bb29d46d384cfd3
show more ...
|
| 1db6cd60 | 01-Dec-2021 |
johpow01 <john.powell@arm.com> |
fix(errata): workaround for Cortex X2 erratum 2083908
Cortex X2 erratum 2083908 is a Cat B erratum present in the Cortex X2 core. It applies to revision r2p0 and is still open.
SDEN can be found he
fix(errata): workaround for Cortex X2 erratum 2083908
Cortex X2 erratum 2083908 is a Cat B erratum present in the Cortex X2 core. It applies to revision r2p0 and is still open.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1775100
Signed-off-by: John Powell <john.powell@arm.com> Change-Id: Id9dca2b042bf48e75fb3013ab37d1c5925824728
show more ...
|
| 9e3f4093 | 13-Dec-2021 |
Yann Gautier <yann.gautier@st.com> |
feat(fconf): add a helper to get image index
A new function dyn_cfg_dtb_info_get_index() is created to get the index of the given image config_id in the dtb_infos pool. This allows checking if an im
feat(fconf): add a helper to get image index
A new function dyn_cfg_dtb_info_get_index() is created to get the index of the given image config_id in the dtb_infos pool. This allows checking if an image with a specific ID is in the FIP.
Change-Id: Ib300ed08e5b8a683dc7980a90221c305fb3f457d Signed-off-by: Yann Gautier <yann.gautier@st.com>
show more ...
|
| f74cb0be | 25-Nov-2021 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
fix(amu): fault handling on EL2 context switch
The HAFGRTR_EL2 register is UNDEFINED unless the CPU supports both FEAT_FGT and FEAT_AMUv1. FEAT_FGT is mandatory for v8.6-A and upwards, but FEAT_AMUv
fix(amu): fault handling on EL2 context switch
The HAFGRTR_EL2 register is UNDEFINED unless the CPU supports both FEAT_FGT and FEAT_AMUv1. FEAT_FGT is mandatory for v8.6-A and upwards, but FEAT_AMUv1 is optional (from v8.4-A upwards), and as such any 8.6-A cores today without support for FEAT_AMUv1 will trigger an undefined instruction exception on accessing this register.
Currently ARM_ARCH_AT_LEAST macro has been used to associate with an architecture extension allowing to access HAFGRTR_EL2 register. This condition should be replaced with macros specific to individual features. This patch adds a new set of macros "ENABLE_FEAT_FGT, ENABLE_FEAT_AMUv1, ENABLE_FEAT_ECV" under build options to provide controlled access to the HAFGRTR_EL2 register.
Further to ensure that the the build options passed comply with the given hardware implementation, a feature detection mechanism, checking whether build options match with the architecture is required at bootime. This will be implemented and pushed later in a separate patch.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: Ie390f4babe233b8b09455290277edbddecd33ead
show more ...
|
| dc78e62d | 08-Jul-2021 |
johpow01 <john.powell@arm.com> |
feat(sme): enable SME functionality
This patch adds two new compile time options to enable SME in TF-A: ENABLE_SME_FOR_NS and ENABLE_SME_FOR_SWD for use in non-secure and secure worlds respectively.
feat(sme): enable SME functionality
This patch adds two new compile time options to enable SME in TF-A: ENABLE_SME_FOR_NS and ENABLE_SME_FOR_SWD for use in non-secure and secure worlds respectively. Setting ENABLE_SME_FOR_NS=1 will enable SME for non-secure worlds and trap SME, SVE, and FPU/SIMD instructions in secure context. Setting ENABLE_SME_FOR_SWD=1 will disable these traps, but support for SME context management does not yet exist in SPM so building with SPD=spmd will fail.
The existing ENABLE_SVE_FOR_NS and ENABLE_SVE_FOR_SWD options cannot be used with SME as it is a superset of SVE and will enable SVE and FPU/SIMD along with SME.
Signed-off-by: John Powell <john.powell@arm.com> Change-Id: Iaaac9d22fe37b4a92315207891da848a8fd0ed73
show more ...
|
| 28623c10 | 08-Nov-2021 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix: libc: use long for 64-bit types on aarch64" into integration |
| 4ce3e99a | 25-Aug-2020 |
Scott Branden <scott.branden@broadcom.com> |
fix: libc: use long for 64-bit types on aarch64
Use long instead of long long on aarch64 for 64_t stdint types. Introduce inttypes.h to properly support printf format specifiers for fixed width type
fix: libc: use long for 64-bit types on aarch64
Use long instead of long long on aarch64 for 64_t stdint types. Introduce inttypes.h to properly support printf format specifiers for fixed width types for such change.
Change-Id: I0bca594687a996fde0a9702d7a383055b99f10a1 Signed-off-by: Scott Branden <scott.branden@broadcom.com>
show more ...
|
| 603806d1 | 08-Oct-2021 |
nayanpatel-arm <nayankumar.patel@arm.com> |
fix(errata): workaround for Neoverse-N2 erratum 2242400
Neoverse-N2 erratum 2242400 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR5_EL1[
fix(errata): workaround for Neoverse-N2 erratum 2242400
Neoverse-N2 erratum 2242400 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR5_EL1[17] to 1'b1 followed by setting few system control registers to specific values as per attached SDEN document.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1982442/latest
Signed-off-by: nayanpatel-arm <nayankumar.patel@arm.com> Change-Id: I6a9cb4a23238b8b511802a1ee9fcc5b207137649
show more ...
|
| c948185c | 21-Oct-2021 |
nayanpatel-arm <nayankumar.patel@arm.com> |
fix(errata): workaround for Neoverse-N2 erratum 2138958
Neoverse-N2 erratum 2138958 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR5_EL1[
fix(errata): workaround for Neoverse-N2 erratum 2138958
Neoverse-N2 erratum 2138958 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR5_EL1[13] to 1'b1.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1982442/latest
Signed-off-by: nayanpatel-arm <nayankumar.patel@arm.com> Change-Id: I5247f8f8eef08d38c169aad6d2c5501ac387c720
show more ...
|
| 5819e23b | 06-Oct-2021 |
nayanpatel-arm <nayankumar.patel@arm.com> |
fix(errata): workaround for Neoverse-N2 erratum 2242415
Neoverse-N2 erratum 2242415 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR_EL1[2
fix(errata): workaround for Neoverse-N2 erratum 2242415
Neoverse-N2 erratum 2242415 is a Cat B erratum that applies to revision r0p0 of CPU. It is still open. The workaround is to set CPUACTLR_EL1[22] to 1'b1. Setting CPUACTLR_EL1[22] will cause CFP instruction to invalidate all branch predictor resources regardless of context.
SDEN can be found here: https://developer.arm.com/documentation/SDEN1982442/latest
Signed-off-by: nayanpatel-arm <nayankumar.patel@arm.com> Change-Id: I442be81fbc32e21fed51a84f59584df17f845e96
show more ...
|
| 68120783 | 05-May-2021 |
Chris Kay <chris.kay@arm.com> |
feat(mpmm): add support for MPMM
MPMM - the Maximum Power Mitigation Mechanism - is an optional microarchitectural feature present on some Armv9-A cores, introduced with the Cortex-X2, Cortex-A710 a
feat(mpmm): add support for MPMM
MPMM - the Maximum Power Mitigation Mechanism - is an optional microarchitectural feature present on some Armv9-A cores, introduced with the Cortex-X2, Cortex-A710 and Cortex-A510 cores.
MPMM allows the SoC firmware to detect and limit high activity events to assist in SoC processor power domain dynamic power budgeting and limit the triggering of whole-rail (i.e. clock chopping) responses to overcurrent conditions.
This feature is enabled via the `ENABLE_MPMM` build option. Configuration can be done via FCONF by enabling `ENABLE_MPMM_FCONF`, or by via the plaform-implemented `plat_mpmm_topology` function.
Change-Id: I77da82808ad4744ece8263f0bf215c5a091c3167 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 742ca230 | 19-Aug-2021 |
Chris Kay <chris.kay@arm.com> |
feat(amu): enable per-core AMU auxiliary counters
This change makes AMU auxiliary counters configurable on a per-core basis, controlled by `ENABLE_AMU_AUXILIARY_COUNTERS`.
Auxiliary counters can be
feat(amu): enable per-core AMU auxiliary counters
This change makes AMU auxiliary counters configurable on a per-core basis, controlled by `ENABLE_AMU_AUXILIARY_COUNTERS`.
Auxiliary counters can be described via the `HW_CONFIG` device tree if the `ENABLE_AMU_FCONF` build option is enabled, or the platform must otherwise implement the `plat_amu_topology` function.
A new phandle property for `cpu` nodes (`amu`) has been introduced to the `HW_CONFIG` specification to allow CPUs to describe the view of their own AMU:
``` cpu0: cpu@0 { ...
amu = <&cpu0_amu>; }; ```
Multiple cores may share an `amu` handle if they implement the same set of auxiliary counters.
AMU counters are described for one or more AMUs through the use of a new `amus` node:
``` amus { cpu0_amu: amu-0 { #address-cells = <1>; #size-cells = <0>;
counter@0 { reg = <0>;
enable-at-el3; };
counter@n { reg = <n>;
... }; }; }; ```
This structure describes the **auxiliary** (group 1) AMU counters. Architected counters have architecturally-defined behaviour, and as such do not require DTB entries.
These `counter` nodes support two properties:
- The `reg` property represents the counter register index. - The presence of the `enable-at-el3` property determines whether the firmware should enable the counter prior to exiting EL3.
Change-Id: Ie43aee010518c5725a3b338a4899b0857caf4c28 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| e747a59b | 24-May-2021 |
Chris Kay <chris.kay@arm.com> |
refactor(amu): refactor enablement and context switching
This change represents a general refactoring to clean up old code that has been adapted to account for changes required to enable dynamic aux
refactor(amu): refactor enablement and context switching
This change represents a general refactoring to clean up old code that has been adapted to account for changes required to enable dynamic auxiliary counters.
Change-Id: Ia85e0518f3f65c765f07b34b67744fc869b9070d Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 31d3cc25 | 25-May-2021 |
Chris Kay <chris.kay@arm.com> |
refactor(amu): detect auxiliary counters at runtime
This change decouples the group 1 counter macros to facilitate dynamic detection at runtime. These counters remain disabled - we will add dynamic
refactor(amu): detect auxiliary counters at runtime
This change decouples the group 1 counter macros to facilitate dynamic detection at runtime. These counters remain disabled - we will add dynamic enablement of them in a later patch.
Change-Id: I820d05f228d440643bdfa308d030bd51ebc0b35a Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 81e2ff1f | 25-May-2021 |
Chris Kay <chris.kay@arm.com> |
refactor(amu): detect architected counters at runtime
This change removes the `AMU_GROUP0_COUNTERS_MASK` and `AMU_GROUP0_MAX_COUNTERS` preprocessor definitions, instead retrieving the number of grou
refactor(amu): detect architected counters at runtime
This change removes the `AMU_GROUP0_COUNTERS_MASK` and `AMU_GROUP0_MAX_COUNTERS` preprocessor definitions, instead retrieving the number of group 0 counters dynamically through `AMCGCR_EL0.CG0NC`.
Change-Id: I70e39c30fbd5df89b214276fac79cc8758a89f72 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 1fd685a7 | 25-May-2021 |
Chris Kay <chris.kay@arm.com> |
refactor(amu): conditionally compile auxiliary counter support
This change reduces preprocessor dependencies on the `AMU_GROUP1_NR_COUNTERS` and `AMU_GROUP1_COUNTERS_MASK` definitions, as these valu
refactor(amu): conditionally compile auxiliary counter support
This change reduces preprocessor dependencies on the `AMU_GROUP1_NR_COUNTERS` and `AMU_GROUP1_COUNTERS_MASK` definitions, as these values will eventually be discovered dynamically.
In their stead, we introduce the `ENABLE_AMU_AUXILIARY_COUNTERS` build option, which will enable support for dynamically detecting and enabling auxiliary AMU counters.
This substantially reduces the amount of memory used by platforms that know ahead of time that they do not have any auxiliary AMU counters.
Change-Id: I3d998aff44ed5489af4857e337e97634d06e3ea1 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|