mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
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>
This commit is contained in:
parent
f56da5d36d
commit
0bbd4329bf
2 changed files with 10 additions and 2 deletions
|
@ -437,6 +437,7 @@
|
|||
|
||||
#define ID_AA64PFR1_EL1_SME_SHIFT U(24)
|
||||
#define ID_AA64PFR1_EL1_SME_MASK ULL(0xf)
|
||||
#define ID_AA64PFR1_EL1_SME_WIDTH U(4)
|
||||
#define ID_AA64PFR1_EL1_SME_NOT_SUPPORTED ULL(0x0)
|
||||
#define ID_AA64PFR1_EL1_SME_SUPPORTED ULL(0x1)
|
||||
#define ID_AA64PFR1_EL1_SME2_SUPPORTED ULL(0x2)
|
||||
|
|
|
@ -34,13 +34,20 @@ cpu_reset_func_end cortex_gelas
|
|||
* ----------------------------------------------------
|
||||
*/
|
||||
func cortex_gelas_core_pwr_dwn
|
||||
#if ENABLE_SME_FOR_NS
|
||||
/* ---------------------------------------------------
|
||||
* Disable SME
|
||||
* Disable SME if enabled and supported
|
||||
* ---------------------------------------------------
|
||||
*/
|
||||
mrs x0, ID_AA64PFR1_EL1
|
||||
ubfx x0, x0, #ID_AA64PFR1_EL1_SME_SHIFT, \
|
||||
#ID_AA64PFR1_EL1_SME_WIDTH
|
||||
cmp x0, #ID_AA64PFR1_EL1_SME_NOT_SUPPORTED
|
||||
b.eq 1f
|
||||
msr CORTEX_GELAS_SVCRSM, xzr
|
||||
msr CORTEX_GELAS_SVCRZA, xzr
|
||||
|
||||
1:
|
||||
#endif
|
||||
/* ---------------------------------------------------
|
||||
* Enable CPU power down bit in power control register
|
||||
* ---------------------------------------------------
|
||||
|
|
Loading…
Add table
Reference in a new issue