| #
af247ec0 |
| 17-Nov-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(smccc): ignore SCR_EEL2_BIT" into integration
|
| #
ee75a71e |
| 12-Nov-2025 |
Jagdish Gediya <jagdish.gediya@arm.com> |
fix(smccc): ignore SCR_EEL2_BIT
Commit cbba59c41a99 ("enable SMCCC_ARCH_FEATURE_AVAILABILITY for RMM") enables ARCH_FEATURE_AVAILABILITY by default when RME is enabled which results into below asser
fix(smccc): ignore SCR_EEL2_BIT
Commit cbba59c41a99 ("enable SMCCC_ARCH_FEATURE_AVAILABILITY for RMM") enables ARCH_FEATURE_AVAILABILITY by default when RME is enabled which results into below assertion when RMM queries the features.
ERROR: Unexpected bits 0x40000 were set in register 1e1100! ASSERT: services/arm_arch_svc/arm_arch_svc_setup.c:251
This happpens because SCR_EEL2_BIT is neither part of SCR_EL3_FEATS nor part of SCR_EL3_IGNORED, as the SMCCC spec doesn't list SCR_EEL2_BIT as reported, add it to SCR_EL3_IGNORED.
Change-Id: I0465744dc7f0ae589d6a8345c1cca63ac6f7f357 Signed-off-by: Jagdish Gediya <jagdish.gediya@arm.com>
show more ...
|
| #
ef397720 |
| 10-Nov-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "ar/idte3" into integration
* changes: feat(cpufeat): add support for FEAT_IDTE3 feat(cpufeat): include enabled security state scope feat(cpufeat): add ID register def
Merge changes from topic "ar/idte3" into integration
* changes: feat(cpufeat): add support for FEAT_IDTE3 feat(cpufeat): include enabled security state scope feat(cpufeat): add ID register defines and read helpers
show more ...
|
| #
f396aec8 |
| 09-Sep-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless t
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless trapped to EL2). IDTE3 allows EL3 to modify the view of ID registers for lower ELs, and this capability is used to disable fields of ID registers tied to disabled features.
The ID registers are initially read as-is and stored in context. Then, based on the feature enablement status for each world, if a particular feature is disabled, its corresponding field in the cached ID register is set to Res0. When lower ELs attempt to read an ID register, the cached ID register value is returned. This allows EL3 to prevent lower ELs from accessing feature-specific system registers that are disabled in EL3, even though the hardware implements them.
The emulated ID register values are stored primarily in per-world context, except for certain debug-related ID registers such as ID_AA64DFR0_EL1 and ID_AA64DFR1_EL1, which are stored in the cpu_data and are unique to each PE. This is done to support feature asymmetry that is commonly seen in debug features.
FEAT_IDTE3 traps all Group 3 ID registers in the range op0 == 3, op1 == 0, CRn == 0, CRm == {2–7}, op2 == {0–7} and the Group 5 GMID_EL1 register. However, only a handful of ID registers contain fields used to detect features enabled in EL3. Hence, we only cache those ID registers, while the rest are transparently returned as is to the lower EL.
This patch updates the CREATE_FEATURE_FUNCS macro to generate update_feat_xyz_idreg_field() functions that disable ID register fields on a per-feature basis. The enabled_worlds scope is used to disable ID register fields for security states where the feature is not enabled.
This EXPERIMENTAL feature is controlled by the ENABLE_FEAT_IDTE3 build flag and is currently disabled by default.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I5f998eeab81bb48c7595addc5595313a9ebb96d5
show more ...
|
| #
4ab55c2f |
| 05-Nov-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(cpufeat): extend FEAT_EBEP handling to delegate PMU control to EL2" into integration
|
| #
714a1a93 |
| 28-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
fix(cpufeat): extend FEAT_EBEP handling to delegate PMU control to EL2
Currently, the FEAT_EBEP feature presence check is only used for UNDEF injection into lower ELs. However, this feature also aff
fix(cpufeat): extend FEAT_EBEP handling to delegate PMU control to EL2
Currently, the FEAT_EBEP feature presence check is only used for UNDEF injection into lower ELs. However, this feature also affects the access behavior of MDCR_EL2. Specifically, if the PMEE bits in MDCR_EL3 are not set to 0b01, then the MDCR_EL2.PMEE bits cannot be configured by EL2.
This patch extends the use of FEAT_EBEP to delegate PMU IRQ and profiling exception control to EL2 by setting MDCR_EL3.PMEE = 0b01.This ensures that lower ELs can manage PMU configuration.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: Ib7e1d5c72f017b8ffc2131fc57309dd9d811c973
show more ...
|
| #
9df17a9a |
| 31-Oct-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(cpufeat): use of additional breakpoints" into integration
|
| #
482fbf81 |
| 29-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(cpufeat): use of additional breakpoints
Extended Breakpoints access through mdcr_el3.ebwe is available only when there are greater than 16 breakpoints implemented. Otherwise the EBWE Bit is RES0
fix(cpufeat): use of additional breakpoints
Extended Breakpoints access through mdcr_el3.ebwe is available only when there are greater than 16 breakpoints implemented. Otherwise the EBWE Bit is RES0 and we could skip enabling Extended Breakpoint access.
Ref: https://developer.arm.com/documentation/111107/2025-09/AArch64-Registers/MDCR-EL3--Monitor-Debug-Configuration-Register--EL3-?lang=en
Change-Id: I2b2147e83d65ee9b0492d3cf3adafd5c8cbe17f5 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
ca2284f8 |
| 23-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(smccc): fixed define when ENABLE_FEAT_FPMR is disabled" into integration
|
| #
57b23eaa |
| 14-Oct-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(smccc): fixed define when ENABLE_FEAT_FPMR is disabled
Define SCR_FEAT_FPMR as 0 when ENABLE_FEAT_FPMR is disabled to avoid conditional build inconsistencies.
Signed-off-by: Arvind Ram Prakash
fix(smccc): fixed define when ENABLE_FEAT_FPMR is disabled
Define SCR_FEAT_FPMR as 0 when ENABLE_FEAT_FPMR is disabled to avoid conditional build inconsistencies.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: Ibe71fa20fa4ffa98d8fff41517ccbf29755a58c3
show more ...
|
| #
ecb8b2de |
| 16-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): enable FEAT_PFAR support" into integration
|
| #
b3bcfd12 |
| 14-Aug-2025 |
Andre Przywara <andre.przywara@arm.com> |
feat(cpufeat): enable FEAT_PFAR support
Implement support for FEAT_PFAR, which introduces the PFAR_ELx system register, recording the faulting physical address for some aborts. Those system register
feat(cpufeat): enable FEAT_PFAR support
Implement support for FEAT_PFAR, which introduces the PFAR_ELx system register, recording the faulting physical address for some aborts. Those system registers are trapped by the SCR_EL3.PFARen bit, so set the bit for the non-secure world context to allow OSes to use the feature.
This is controlled by the ENABLE_FEAT_PFAR build flag, which follows the usual semantics of 2 meaning the feature being runtime detected. Let the default for this flag be 0, but set it to 2 for the FVP.
Change-Id: I5c9ae750417e75792f693732df3869e02b6e4319 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
aa05796e |
| 15-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): enable FEAT_AIE support" into integration
|
| #
cc2523bb |
| 14-Aug-2025 |
Andre Przywara <andre.przywara@arm.com> |
feat(cpufeat): enable FEAT_AIE support
Implement support for FEAT_AIE, which introduces the AMAIR2_ELx and MAIR2_ELx system registers, extending the memory attributes described by {A}MAIR_ELx. Those
feat(cpufeat): enable FEAT_AIE support
Implement support for FEAT_AIE, which introduces the AMAIR2_ELx and MAIR2_ELx system registers, extending the memory attributes described by {A}MAIR_ELx. Those system registers are trapped by the SCR_EL3.AIEn bit, so set the bit for the non-secure world context to allow OSes to use the feature.
This is controlled by the ENABLE_FEAT_AIE build flag, which follows the usual semantics of 2 meaning the feature being runtime detected. Let the default for this flag be 0, but set it to 2 for the FVP.
Change-Id: Iba2011719013a89f9cb3a4317bde18254f45cd25 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| #
479cac46 |
| 02-Sep-2025 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "feat(smccc): enable support for FEAT_MEC" into integration
|
| #
a357d157 |
| 28-Aug-2025 |
Sona Mathew <SonaRebecca.Mathew@arm.com> |
feat(smccc): enable support for FEAT_MEC
Add SCR_EL3.FEAT_MEC bit to the SMCCC_ARCH_FEATURE_AVAILABILITY bitmask to allow RMM to query MEC support.
Change-Id: I2c2130fc4d61eb1a14124931c88e323c82be7
feat(smccc): enable support for FEAT_MEC
Add SCR_EL3.FEAT_MEC bit to the SMCCC_ARCH_FEATURE_AVAILABILITY bitmask to allow RMM to query MEC support.
Change-Id: I2c2130fc4d61eb1a14124931c88e323c82be7924 Signed-off-by: Sona Mathew <SonaRebecca.Mathew@arm.com>
show more ...
|
| #
c8eb6b04 |
| 29-Jul-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "ar/soc_name" into integration
* changes: feat(fvp): add SoC name support to FVP feat(smccc): add SoC name support to SMCCC_ARCH_SOC_ID
|
| #
cb4ee3e4 |
| 11-Jul-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(smccc): add SoC name support to SMCCC_ARCH_SOC_ID
This patch adds support for getting the SoC name string using the SMCCC_ARCH_SOC_ID interface. The SoC name query was introduced in SMCCC versi
feat(smccc): add SoC name support to SMCCC_ARCH_SOC_ID
This patch adds support for getting the SoC name string using the SMCCC_ARCH_SOC_ID interface. The SoC name query was introduced in SMCCC version 1.6. It is available only through SMC64 calls.
A new function ID, SMCCC_GET_SOC_NAME, is added. It returns the SoC name as a null-terminated ASCII string, spread across registers X1 to X17 in little endian order. The total length is 136 bytes, including the null byte. Any space after the null terminator is filled with zeros.
A platform hook plat_get_soc_name() is added to return the SoC name. A weak default version is also provided that returns SMC_ARCH_CALL_NOT_SUPPORTED for platforms that do not support this feature.
The name should follow the SMCCC rule that it must not expose any information that is not already reported by the SoC version and revision calls.
Reference: https://developer.arm.com/documentation/den0028/latest/
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: Idc69997c509bcbfb1cecb38ed1003b29627ade4b
show more ...
|
| #
35b2bbf4 |
| 28-Jul-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "bk/pabandon_cleanup" into integration
* changes: feat(cpus): add pabandon support to the Alto cpu feat(psci): optimise clock init on a pabandon feat(psci): check that
Merge changes from topic "bk/pabandon_cleanup" into integration
* changes: feat(cpus): add pabandon support to the Alto cpu feat(psci): optimise clock init on a pabandon feat(psci): check that CPUs handled a pabandon feat(psci): make pabandon support generic refactor(psci): unify coherency exit between AArch64 and AArch32 refactor(psci): absorb psci_power_down_wfi() into common code refactor(platforms): remove usage of psci_power_down_wfi fix(cm): disable SPE/TRBE correctly
show more ...
|
| #
985b6a6b |
| 17-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cm): disable SPE/TRBE correctly
SPE and TRBE are unusual features. They have multi-bit enables whose function is not immediately apparent and disabling them is not straightforward.
While attemp
fix(cm): disable SPE/TRBE correctly
SPE and TRBE are unusual features. They have multi-bit enables whose function is not immediately apparent and disabling them is not straightforward.
While attempting to figure this out, the disables were made a mess of. Patch fc7dca72b began changing the owning security state of SPE and TRBE. This was first used in patch 79c0c7fac0 with calls to spe_disable() and trbe_disbale(). However, patch 13f4a2525 reverted the security state ownership, making the spe_disable() and trbe_disable() redundant and their comments incorrect - the DoS protection is achieved by the psb/tsb barriers on context switch, introduces separately in f80887337 and 73d98e375.
Those patches got the behaviour full circle to what it was in fc7dca72b so the disables can be fully removed for clarity.
However, the original method for disabling these features is not fully correct - letting the "disabled" state be all zeroes made the features seem enabled for secure world but they would trap. That is not a problem while secure world doesn't use them, but could lead to some confusing debugging in the future. NS and Realm worlds were not affected. This patch fully establishes the pattern for SPE and TRBE's enablement, documents it, and implements it such.
The description comments in the features boil down to 2 rules. There is a third rule possible: 3. To enable TRBE/SPE for world X with a dirty buffer: * world X owns the buffer * trapping enabled This is not listed as it would not work correctly with SMCCC_ARCH_FEATURE_AVAILABILITY which relies on trapping to be disabled to report correctly. If that is ever implemented, the SMCCC implementation should be considered too.
Change-Id: I5588a3d5fc074c2445470954d8c3b172bec77d43 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
c68c1de9 |
| 24-Jul-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(smccc): clear scr_el3.nse in smccc_arch_feature_availability" into integration
|
| #
847c1115 |
| 19-May-2025 |
Sona Mathew <SonaRebecca.Mathew@arm.com> |
feat(smccc): clear scr_el3.nse in smccc_arch_feature_availability
Clear the SCR_EL3.NSE bit from the bitmask used in SMCCC_ARCH_FEATURE_AVAILABILITY for RME.
This bit is set when FEAT_RME=1, and if
feat(smccc): clear scr_el3.nse in smccc_arch_feature_availability
Clear the SCR_EL3.NSE bit from the bitmask used in SMCCC_ARCH_FEATURE_AVAILABILITY for RME.
This bit is set when FEAT_RME=1, and if not excluded, it leads to an assertion failure due to unexpected bits being detected.
Change-Id: I399f63adc4814c4404705985b0816783e4626dda Signed-off-by: Sona Mathew <SonaRebecca.Mathew@arm.com>
show more ...
|
| #
ce27604c |
| 30-Apr-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "feat(spe): add support for FEAT_SPE_FDS" into integration
|
| #
10534543 |
| 28-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "fix_pmuv3p9_test" into integration
* changes: fix(smccc): properly set RAS feature bit fix(trng): allow FEAT_RNG_TRAP in dynamic fashion feat(smccc): add FEAT_TWED to
Merge changes from topic "fix_pmuv3p9_test" into integration
* changes: fix(smccc): properly set RAS feature bit fix(trng): allow FEAT_RNG_TRAP in dynamic fashion feat(smccc): add FEAT_TWED to ARCH_FEATURE_AVAILABILITY feat(cpufeat): add support for PMUv3p9
show more ...
|
| #
4fd9814f |
| 24-Apr-2025 |
James Clark <james.clark2@arm.com> |
feat(spe): add support for FEAT_SPE_FDS
Allow access to PMSDSFR_EL1 register at NS-EL1 or NS-EL2 when FEAT_SPE_FDS is implemented.
Change-Id: I538577cbfa5b5f242d5dbaeeace7b8e4ee6ffd03 Signed-off-by
feat(spe): add support for FEAT_SPE_FDS
Allow access to PMSDSFR_EL1 register at NS-EL1 or NS-EL2 when FEAT_SPE_FDS is implemented.
Change-Id: I538577cbfa5b5f242d5dbaeeace7b8e4ee6ffd03 Signed-off-by: James Clark <james.clark2@arm.com>
show more ...
|