KVM x86/pmu changes for 6.3. The most noteworthy patches are two fixes that _aren't_ in this pull request. The arch LBRs fix came late in the cycle and doesn't seem super urgent, not sure if it needs to go into 6.3. Disabling vPMU support on hybrid CPUs is much more urgent, but I want your input before proceeding. https://lore.kernel.org/all/20230128001427.2548858-1-seanjc@xxxxxxxxxx https://lore.kernel.org/all/20230208204230.1360502-1-seanjc@xxxxxxxxxx The following changes since commit 7cb79f433e75b05d1635aefaa851cfcd1cb7dc4f: KVM: PPC: Fix refactoring goof in kvmppc_e500mc_init() (2023-01-24 13:00:32 -0500) are available in the Git repository at: https://github.com/kvm-x86/linux.git tags/kvm-x86-pmu-6.3 for you to fetch changes up to 13738a3647368f7f600b30d241779bcd2a3ebbfd: perf/x86/intel: Expose EPT-friendly PEBS for SPR and future models (2023-02-01 16:42:36 -0800) ---------------------------------------------------------------- KVM x86 PMU changes for 6.3: - Add support for created masked events for the PMU filter to allow userspace to heavily restrict what events the guest can use without needing to create an absurd number of events - Clean up KVM's handling of "PMU MSRs to save", especially when vPMU support is disabled - Add PEBS support for Intel SPR ---------------------------------------------------------------- Aaron Lewis (7): KVM: x86/pmu: Correct the mask used in a pmu event filter lookup KVM: x86/pmu: Remove impossible events from the pmu event filter KVM: x86/pmu: prepare the pmu event filter for masked events KVM: x86/pmu: Introduce masked events to the pmu event filter KVM: selftests: Add flags when creating a pmu event filter KVM: selftests: Add testing for KVM_SET_PMU_EVENT_FILTER KVM: selftests: Test masked events in PMU filter Like Xu (4): KVM: x86/pmu: Drop event_type and rename "struct kvm_event_hw_type_mapping" KVM: x86/pmu: Don't tell userspace to save MSRs for non-existent fixed PMCs KVM: x86/pmu: Add PRIR++ and PDist support for SPR and later models perf/x86/intel: Expose EPT-friendly PEBS for SPR and future models Sean Christopherson (5): KVM: x86/pmu: Cap kvm_pmu_cap.num_counters_gp at KVM's internal max KVM: x86/pmu: Gate all "unimplemented MSR" prints on report_ignored_msrs KVM: x86/pmu: Use separate array for defining "PMU MSRs to save" KVM: x86/pmu: Don't tell userspace to save PMU MSRs if PMU is disabled KVM: x86/pmu: Provide "error" semantics for unsupported-but-known PMU MSRs Documentation/virt/kvm/api.rst | 80 ++++- arch/x86/events/intel/core.c | 1 + arch/x86/events/intel/ds.c | 4 +- arch/x86/include/asm/kvm_host.h | 15 +- arch/x86/include/uapi/asm/kvm.h | 29 ++ arch/x86/kvm/hyperv.c | 10 +- arch/x86/kvm/pmu.c | 286 +++++++++++++--- arch/x86/kvm/pmu.h | 13 +- arch/x86/kvm/svm/pmu.c | 2 + arch/x86/kvm/svm/svm.c | 5 +- arch/x86/kvm/vmx/pmu_intel.c | 23 +- arch/x86/kvm/vmx/vmx.c | 4 +- arch/x86/kvm/x86.c | 230 +++++++------ arch/x86/kvm/x86.h | 12 + include/uapi/linux/kvm.h | 1 + .../selftests/kvm/x86_64/pmu_event_filter_test.c | 381 ++++++++++++++++++++- 16 files changed, 897 insertions(+), 199 deletions(-)