aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/Kconfig
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2015-03-23 15:07:02 -0400
committerWill Deacon <will.deacon@arm.com>2015-04-01 05:24:31 -0400
commit905e8c5dcaa147163672b06fe9dcb5abaacbc711 (patch)
tree4284f6e2ecac493b6e4938e4b60e57fb521c3790 /arch/arm64/Kconfig
parentcc3979b54d5f1d5b5059b404892888c304d28080 (diff)
arm64: errata: add workaround for cortex-a53 erratum #845719
When running a compat (AArch32) userspace on Cortex-A53, a load at EL0 from a virtual address that matches the bottom 32 bits of the virtual address used by a recent load at (AArch64) EL1 might return incorrect data. This patch works around the issue by writing to the contextidr_el1 register on the exception return path when returning to a 32-bit task. This workaround is patched in at runtime based on the MIDR value of the processor. Reviewed-by: Marc Zyngier <marc.zyngier@arm.com> Tested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/Kconfig')
-rw-r--r--arch/arm64/Kconfig21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 02f67a9d7426..23d51be7d60a 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -361,6 +361,27 @@ config ARM64_ERRATUM_832075
361 361
362 If unsure, say Y. 362 If unsure, say Y.
363 363
364config ARM64_ERRATUM_845719
365 bool "Cortex-A53: 845719: a load might read incorrect data"
366 depends on COMPAT
367 default y
368 help
369 This option adds an alternative code sequence to work around ARM
370 erratum 845719 on Cortex-A53 parts up to r0p4.
371
372 When running a compat (AArch32) userspace on an affected Cortex-A53
373 part, a load at EL0 from a virtual address that matches the bottom 32
374 bits of the virtual address used by a recent load at (AArch64) EL1
375 might return incorrect data.
376
377 The workaround is to write the contextidr_el1 register on exception
378 return to a 32-bit task.
379 Please note that this does not necessarily enable the workaround,
380 as it depends on the alternative framework, which will only patch
381 the kernel if an affected CPU is detected.
382
383 If unsure, say Y.
384
364endmenu 385endmenu
365 386
366 387