]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
arm64: KVM: Install stage-2 translation before enabling traps
authorMarc Zyngier <marc.zyngier@arm.com>
Thu, 6 Dec 2018 17:31:21 +0000 (17:31 +0000)
committerWill Deacon <will.deacon@arm.com>
Mon, 10 Dec 2018 11:58:48 +0000 (11:58 +0000)
It is a bit odd that we only install stage-2 translation after having
cleared HCR_EL2.TGE, which means that there is a window during which
AT requests could fail as stage-2 is not configured yet.

Let's move stage-2 configuration before we clear TGE, making the
guest entry sequence clearer: we first configure all the guest stuff,
then only switch to the guest translation regime.

While we're at it, do the same thing for !VHE. It doesn't hurt,
and keeps things symmetric.

Acked-by: Christoffer Dall <christoffer.dall@arm.com>
Reviewed-by: James Morse <james.morse@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kvm/hyp/switch.c

index 7cc175c88a37e229d5f410b0d04886b35c4e5e97..a8fa61c68c32628d0fe1f9c984181c91febe91d7 100644 (file)
@@ -499,8 +499,8 @@ int kvm_vcpu_run_vhe(struct kvm_vcpu *vcpu)
 
        sysreg_save_host_state_vhe(host_ctxt);
 
-       __activate_traps(vcpu);
        __activate_vm(vcpu->kvm);
+       __activate_traps(vcpu);
 
        sysreg_restore_guest_state_vhe(guest_ctxt);
        __debug_switch_to_guest(vcpu);
@@ -545,8 +545,8 @@ int __hyp_text __kvm_vcpu_run_nvhe(struct kvm_vcpu *vcpu)
 
        __sysreg_save_state_nvhe(host_ctxt);
 
-       __activate_traps(vcpu);
        __activate_vm(kern_hyp_va(vcpu->kvm));
+       __activate_traps(vcpu);
 
        __hyp_vgic_restore_state(vcpu);
        __timer_enable_traps(vcpu);