• Sean Christopherson's avatar
    KVM: x86/pmu: Disable vPMU support on hybrid CPUs (host PMUs) · 4d7404e5
    Sean Christopherson authored
    Disable KVM support for virtualizing PMUs on hosts with hybrid PMUs until
    KVM gains a sane way to enumeration the hybrid vPMU to userspace and/or
    gains a mechanism to let userspace opt-in to the dangers of exposing a
    hybrid vPMU to KVM guests.  Virtualizing a hybrid PMU, or at least part of
    a hybrid PMU, is possible, but it requires careful, deliberate
    configuration from userspace.
    
    E.g. to expose full functionality, vCPUs need to be pinned to pCPUs to
    prevent migrating a vCPU between a big core and a little core, userspace
    must enumerate a reasonable topology to the guest, and guest CPUID must be
    curated per vCPU to enumerate accurate vPMU capabilities.
    
    The last point is especially problematic, as KVM doesn't control which
    pCPU it runs on when enumerating KVM's vPMU capabilities to userspace,
    i.e. userspace can't rely on KVM_GET_SUPPORTED_CPUID in it's current form.
    
    Alternatively, userspace could enable vPMU support by enumerating the
    set of features that are common and coherent across all cores, e.g. by
    filtering PMU events and restricting guest capabilities.  But again, that
    requires userspace to take action far beyond reflecting KVM's supported
    feature set into the guest.
    
    For now, simply disable vPMU support on hybrid CPUs to avoid inducing
    seemingly random #GPs in guests, and punt support for hybrid CPUs to a
    future enabling effort.
    Reported-by: default avatarJianfeng Gao <jianfeng.gao@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Andrew Cooper <Andrew.Cooper3@citrix.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Link: https://lore.kernel.org/all/20220818181530.2355034-1-kan.liang@linux.intel.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20230208204230.1360502-2-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    4d7404e5
pmu.h 6.41 KB