]> git.dujemihanovic.xyz Git - u-boot.git/commit
arm: cpu: Add optional CMOs by VA
authorMarc Zyngier <maz@kernel.org>
Wed, 8 Feb 2023 20:54:27 +0000 (04:54 +0800)
committerTom Rini <trini@konsulko.com>
Mon, 6 Mar 2023 22:03:55 +0000 (17:03 -0500)
commit46dc54287031759c03c68902283d92076938305c
treee55074024d7a5d0e94c4b69242cdcb5f00145ce6
parentd1653548d29959a6ea6b4037a00b48a28257e6e6
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
arch/arm/cpu/armv8/Kconfig
arch/arm/cpu/armv8/cache.S
arch/arm/cpu/armv8/cache_v8.c
arch/arm/cpu/armv8/cpu.c