KVM: arm64: pkvm: Make kvm_host_owns_hyp_mappings() robust to VHE
authorQuentin Perret <qperret@google.com>
Wed, 8 Dec 2021 15:22:59 +0000 (15:22 +0000)
committerMarc Zyngier <maz@kernel.org>
Wed, 15 Dec 2021 14:18:31 +0000 (14:18 +0000)
The kvm_host_owns_hyp_mappings() function should return true if and only
if the host kernel is responsible for creating the hypervisor stage-1
mappings. That is only possible in standard non-VHE mode, or during boot
in protected nVHE mode. But either way, none of this makes sense in VHE,
so make sure to catch this case as well, hence making the function
return sensible values in any context (VHE or not).

Suggested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Quentin Perret <qperret@google.com>
Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20211208152300.2478542-7-qperret@google.com
arch/arm64/kvm/mmu.c

index 605c104eb0301b333464b865708758b8a8c187af..ea840fa223b5aa7251e5a27c01503a30f672c9ca 100644 (file)
@@ -239,6 +239,9 @@ void free_hyp_pgds(void)
 
 static bool kvm_host_owns_hyp_mappings(void)
 {
+       if (is_kernel_in_hyp_mode())
+               return false;
+
        if (static_branch_likely(&kvm_protected_mode_initialized))
                return false;