• Liran Alon's avatar
    KVM: nVMX: Expose RDPMC-exiting only when guest supports PMU · e51bfdb6
    Liran Alon authored
    Issue was discovered when running kvm-unit-tests on KVM running as L1 on
    top of Hyper-V.
    
    When vmx_instruction_intercept unit-test attempts to run RDPMC to test
    RDPMC-exiting, it is intercepted by L1 KVM which it's EXIT_REASON_RDPMC
    handler raise #GP because vCPU exposed by Hyper-V doesn't support PMU.
    Instead of unit-test expectation to be reflected with EXIT_REASON_RDPMC.
    
    The reason vmx_instruction_intercept unit-test attempts to run RDPMC
    even though Hyper-V doesn't support PMU is because L1 expose to L2
    support for RDPMC-exiting. Which is reasonable to assume that is
    supported only in case CPU supports PMU to being with.
    
    Above issue can easily be simulated by modifying
    vmx_instruction_intercept config in x86/unittests.cfg to run QEMU with
    "-cpu host,+vmx,-pmu" and run unit-test.
    
    To handle issue, change KVM to expose RDPMC-exiting only when guest
    supports PMU.
    Reported-by: default avatarSaar Amar <saaramar@microsoft.com>
    Reviewed-by: default avatarMihai Carabas <mihai.carabas@oracle.com>
    Reviewed-by: default avatarJim Mattson <jmattson@google.com>
    Signed-off-by: default avatarLiran Alon <liran.alon@oracle.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    e51bfdb6
vmx.c 214 KB