]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
Use PFR0 to identify need for mitigation of CVE-2017-5915
authorDimitris Papastamos <dimitris.papastamos@arm.com>
Tue, 2 Jan 2018 15:53:01 +0000 (15:53 +0000)
committerDimitris Papastamos <dimitris.papastamos@arm.com>
Thu, 11 Jan 2018 10:26:15 +0000 (10:26 +0000)
If the CSV2 field reads as 1 then branch targets trained in one
context cannot affect speculative execution in a different context.
In that case skip the workaround on Cortex A75.

Change-Id: I4d5504cba516a67311fb5f0657b08f72909cbd38
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
include/lib/aarch64/arch.h
lib/cpus/aarch64/cortex_a75.S

index 13a8c797745d29fbebcb1c56e4b8816aee8291ce..7f3e9faadb6a698eb0ea419bf181e89febe3553f 100644 (file)
 #define ID_AA64PFR0_SVE_SHIFT  U(32)
 #define ID_AA64PFR0_SVE_MASK   U(0xf)
 #define ID_AA64PFR0_SVE_LENGTH U(4)
+#define ID_AA64PFR0_CSV2_SHIFT U(56)
+#define ID_AA64PFR0_CSV2_MASK  U(0xf)
+#define ID_AA64PFR0_CSV2_LENGTH        U(4)
 
 /* ID_AA64DFR0_EL1.PMS definitions (for ARMv8.2+) */
 #define ID_AA64DFR0_PMS_SHIFT  U(32)
index 1a9d9049129e6d2a26ec5276574aba1a0b6fb3d5..9b54b48f7d54d12504ea285319533929d53c7441 100644 (file)
 
 func cortex_a75_reset_func
 #if IMAGE_BL31 && WORKAROUND_CVE_2017_5715
+       mrs     x0, id_aa64pfr0_el1
+       ubfx    x0, x0, #ID_AA64PFR0_CSV2_SHIFT, #ID_AA64PFR0_CSV2_LENGTH
+       /*
+        * If the field equals to 1 then branch targets trained in one
+        * context cannot affect speculative execution in a different context.
+        */
+       cmp     x0, #1
+       beq     1f
+
        adr     x0, workaround_bpiall_vbar0_runtime_exceptions
        msr     vbar_el3, x0
+1:
 #endif
 
 #if ENABLE_AMU