diff options
author | Will Deacon <will.deacon@arm.com> | 2015-03-23 15:07:02 -0400 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-04-01 05:24:31 -0400 |
commit | 905e8c5dcaa147163672b06fe9dcb5abaacbc711 (patch) | |
tree | 4284f6e2ecac493b6e4938e4b60e57fb521c3790 /arch/arm64/Kconfig | |
parent | cc3979b54d5f1d5b5059b404892888c304d28080 (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/Kconfig | 21 |
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 | ||
364 | config 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 | |||
364 | endmenu | 385 | endmenu |
365 | 386 | ||
366 | 387 | ||