diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-05-22 03:50:14 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2020-06-01 04:26:00 -0400 |
commit | 2d8a42be0e2b15a4e0b20349f27bb8288db5ebe6 (patch) | |
tree | 1dd320fe1f9582f163333ca8527a9541783828d3 /arch/x86/kvm/svm/svm.c | |
parent | d8e4e58f4bd4bb55d2640a841c3606333930f0e1 (diff) | |
download | lwn-2d8a42be0e2b15a4e0b20349f27bb8288db5ebe6.tar.gz lwn-2d8a42be0e2b15a4e0b20349f27bb8288db5ebe6.zip |
KVM: nSVM: synchronize VMCB controls updated by the processor on every vmexit
The control state changes on every L2->L0 vmexit, and we will have to
serialize it in the nested state. So keep it up to date in svm->nested.ctl
and just copy them back to the nested VMCB in nested_svm_vmexit.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/svm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm/svm.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 4122ba86bac2..b710e62ace16 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3427,7 +3427,10 @@ static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) sync_cr8_to_lapic(vcpu); svm->next_rip = 0; - svm->nested.nested_run_pending = 0; + if (is_guest_mode(&svm->vcpu)) { + sync_nested_vmcb_control(svm); + svm->nested.nested_run_pending = 0; + } svm->vmcb->control.tlb_ctl = TLB_CONTROL_DO_NOTHING; |