| 9edd8912 | 09-Oct-2018 |
Joel Hutton <Joel.Hutton@Arm.com> |
Initial Spectre V1 mitigations (CVE-2017-5753).
Initial Spectre Variant 1 mitigations (CVE-2017-5753). A potential speculative data leak was found in PSCI code, this depends on a non-robust implemen
Initial Spectre V1 mitigations (CVE-2017-5753).
Initial Spectre Variant 1 mitigations (CVE-2017-5753). A potential speculative data leak was found in PSCI code, this depends on a non-robust implementation of the `plat_get_core_pos_by_mpidr()` function. This is considered very low-risk. This patch adds a macro to mitigate this. Note not all code paths could be analyzed with current tools.
Add a macro which makes a variable 'speculation safe', using the __builtin_speculation_safe_value function of GCC and llvm. This will be available in GCC 9, and is planned for llvm, but is not currently in mainline GCC or llvm. In order to implement this mitigation the compiler must support this builtin. Support is indicated by the __HAVE_SPECULATION_SAFE_VALUE flag.
The -mtrack-speculation option maintains a 'tracker' register, which determines if the processor is in false speculation at any point. This adds instructions and increases code size, but avoids the performance impact of a hard barrier.
Without the -mtrack-speculation option, __builtin_speculation_safe_value expands to a
ISB DSB SY
sequence after a conditional branch, before the speculation safe variable is used. With -mtrack-speculation a
CSEL tracker, tracker, XZR, [cond]; AND safeval,tracker; CSDB
sequence is added instead, clearing the vulnerable variable by AND'ing it with the tracker register, which is zero during speculative execution. [cond] are the status flags which will only be true during speculative execution. For more information on __builtin_speculation_safe_value and the -mtrack-speculation option see https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/compiler-support-for-mitigations
The -mtracking option was not added, as the performance impact of the mitigation is low, and there is only one occurence.
Change-Id: Ic9e66d1f4a5155e42e3e4055594974c230bfba3c Signed-off-by: Joel Hutton <Joel.Hutton@Arm.com>
show more ...
|
| afa5cfea | 02-Nov-2018 |
Sathees Balya <sathees.balya@arm.com> |
juno: Add romlib support
This patch adds support to build a combined BL1 and ROMLIB binary file with the right page alignment in Juno. When USE_ROMLIB=1 is set for Juno, it generates the combined fi
juno: Add romlib support
This patch adds support to build a combined BL1 and ROMLIB binary file with the right page alignment in Juno. When USE_ROMLIB=1 is set for Juno, it generates the combined file bl1_romlib.bin which needs to be used instead of bl1.bin
Change-Id: I407efbe48d3e522fa6ef855538a9587193cb1919 Signed-off-by: Sathees Balya <sathees.balya@arm.com>
show more ...
|
| 032e3a6c | 14-Nov-2018 |
Sathees Balya <sathees.balya@arm.com> |
romlib: Add calloc_free register function
Register functions have to be added to the jump table to allow patching in the future
Change-Id: I57a885f7fc6290ea74a6096aea5b1867b2098eb7 Signed-off-by: S
romlib: Add calloc_free register function
Register functions have to be added to the jump table to allow patching in the future
Change-Id: I57a885f7fc6290ea74a6096aea5b1867b2098eb7 Signed-off-by: Sathees Balya <sathees.balya@arm.com>
show more ...
|
| 638d2b51 | 31-Oct-2018 |
Sandrine Bailleux <sandrine.bailleux@arm.com> |
compiler_rt: Import lshrdi3.c file
Imported from the LLVM compiler_rt library on master branch as of 30 Oct 2018 (SVN revision: r345645).
This is to get the __aeabi_llsr() builtin, which is require
compiler_rt: Import lshrdi3.c file
Imported from the LLVM compiler_rt library on master branch as of 30 Oct 2018 (SVN revision: r345645).
This is to get the __aeabi_llsr() builtin, which is required by a subsequent patch that uses a logical right shift operator in AArch32.
Change-Id: I9884139a12855a8a87206fb572aaa7dd35582b09 Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
show more ...
|