diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2018-11-19 06:27:28 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2018-11-29 11:45:45 -0500 |
commit | ce8c80c536dac9f325a051b30bf7730ee505eddc (patch) | |
tree | b08f46fdd50ec86694cbd8fbe78c4b84daced233 /arch/arm64/Kconfig | |
parent | 2e6e902d185027f8e3cb8b7305238f7e35d6a436 (diff) |
arm64: Add workaround for Cortex-A76 erratum 1286807
On the affected Cortex-A76 cores (r0p0 to r3p0), if a virtual address
for a cacheable mapping of a location is being accessed by a core while
another core is remapping the virtual address to a new physical page
using the recommended break-before-make sequence, then under very rare
circumstances TLBI+DSB completes before a read using the translation
being invalidated has been observed by other observers. The workaround
repeats the TLBI+DSB operation and is shared with the Qualcomm Falkor
erratum 1009
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/Kconfig')
-rw-r--r-- | arch/arm64/Kconfig | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 787d7850e064..ea2ab0330e3a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
@@ -497,6 +497,24 @@ config ARM64_ERRATUM_1188873 | |||
497 | 497 | ||
498 | If unsure, say Y. | 498 | If unsure, say Y. |
499 | 499 | ||
500 | config ARM64_ERRATUM_1286807 | ||
501 | bool "Cortex-A76: Modification of the translation table for a virtual address might lead to read-after-read ordering violation" | ||
502 | default y | ||
503 | select ARM64_WORKAROUND_REPEAT_TLBI | ||
504 | help | ||
505 | This option adds workaround for ARM Cortex-A76 erratum 1286807 | ||
506 | |||
507 | On the affected Cortex-A76 cores (r0p0 to r3p0), if a virtual | ||
508 | address for a cacheable mapping of a location is being | ||
509 | accessed by a core while another core is remapping the virtual | ||
510 | address to a new physical page using the recommended | ||
511 | break-before-make sequence, then under very rare circumstances | ||
512 | TLBI+DSB completes before a read using the translation being | ||
513 | invalidated has been observed by other observers. The | ||
514 | workaround repeats the TLBI+DSB operation. | ||
515 | |||
516 | If unsure, say Y. | ||
517 | |||
500 | config CAVIUM_ERRATUM_22375 | 518 | config CAVIUM_ERRATUM_22375 |
501 | bool "Cavium erratum 22375, 24313" | 519 | bool "Cavium erratum 22375, 24313" |
502 | default y | 520 | default y |
@@ -566,9 +584,16 @@ config QCOM_FALKOR_ERRATUM_1003 | |||
566 | is unchanged. Work around the erratum by invalidating the walk cache | 584 | is unchanged. Work around the erratum by invalidating the walk cache |
567 | entries for the trampoline before entering the kernel proper. | 585 | entries for the trampoline before entering the kernel proper. |
568 | 586 | ||
587 | config ARM64_WORKAROUND_REPEAT_TLBI | ||
588 | bool | ||
589 | help | ||
590 | Enable the repeat TLBI workaround for Falkor erratum 1009 and | ||
591 | Cortex-A76 erratum 1286807. | ||
592 | |||
569 | config QCOM_FALKOR_ERRATUM_1009 | 593 | config QCOM_FALKOR_ERRATUM_1009 |
570 | bool "Falkor E1009: Prematurely complete a DSB after a TLBI" | 594 | bool "Falkor E1009: Prematurely complete a DSB after a TLBI" |
571 | default y | 595 | default y |
596 | select ARM64_WORKAROUND_REPEAT_TLBI | ||
572 | help | 597 | help |
573 | On Falkor v1, the CPU may prematurely complete a DSB following a | 598 | On Falkor v1, the CPU may prematurely complete a DSB following a |
574 | TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation | 599 | TLBI xxIS invalidate maintenance operation. Repeat the TLBI operation |