|
@@ -191,6 +191,7 @@ enum {
|
|
|
VMCB_PERM_MAP, /* IOPM Base and MSRPM Base */
|
|
|
VMCB_ASID, /* ASID */
|
|
|
VMCB_INTR, /* int_ctl, int_vector */
|
|
|
+ VMCB_NPT, /* npt_en, nCR3, gPAT */
|
|
|
VMCB_DIRTY_MAX,
|
|
|
};
|
|
|
|
|
@@ -1749,6 +1750,7 @@ static void nested_svm_set_tdp_cr3(struct kvm_vcpu *vcpu,
|
|
|
struct vcpu_svm *svm = to_svm(vcpu);
|
|
|
|
|
|
svm->vmcb->control.nested_cr3 = root;
|
|
|
+ mark_dirty(svm->vmcb, VMCB_NPT);
|
|
|
force_new_asid(vcpu);
|
|
|
}
|
|
|
|
|
@@ -3555,6 +3557,7 @@ static void set_tdp_cr3(struct kvm_vcpu *vcpu, unsigned long root)
|
|
|
struct vcpu_svm *svm = to_svm(vcpu);
|
|
|
|
|
|
svm->vmcb->control.nested_cr3 = root;
|
|
|
+ mark_dirty(svm->vmcb, VMCB_NPT);
|
|
|
|
|
|
/* Also sync guest cr3 here in case we live migrate */
|
|
|
svm->vmcb->save.cr3 = vcpu->arch.cr3;
|