All that needs to be done is moving the GMET bit from vmcs12 to vmcs02. Signed-off-by: Paolo Bonzini --- arch/x86/kvm/svm/nested.c | 3 +++ arch/x86/kvm/svm/svm.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index d69bcf52f948..397e9afecb78 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -774,6 +774,9 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm, vmcb02->control.bus_lock_counter = 0; vmcb02->control.nested_ctl &= ~SVM_NESTED_CTL_GMET_ENABLE; + if (guest_cpu_cap_has(vcpu, X86_FEATURE_GMET)) + vmcb02->control.nested_ctl |= + (svm->nested.ctl.nested_ctl & SVM_NESTED_CTL_GMET_ENABLE); /* Done at vmrun: asid. */ diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index d3b69eb3242b..4a0d97e70dc2 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -5294,6 +5294,9 @@ static __init void svm_set_cpu_caps(void) if (boot_cpu_has(X86_FEATURE_PFTHRESHOLD)) kvm_cpu_cap_set(X86_FEATURE_PFTHRESHOLD); + if (boot_cpu_has(X86_FEATURE_GMET)) + kvm_cpu_cap_set(X86_FEATURE_GMET); + if (vgif) kvm_cpu_cap_set(X86_FEATURE_VGIF); -- 2.52.0