Re: [PATCH 00/13] Extend the vPMU selftest
From: Raghavendra Rao Ananta
Date: Mon Feb 13 2023 - 18:39:22 EST
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
>