[PATCH v5 00/13] KVM: x86/pmu: selftests: Fixes and new tests

Sean Christopherson
2023-10-24T00:26:40Z

This is effectively v5 of Jinrong's series to add more PMU selftests, with
a focus on architectural events, fixed counters, and CPUID configurations.
I reworked things quite a bit, but the core concepts and what's being tested
are more or less unchanged.

The first three patches are minor fixes for KVM's handling of fixed
counters. Patch 3 deals with an area in the PMU architecture that is
somewhat open to interpretation, i.e. could probably use a bit of dicsussion
to make sure we're all on the same page.

Jinrong and/or Like, please double check and rerun everything, my confidence
level with PMU stuff is still quite low relative to the rest of KVM.

v4: https://lore.kernel.org/all/20230911114347.85882-1-cloudliang@tencent.com
v3: https://lore.kernel.org/kvm/20230814115108.45741-1-cloudliang@tencent.com

Jinrong Liang (7):
KVM: selftests: Add vcpu_set_cpuid_property() to set properties
KVM: selftests: Add pmu.h and lib/pmu.c for common PMU assets
KVM: selftests: Test Intel PMU architectural events on gp counters
KVM: selftests: Test Intel PMU architectural events on fixed counters
KVM: selftests: Test consistency of CPUID with num of gp counters
KVM: selftests: Test consistency of CPUID with num of fixed counters
KVM: selftests: Add functional test for Intel's fixed PMU counters

Sean Christopherson (6):
KVM: x86/pmu: Don't allow exposing unsupported architectural events
KVM: x86/pmu: Don't enumerate support for fixed counters KVM can't
virtualize
KVM: x86/pmu: Always treat Fixed counters as available when supported
KVM: selftests: Drop the "name" param from KVM_X86_PMU_FEATURE()
KVM: selftests: Extend {kvm,this}_pmu_has() to support fixed counters
KVM: selftests: Extend PMU counters test to permute on vPMU version

arch/x86/kvm/pmu.h | 4 +
arch/x86/kvm/vmx/pmu_intel.c | 48 +-
tools/testing/selftests/kvm/Makefile | 2 +
tools/testing/selftests/kvm/include/pmu.h | 84 ++++
.../selftests/kvm/include/x86_64/processor.h | 67 ++-
tools/testing/selftests/kvm/lib/pmu.c | 28 ++
.../selftests/kvm/lib/x86_64/processor.c | 12 +-
.../selftests/kvm/x86_64/pmu_counters_test.c | 438 ++++++++++++++++++
.../kvm/x86_64/pmu_event_filter_test.c | 32 +-
.../smaller_maxphyaddr_emulation_test.c | 2 +-
10 files changed, 669 insertions(+), 48 deletions(-)
create mode 100644 tools/testing/selftests/kvm/include/pmu.h
create mode 100644 tools/testing/selftests/kvm/lib/pmu.c
create mode 100644 tools/testing/selftests/kvm/x86_64/pmu_counters_test.c

base-commit: c076acf10c78c0d7e1aa50670e9cc4c91e8d59b4
--
2.42.0.758.gaed0368e0e-goog