aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv8/Kconfig
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2023-02-09 04:54:27 +0800
committerTom Rini <trini@konsulko.com>2023-03-06 17:03:55 -0500
commit46dc54287031759c03c68902283d92076938305c (patch)
treee55074024d7a5d0e94c4b69242cdcb5f00145ce6 /arch/arm/cpu/armv8/Kconfig
parentd1653548d29959a6ea6b4037a00b48a28257e6e6 (diff)
downloadu-boot-46dc54287031759c03c68902283d92076938305c.zip
u-boot-46dc54287031759c03c68902283d92076938305c.tar.gz
u-boot-46dc54287031759c03c68902283d92076938305c.tar.bz2
arm: cpu: Add optional CMOs by VA
Exposing set/way cache maintenance to a virtual machine is unsafe, not least because the instructions are not permission-checked but also because they are not broadcast between CPUs. Consequently, KVM traps and emulates such maintenance in the host kernel using by-VA operations and looping over the stage-2 page-tables. However, when running under protected KVM, these instructions are not able to be emulated and will instead result in an exception being delivered to the guest. Introduce CONFIG_CMO_BY_VA_ONLY so that virtual platforms can select this option and perform by-VA cache maintenance instead of using the set/way instructions. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Will Deacon <willdeacon@google.com> Signed-off-by: Pierre-Clément Tosi <ptosi@google.com> [ Paul: pick from the Android tree. Fixup Pierre's commit. And fix some checkpatch warnings. Rebased to upstream. ] Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org> Cc: Tom Rini <trini@konsulko.com> Link: https://android.googlesource.com/platform/external/u-boot/+/db5507f47f4f57f766d52f753ff2cc761afc213b Link: https://android.googlesource.com/platform/external/u-boot/+/2baf54e743380a1e4a6bc2dbdde020a2e783ff67
Diffstat (limited to 'arch/arm/cpu/armv8/Kconfig')
-rw-r--r--arch/arm/cpu/armv8/Kconfig4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig
index 1305238..7d5cf15 100644
--- a/arch/arm/cpu/armv8/Kconfig
+++ b/arch/arm/cpu/armv8/Kconfig
@@ -1,5 +1,9 @@
if ARM64
+config CMO_BY_VA_ONLY
+ bool "Force cache maintenance to be exclusively by VA"
+ depends on !SYS_DISABLE_DCACHE_OPS
+
config ARMV8_SPL_EXCEPTION_VECTORS
bool "Install crash dump exception vectors"
depends on SPL