arm64: kernel: disable CNP on Carmel
authorRich Wiley <rwiley@nvidia.com>
Wed, 24 Mar 2021 00:28:09 +0000 (17:28 -0700)
committerWill Deacon <will@kernel.org>
Thu, 25 Mar 2021 10:00:23 +0000 (10:00 +0000)
commit20109a859a9b514eb10c22b8a14b5704ffe93897
treecb12010828a5ed3a781337e3a5048140209353e8
parentbaa96377bc7b5aa7b8cf038db09cb99642321490
arm64: kernel: disable CNP on Carmel

On NVIDIA Carmel cores, CNP behaves differently than it does on standard
ARM cores. On Carmel, if two cores have CNP enabled and share an L2 TLB
entry created by core0 for a specific ASID, a non-shareable TLBI from
core1 may still see the shared entry. On standard ARM cores, that TLBI
will invalidate the shared entry as well.

This causes issues with patchsets that attempt to do local TLBIs based
on cpumasks instead of broadcast TLBIs. Avoid these issues by disabling
CNP support for NVIDIA Carmel cores.

Signed-off-by: Rich Wiley <rwiley@nvidia.com>
Link: https://lore.kernel.org/r/20210324002809.30271-1-rwiley@nvidia.com
[will: Fix pre-existing whitespace issue]
Signed-off-by: Will Deacon <will@kernel.org>
Documentation/arm64/silicon-errata.rst
arch/arm64/Kconfig
arch/arm64/include/asm/cpucaps.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/cpufeature.c