]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit - arch/arm64/kvm/arm.c
KVM: arm64: Sidestep stage2_unmap_vm() on vcpu reset when S2FWB is supported
authorZenghui Yu <yuzenghui@huawei.com>
Wed, 15 Apr 2020 07:28:35 +0000 (15:28 +0800)
committerMarc Zyngier <maz@kernel.org>
Sat, 16 May 2020 14:05:01 +0000 (15:05 +0100)
commit892713e97ca146591515b3c115f99cdf632030fb
tree76b50f80e8e6fe61882c61ef342d99ef809e4175
parent656012c731fcfd0f770007366e2b952a613745f2
KVM: arm64: Sidestep stage2_unmap_vm() on vcpu reset when S2FWB is supported

stage2_unmap_vm() was introduced to unmap user RAM region in the stage2
page table to make the caches coherent. E.g., a guest reboot with stage1
MMU disabled will access memory using non-cacheable attributes. If the
RAM and caches are not coherent at this stage, some evicted dirty cache
line may go and corrupt guest data in RAM.

Since ARMv8.4, S2FWB feature is mandatory and KVM will take advantage
of it to configure the stage2 page table and the attributes of memory
access. So we ensure that guests always access memory using cacheable
attributes and thus, the caches always be coherent.

So on CPUs that support S2FWB, we can safely reset the vcpu without a
heavy stage2 unmapping.

Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200415072835.1164-1-yuzenghui@huawei.com
arch/arm64/kvm/arm.c