Arm Neoverse-N2 (#2067961) and Cortex-A710 (#2054223) suffers from errata, where a TSB (trace synchronization barrier) fails to flush the trace data completely, when executed from a trace prohibited region. In Linux we always execute it after we have moved the PE to trace prohibited region. So, we can apply the workaround every time a TSB is executed. The work around is to issue two TSB consecutively. NOTE: This errata is defined as LOCAL_CPU_ERRATUM, implying that a late CPU could be blocked from booting if it is the first CPU that requires the workaround. This is because we do not allow setting a cpu_hwcaps after the SMP boot. The other alternative is to use "this_cpu_has_cap()" instead of the faster system wide check, which may be a bit of an overhead, given we may have to do this in nvhe KVM host before a guest entry. Cc: Will Deacon <will@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Marc Zyngier <maz@kernel.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20211019163153.3692640-4-suzuki.poulose@arm.com Signed-off-by: Will Deacon <will@kernel.org>
69 lines
1.2 KiB
Plaintext
69 lines
1.2 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Internal CPU capabilities constants, keep this list sorted
|
|
|
|
BTI
|
|
# Unreliable: use system_supports_32bit_el0() instead.
|
|
HAS_32BIT_EL0_DO_NOT_USE
|
|
HAS_32BIT_EL1
|
|
HAS_ADDRESS_AUTH
|
|
HAS_ADDRESS_AUTH_ARCH
|
|
HAS_ADDRESS_AUTH_IMP_DEF
|
|
HAS_AMU_EXTN
|
|
HAS_ARMv8_4_TTL
|
|
HAS_CACHE_DIC
|
|
HAS_CACHE_IDC
|
|
HAS_CNP
|
|
HAS_CRC32
|
|
HAS_DCPODP
|
|
HAS_DCPOP
|
|
HAS_E0PD
|
|
HAS_EPAN
|
|
HAS_GENERIC_AUTH
|
|
HAS_GENERIC_AUTH_ARCH
|
|
HAS_GENERIC_AUTH_IMP_DEF
|
|
HAS_IRQ_PRIO_MASKING
|
|
HAS_LDAPR
|
|
HAS_LSE_ATOMICS
|
|
HAS_NO_FPSIMD
|
|
HAS_NO_HW_PREFETCH
|
|
HAS_PAN
|
|
HAS_RAS_EXTN
|
|
HAS_RNG
|
|
HAS_SB
|
|
HAS_STAGE2_FWB
|
|
HAS_SYSREG_GIC_CPUIF
|
|
HAS_TLB_RANGE
|
|
HAS_VIRT_HOST_EXTN
|
|
HW_DBM
|
|
KVM_PROTECTED_MODE
|
|
MISMATCHED_CACHE_TYPE
|
|
MTE
|
|
SPECTRE_V2
|
|
SPECTRE_V3A
|
|
SPECTRE_V4
|
|
SSBS
|
|
SVE
|
|
UNMAP_KERNEL_AT_EL0
|
|
WORKAROUND_834220
|
|
WORKAROUND_843419
|
|
WORKAROUND_845719
|
|
WORKAROUND_858921
|
|
WORKAROUND_1418040
|
|
WORKAROUND_1463225
|
|
WORKAROUND_1508412
|
|
WORKAROUND_1542419
|
|
WORKAROUND_TRBE_OVERWRITE_FILL_MODE
|
|
WORKAROUND_TSB_FLUSH_FAILURE
|
|
WORKAROUND_CAVIUM_23154
|
|
WORKAROUND_CAVIUM_27456
|
|
WORKAROUND_CAVIUM_30115
|
|
WORKAROUND_CAVIUM_TX2_219_PRFM
|
|
WORKAROUND_CAVIUM_TX2_219_TVM
|
|
WORKAROUND_CLEAN_CACHE
|
|
WORKAROUND_DEVICE_LOAD_ACQUIRE
|
|
WORKAROUND_NVIDIA_CARMEL_CNP
|
|
WORKAROUND_QCOM_FALKOR_E1003
|
|
WORKAROUND_REPEAT_TLBI
|
|
WORKAROUND_SPECULATIVE_AT
|