On Mon, Feb 13, 2023 at 10:02 AM Raghavendra Rao Ananta <rananta@xxxxxxxxxx> wrote: > > 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. > Sorry for the typo (thanks Reiji for pointing it out!). It should be "PMUv3p1 and PMUv3p5". And the testing was done on v6.2-rc6 + [1]. Thank you. Raghavendra > 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 >