| #
30f05b4f |
| 09-Jan-2024 |
Manish Pandey <manish.pandey2@arm.com> |
feat(cpufeat): added few helper functions
Following utility functions/bit definitions done - Write a helper function to return the presence of following features - FEAT_UAO - FEAT_EBEP
feat(cpufeat): added few helper functions
Following utility functions/bit definitions done - Write a helper function to return the presence of following features - FEAT_UAO - FEAT_EBEP - FEAT_SEBEP - FEAT_SSBS - FEAT_NMI - FEAT_PAN - Add definition of some missing bits of SPSR. - Add GCSCR_EL1 register encoding and accessor function.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: Ifcead0dd8e3b32096e4ab810dde5d582a889785a
show more ...
|
| #
7516d93d |
| 29-Jan-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): add feature detection for FEAT_CSV2_3" into integration
|
| #
30019d86 |
| 25-Oct-2023 |
Sona Mathew <sonarebecca.mathew@arm.com> |
feat(cpufeat): add feature detection for FEAT_CSV2_3
This feature provides support to context save the SCXTNUM_ELx register. FEAT_CSV2_3 implies the implementation of FEAT_CSV2_2. FEAT_CSV2_3 is sup
feat(cpufeat): add feature detection for FEAT_CSV2_3
This feature provides support to context save the SCXTNUM_ELx register. FEAT_CSV2_3 implies the implementation of FEAT_CSV2_2. FEAT_CSV2_3 is supported in AArch64 state only and is an optional feature in Arm v8.0 implementations.
This patch adds feature detection for v8.9 feature FEAT_CSV2_3, adds macros for ID_AA64PFR0_EL1.CSV2 bits [59:56] for detecting FEAT_CSV2_3 and macro for ENABLE_FEAT_CSV2_3.
Change-Id: Ida9f31e832b5f11bd89eebd6cc9f10ddad755c14 Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
6f802c44 |
| 02-Nov-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "mp/exceptions" into integration
* changes: docs(ras): update RAS documentation docs(el3-runtime): update BL31 exception vector handling fix(el3-runtime): restrict low
Merge changes from topic "mp/exceptions" into integration
* changes: docs(ras): update RAS documentation docs(el3-runtime): update BL31 exception vector handling fix(el3-runtime): restrict lower el EA handlers in FFH mode fix(ras): remove RAS_FFH_SUPPORT and introduce FFH_SUPPORT fix(ras): restrict ENABLE_FEAT_RAS to have only two states feat(ras): use FEAT_IESB for error synchronization feat(el3-runtime): modify vector entry paths
show more ...
|
| #
6d22b089 |
| 11-Oct-2023 |
Manish Pandey <manish.pandey2@arm.com> |
fix(el3-runtime): restrict lower el EA handlers in FFH mode
This patch does following changes to restrict handling of lower EL EA's only if FFH mode is enabled.
- Compile ea_delegate.S only if FFH
fix(el3-runtime): restrict lower el EA handlers in FFH mode
This patch does following changes to restrict handling of lower EL EA's only if FFH mode is enabled.
- Compile ea_delegate.S only if FFH mode is enabled. - For Sync exception from lower ELs if the EC is not SMC or SYS reg trap it was assumed that it is an EA, which is not correct. Move the known Sync exceptions (EL3 Impdef) out of sync EA handler. - Report unhandled exceptions if there are SError from lower EL in KFH mode, as this is unexpected. - Move code out of ea_delegate.S which are used for KFH mode.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: I577089677d0ec8cde7c20952172bee955573d2ed
show more ...
|
| #
33bb5787 |
| 31-Oct-2023 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "feat(cpufeat): add memory retention bit define for CLUSTERPWRDN" into integration
|
| #
0e1dc0f2 |
| 25-Oct-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(mpam): refine MPAM initialization and enablement process" into integration
|
| #
edebefbc |
| 11-Oct-2023 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(mpam): refine MPAM initialization and enablement process
Restricts MPAM to only NS world and enables trap to EL3 for access of MPAM registers from lower ELs of Secure and Realm world.
This patc
fix(mpam): refine MPAM initialization and enablement process
Restricts MPAM to only NS world and enables trap to EL3 for access of MPAM registers from lower ELs of Secure and Realm world.
This patch removes MPAM enablement from global context and adds it to EL3 State context which enables/disables MPAM during world switches. Renamed ENABLE_MPAM_FOR_LOWER_ELS to ENABLE_FEAT_MPAM and removed mpam_init_el3() as RESET behaviour is trapping.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I131f9dba5df236a71959b2d425ee11af7f3c38c4
show more ...
|
| #
278beb89 |
| 13-Sep-2023 |
Jacky Bai <ping.bai@nxp.com> |
feat(cpufeat): add memory retention bit define for CLUSTERPWRDN
Bit1 in the CLUSTERPWRDN register is used to indicate on CLUSTERPACTIVE that memory retention is required or not. It can be used for L
feat(cpufeat): add memory retention bit define for CLUSTERPWRDN
Bit1 in the CLUSTERPWRDN register is used to indicate on CLUSTERPACTIVE that memory retention is required or not. It can be used for L3 cache memory retention support.
Signed-off-by: Jacky Bai <ping.bai@nxp.com> Change-Id: I1c53c90ae3dfbed3be7e5b2b79f2c3565db81012
show more ...
|
| #
6a62ddff |
| 30-Aug-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): initialize HFG*_EL2 registers" into integration
|
| #
f3751bd7 |
| 24-Aug-2023 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "fix(cpus): check for SME presence in Gelas" into integration
|
| #
0bbd4329 |
| 14-Aug-2023 |
Juan Pablo Conde <juanpablo.conde@arm.com> |
fix(cpus): check for SME presence in Gelas
The original powerdown function for Gelas included SME disabling instructions but did not check for the presence of SME before disabling. This could lead t
fix(cpus): check for SME presence in Gelas
The original powerdown function for Gelas included SME disabling instructions but did not check for the presence of SME before disabling. This could lead to unexpected beaviors. This patch adds that check so the feature is disabled only if it is present.
Change-Id: I582db53a6669317620e4f72a3eac87525897d3d0 Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
show more ...
|
| #
f7b37c6a |
| 16-Aug-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "refactor(cpufeat): introduce wrapper macro for read_feat_...() functions" into integration
|
| #
a8d5d3d5 |
| 18-Apr-2023 |
Andre Przywara <andre.przywara@arm.com> |
refactor(cpufeat): introduce wrapper macro for read_feat_...() functions
At the moment we have some elaborate, but very schematic functions to allow checking for CPU feature enablement. Adding some
refactor(cpufeat): introduce wrapper macro for read_feat_...() functions
At the moment we have some elaborate, but very schematic functions to allow checking for CPU feature enablement. Adding some more becomes tedious and is also error-prone.
Provide two wrapper macros that reduce most of the features to a single line: - CREATE_FEATURE_FUNCS(name, idreg, idfield, guard) creates two functions read_<name>_id_field() and is_<name>_supported(), that check the 4-bit CPU ID field starting at bit <idfield> in <idreg> for being not 0, and compares it against the build time <guard> symbol. For the usual feature (like PAN) this looks like: CREATE_FEATURE_FUNCS(feat_pan, id_aa64mmfr1_el1, ID_AA64MMFR1_EL1_PAN_SHIFT, ENABLE_FEAT_PAN)
- CREATE_FEATURE_FUNCS_VER(name, read_func, idvalue, guard) creates one function to check for a certain CPU ID field *value*, so when "!= 0" is not sufficient. It's meant to be used in addition to the above macro, since that generates the CPU ID field accessor function: CREATE_FEATURE_FUNCS(feat_amu, id_aa64pfr0_el1, ID_AA64PFR0_AMU_SHIFT, ENABLE_FEAT_AMU) CREATE_FEATURE_FUNCS_VER(feat_amuv1p1, read_feat_amu_id_field, ID_AA64PFR0_AMU_V1P1, ENABLE_FEAT_AMUv1p1)
Describe the existing feature accessor functions using those new macros, to reduce the size of the file, improve readability and decrease the possibility of (copy&paste) bugs.
Change-Id: Ib136a875b4857058ff561c4635ace344006f29bf Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
4a530b4c |
| 10-Jul-2023 |
Juan Pablo Conde <juanpablo.conde@arm.com> |
feat(cpufeat): initialize HFG*_EL2 registers
HFG*_EL2 registers control the fine-grained traps introduced by FEAT_FGT. These traps come enabled by default so old systems unaware of this feature can
feat(cpufeat): initialize HFG*_EL2 registers
HFG*_EL2 registers control the fine-grained traps introduced by FEAT_FGT. These traps come enabled by default so old systems unaware of this feature can be trapped to EL3, not being able to handle the trap correctly. This patch disables all fine-grained traps by default to prevent such unexpected behavior.
Change-Id: If2ae97accbeed2bea51ae03b5225ce762ecffb25 Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
show more ...
|
| #
e2ce7d34 |
| 24-Jul-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(psci): extract cm_prepare_el3_exit_ns() to a common location refactor(cm): set MDCR_EL3/CPTR_EL3 bits in respe
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(psci): extract cm_prepare_el3_exit_ns() to a common location refactor(cm): set MDCR_EL3/CPTR_EL3 bits in respective feat_init_el3() only fix(cm): set MDCR_EL3.{NSPBE, STE} explicitly refactor(cm): factor out EL2 register setting when EL2 is unused
show more ...
|
| #
ece8f7d7 |
| 13-Feb-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cm): set MDCR_EL3/CPTR_EL3 bits in respective feat_init_el3() only
These bits (MDCR_EL3.{NSTB, NSTBE, TTRF, TPM}, CPTR_EL3.TTA) only affect EL2 (and lower) execution. Each feat_init_el3() i
refactor(cm): set MDCR_EL3/CPTR_EL3 bits in respective feat_init_el3() only
These bits (MDCR_EL3.{NSTB, NSTBE, TTRF, TPM}, CPTR_EL3.TTA) only affect EL2 (and lower) execution. Each feat_init_el3() is called long before any lower EL has had a chance to execute, so setting the bits at reset is redundant. Removing them from reset code also improves readability of the immutable EL3 state.
Preserve the original intention for the TTA bit of "enabled for NS and disabled everywhere else" (inferred from commit messages d4582d3088 and 2031d6166a and the comment). This is because CPTR_EL3 will be contexted and so everyone will eventually get whatever NS has anyway.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I3d24b45d3ea80882c8e450b2d9db9d5531facec1
show more ...
|
| #
99506fac |
| 13-Feb-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cm): set MDCR_EL3.{NSPBE, STE} explicitly
With the introduction of FEAT_RME MDCR_EL3 bits NSPB and NSPBE depend on each other. The enable code relies on the register being initialised to zero an
fix(cm): set MDCR_EL3.{NSPBE, STE} explicitly
With the introduction of FEAT_RME MDCR_EL3 bits NSPB and NSPBE depend on each other. The enable code relies on the register being initialised to zero and omits to reset NSPBE. However, this is not obvious. Reset the bit explicitly to document this.
Similarly, reset the STE bit , since it's part of the feature enablement.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I3714507bae10042cdccd2b7bc713b31d4cdeb02f
show more ...
|
| #
5ba2f1aa |
| 20-Jul-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(mte): adds feature detection for MTE_PERM" into integration
|
| #
4d0b6632 |
| 24-Mar-2023 |
Maksims Svecovs <maksims.svecovs@arm.com> |
feat(mte): adds feature detection for MTE_PERM
Adds feature detection for v8.9 feature FEAT_MTE_PERM. Adds respective ID_AA64PFR2_EL1 definitions and ENABLE_FEAT_MTE_PERM define.
Change-Id: If24b42
feat(mte): adds feature detection for MTE_PERM
Adds feature detection for v8.9 feature FEAT_MTE_PERM. Adds respective ID_AA64PFR2_EL1 definitions and ENABLE_FEAT_MTE_PERM define.
Change-Id: If24b42f1207154e639016b0b840b2d91c6ee13d4 Signed-off-by: Maksims Svecovs <maksims.svecovs@arm.com> Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| #
26d67076 |
| 29-Jun-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init feat(pmu): introduce pmuv3 lib/extensions f
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init feat(pmu): introduce pmuv3 lib/extensions folder fix(pmu): make MDCR_EL3.MTPME=1 out of reset refactor(cm): introduce a real manage_extensions_nonsecure()
show more ...
|
| #
83a4dae1 |
| 16-Feb-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init
The FEAT_MTPMU feature disable runs very early after reset. This means, it needs to be written in assembly, since the C ru
refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init
The FEAT_MTPMU feature disable runs very early after reset. This means, it needs to be written in assembly, since the C runtime has not been initialised yet.
However, there is no need for it to be initialised so soon. The PMU state is only relevant after TF-A has relinquished control. The code to do this is also very verbose and difficult to read. Delaying the initialisation allows for it to happen with the rest of the PMU. Align with FEAT_STATE in the process.
BREAKING CHANGE: This patch explicitly breaks the EL2 entry path. It is currently unsupported.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I2aa659d026fbdb75152469f6d19812ece3488c6f
show more ...
|
| #
c73686a1 |
| 15-Feb-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(pmu): introduce pmuv3 lib/extensions folder
The enablement code for the PMU is scattered and difficult to track down. Factor out the feature into its own lib/extensions folder and consolidate t
feat(pmu): introduce pmuv3 lib/extensions folder
The enablement code for the PMU is scattered and difficult to track down. Factor out the feature into its own lib/extensions folder and consolidate the implementation. Treat it is as an architecturally mandatory feature as it is currently.
Additionally, do some cleanup on AArch64. Setting overflow bits in PMCR_EL0 is irrelevant for firmware so don't do it. Then delay the PMU initialisation until the context management stage which simplifies the early environment assembly. One side effect is that the PMU might count before this happens so reset all counters to 0 to prevent any leakage.
Finally, add an enable to manage_extensions_realm() as realm world uses the pmu. This introduces the HPMN fixup to realm world.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: Ie13a8625820ecc5fbfa467dc6ca18025bf6a9cd3
show more ...
|
| #
33815eb7 |
| 15-Jun-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(pmu): make MDCR_EL3.MTPME=1 out of reset
Make the default value for MTPME always be 1 to preserve the reset behaviour on newer revisions and on older revisions where the bit is RES0 it doesn't m
fix(pmu): make MDCR_EL3.MTPME=1 out of reset
Make the default value for MTPME always be 1 to preserve the reset behaviour on newer revisions and on older revisions where the bit is RES0 it doesn't matter.
Before its introduction MDCR_EL3.MTPME was RES0. Upon its introduction the field resets to 1, making the MTPMU architecturally "enabled". As such, the logical action on TF-A's part is to "disable" it, which led to the introduction of DISABLE_MTPMU.
This hinges on the assumption that MDCR_EL3.MTPME will always be 1 unless the above flag is set. Unfortunately this is not the case, as the reset value is overwritten at reset with a macro that sets this bit to 0.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: Ie570774972f246b3aa41dc016ecbcc6fc2f581f6
show more ...
|
| #
9027be6f |
| 05-Jun-2023 |
Soby Mathew <soby.mathew@arm.com> |
Merge "feat(xlat): detect 4KB and 16KB page support when FEAT_LPA2 is present" into integration
|