Hello, This vPMU KVM selftest series is an extension to the selftests introduced by Reiji Watanabe in his series aims to limit the number of PMCs on vCPU from userspace [1]. The idea behind this series is to expand the test coverage to include the tests that validates actions from userspace, such as allowing or denying certain events via KVM_ARM_VCPU_PMU_V3_FILTER attribute, KVM's guarding of the PMU attributes to count EL2/EL3 events, and formal KVM behavior that enables PMU emulation. The last part validates the guest expectations of the vPMU by setting up a stress test that force-migrates multiple vCPUs frequently across random pCPUs in the system, thus ensuring KVM's management of vCPU PMU contexts correctly. Patch-1 renames the test file to be more generic. Patch-2 refactors the existing tests for plugging-in the upcoming tests easily. Patch-3 and 4 add helper macros and functions respectively to interact with the cycle counter. Patch-5 extends create_vpmu_vm() to accept an array of event filters as an argument that are to be applied to the VM. Patch-6 tests the KVM_ARM_VCPU_PMU_V3_FILTER attribute by scripting various combinations of events that are to be allowed or denied to the guest and verifying guest's behavior. Patch-7 adds test to validate KVM's handling of guest requests to count events in EL2/EL3. Patch-8 introduces the vCPU migration stress testing by validating cycle counter and general purpose counter's behavior across vCPU migrations. Patch-9, 10, and 11 expands the tests in patch-8 to validate overflow/IRQ functionality, chained events, and occupancy of all the PMU counters, respectively. Patch-12 extends create_vpmu_vm() to create multiple vCPUs for the VM. Patch-13 expands the stress tests for multiple vCPUs. The series has been tested on hardwares with PMUv8p1 and PMUvp5. Thank you. Raghavendra [1]: https://lore.kernel.org/all/20230203040242.1792453-1-reijiw@xxxxxxxxxx/ Raghavendra Rao Ananta (13): selftests: KVM: aarch64: Rename vpmu_counter_access.c to vpmu_test.c selftests: KVM: aarch64: Refactor the vPMU counter access tests tools: arm64: perf_event: Define Cycle counter enable/overflow bits selftests: KVM: aarch64: Add PMU cycle counter helpers selftests: KVM: aarch64: Consider PMU event filters for VM creation selftests: KVM: aarch64: Add KVM PMU event filter test selftests: KVM: aarch64: Add KVM EVTYPE filter PMU test selftests: KVM: aarch64: Add vCPU migration test for PMU selftests: KVM: aarch64: Test PMU overflow/IRQ functionality selftests: KVM: aarch64: Test chained events for PMU selftests: KVM: aarch64: Add PMU test to chain all the counters selftests: KVM: aarch64: Add multi-vCPU support for vPMU VM creation selftests: KVM: aarch64: Extend the vCPU migration test to multi-vCPUs tools/arch/arm64/include/asm/perf_event.h | 7 + tools/testing/selftests/kvm/Makefile | 2 +- .../kvm/aarch64/vpmu_counter_access.c | 642 ------- .../testing/selftests/kvm/aarch64/vpmu_test.c | 1710 +++++++++++++++++ 4 files changed, 1718 insertions(+), 643 deletions(-) delete mode 100644 tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c create mode 100644 tools/testing/selftests/kvm/aarch64/vpmu_test.c -- 2.39.1.581.gbfd45094c4-goog