Loading Documentation/arm64/silicon-errata.txt +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ stable kernels. | ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 | | ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 | | ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 | | ARM | Cortex-A77 | #1542418 | ARM64_ERRATUM_1542418 | | ARM | MMU-500 | #841119,#826419 | N/A | | | | | | | Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 | Loading arch/arm/include/asm/kvm_mmu.h +5 −0 Original line number Diff line number Diff line Loading @@ -366,6 +366,11 @@ static inline int hyp_map_aux_data(void) #define kvm_phys_to_vttbr(addr) (addr) static inline void kvm_workaround_1542418_vmid_rollover(void) { /* not affected */ } #endif /* !__ASSEMBLY__ */ #endif /* __ARM_KVM_MMU_H__ */ arch/arm64/Kconfig +16 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,22 @@ config ARM64_ERRATUM_1463225 If unsure, say Y. config ARM64_ERRATUM_1542418 bool "Cortex-A77: The core might fetch a stale instuction, violating the ordering of instruction fetches" default y help This option adds a workaround for Arm Cortex-A77 erratum 1542418. On the affected Cortex-A77 cores (r0p0 and r1p0), software relying on the prefetch-speculation-protection instead of explicit synchronisation may fetch a stale instruction from a CPU-specific cache. This violates the ordering rules for instruction fetches. Work around the erratum by ensuring that 60 ASIDs are selected before any ASID is reused. If unsure, say Y. config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y Loading arch/arm64/include/asm/cpucaps.h +2 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ #define ARM64_WORKAROUND_1463225 33 #define ARM64_SSBS 34 #define ARM64_WORKAROUND_1188873 35 #define ARM64_NCAPS 36 #define ARM64_WORKAROUND_1542418 36 #define ARM64_NCAPS 37 #endif /* __ASM_CPUCAPS_H */ arch/arm64/include/asm/cpufeature.h +5 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,11 @@ static inline bool system_supports_sve(void) cpus_have_const_cap(ARM64_SVE); } static inline bool system_supports_cnp(void) { return false; } #define ARM64_SSBD_UNKNOWN -1 #define ARM64_SSBD_FORCE_DISABLE 0 #define ARM64_SSBD_KERNEL 1 Loading Loading
Documentation/arm64/silicon-errata.txt +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ stable kernels. | ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 | | ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 | | ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 | | ARM | Cortex-A77 | #1542418 | ARM64_ERRATUM_1542418 | | ARM | MMU-500 | #841119,#826419 | N/A | | | | | | | Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 | Loading
arch/arm/include/asm/kvm_mmu.h +5 −0 Original line number Diff line number Diff line Loading @@ -366,6 +366,11 @@ static inline int hyp_map_aux_data(void) #define kvm_phys_to_vttbr(addr) (addr) static inline void kvm_workaround_1542418_vmid_rollover(void) { /* not affected */ } #endif /* !__ASSEMBLY__ */ #endif /* __ARM_KVM_MMU_H__ */
arch/arm64/Kconfig +16 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,22 @@ config ARM64_ERRATUM_1463225 If unsure, say Y. config ARM64_ERRATUM_1542418 bool "Cortex-A77: The core might fetch a stale instuction, violating the ordering of instruction fetches" default y help This option adds a workaround for Arm Cortex-A77 erratum 1542418. On the affected Cortex-A77 cores (r0p0 and r1p0), software relying on the prefetch-speculation-protection instead of explicit synchronisation may fetch a stale instruction from a CPU-specific cache. This violates the ordering rules for instruction fetches. Work around the erratum by ensuring that 60 ASIDs are selected before any ASID is reused. If unsure, say Y. config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y Loading
arch/arm64/include/asm/cpucaps.h +2 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ #define ARM64_WORKAROUND_1463225 33 #define ARM64_SSBS 34 #define ARM64_WORKAROUND_1188873 35 #define ARM64_NCAPS 36 #define ARM64_WORKAROUND_1542418 36 #define ARM64_NCAPS 37 #endif /* __ASM_CPUCAPS_H */
arch/arm64/include/asm/cpufeature.h +5 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,11 @@ static inline bool system_supports_sve(void) cpus_have_const_cap(ARM64_SVE); } static inline bool system_supports_cnp(void) { return false; } #define ARM64_SSBD_UNKNOWN -1 #define ARM64_SSBD_FORCE_DISABLE 0 #define ARM64_SSBD_KERNEL 1 Loading