• Paolo Bonzini's avatar
    Revert "KVM: nVMX: Expose load IA32_PERF_GLOBAL_CTRL VM-{Entry,Exit} control" · 9389d577
    Paolo Bonzini authored
    This reverts commit 03a8871a.
    
    Since commit 03a8871a ("KVM: nVMX: Expose load IA32_PERF_GLOBAL_CTRL
    VM-{Entry,Exit} control"), KVM has taken ownership of the "load
    IA32_PERF_GLOBAL_CTRL" VMX entry/exit control bits, trying to set these
    bits in the IA32_VMX_TRUE_{ENTRY,EXIT}_CTLS MSRs if the guest's CPUID
    supports the architectural PMU (CPUID[EAX=0Ah].EAX[7:0]=1), and clear
    otherwise.
    
    This was a misguided attempt at mimicking what commit 5f76f6f5
    ("KVM: nVMX: Do not expose MPX VMX controls when guest MPX disabled",
    2018-10-01) did for MPX.  However, that commit was a workaround for
    another KVM bug and not something that should be imitated.  Mucking with
    the VMX MSRs creates a subtle, difficult to maintain ABI as KVM must
    ensure that any internal changes, e.g. to how KVM handles _any_ guest
    CPUID changes, yield the same functional result.  Therefore, KVM's policy
    is to let userspace have full control of the guest vCPU model so long
    as the host kernel is not at risk.
    
    Now that KVM really truly ensures kvm_set_msr() will succeed by loading
    PERF_GLOBAL_CTRL if and only if it exists, revert KVM's misguided and
    roundabout behavior.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    [sean: make it a pure revert]
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20220722224409.1336532-6-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9389d577
nested.h 8.71 KB