From: Raghavendra Rao Ananta <rananta@google.com>
To: Oliver Upton <oupton@google.com>,
Reiji Watanabe <reijiw@google.com>, Marc Zyngier <maz@kernel.org>,
Ricardo Koller <ricarkol@google.com>,
James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Jing Zhang <jingzhangos@google.com>,
Colton Lewis <coltonlewis@google.com>,
Raghavendra Rao Anata <rananta@google.com>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Subject: [REPOST PATCH 00/16] Add support for vPMU selftests
Date: Wed, 15 Feb 2023 01:07:01 +0000 [thread overview]
Message-ID: <20230215010717.3612794-1-rananta@google.com> (raw)
Hello,
The series aims to add vPMU selftests to improve the test coverage
for KVM's PMU emulation. It includes the tests that validates actions
from userspace, such as verifying the guest read/write accesses to the
PMu registers while limiting the number for PMCs, and allowing or denying
certain events via KVM_ARM_VCPU_PMU_V3_FILTER attribute. It also includes
tests for 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.
As suggested by Oliver in my original post of the series [1] (and with
Reiji's permission), I'm re-posting the series to include the
selftest patches from Reiji's series that aims to limit the number
of PMCs for the guest [2].
Patches 1-4 are unmodified patches 11-14 from Reiji's series [2],
which introduces the vPMU selftests that adds a test to validate
the read/write functionalities for the guest accesses to the
implemented and unimplemented counters.
Patch-5 refactors the existing tests for plugging-in the upcoming tests
easily and rename the test file to a more generic name.
Patch-6 and 7 add helper macros and functions respectively to interact
with the cycle counter.
Patch-8 extends create_vpmu_vm() to accept an array of event filters
as an argument that are to be applied to the VM.
Patch-9 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-10 adds test to validate KVM's handling of guest requests to count
events in EL2/EL3.
Patch-11 introduces the vCPU migration stress testing by validating cycle
counter and general purpose counter's behavior across vCPU migrations.
Patch-12, 13, and 14 expands the tests in patch-8 to validate
overflow/IRQ functionality, chained events, and occupancy of all the PMU
counters, respectively.
Patch-15 extends create_vpmu_vm() to create multiple vCPUs for the VM.
Patch-16 expands the stress tests for multiple vCPUs.
The series has been tested on hardwares with PMUv3p1 and PMUv3p5 on
top of v6.2-rc7 plus Reiji's series [2].
Thank you.
Raghavendra
[1]: https://lore.kernel.org/all/20230213180234.2885032-1-rananta@google.com/
[2]: https://lore.kernel.org/all/20230211031506.4159098-1-reijiw@google.com/
Raghavendra Rao Ananta (12):
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
Reiji Watanabe (4):
tools: arm64: Import perf_event.h
KVM: selftests: aarch64: Introduce vpmu_counter_access test
KVM: selftests: aarch64: vPMU register test for implemented counters
KVM: selftests: aarch64: vPMU register test for unimplemented counters
tools/arch/arm64/include/asm/perf_event.h | 265 +++
tools/testing/selftests/kvm/Makefile | 1 +
.../testing/selftests/kvm/aarch64/vpmu_test.c | 1710 +++++++++++++++++
.../selftests/kvm/include/aarch64/processor.h | 1 +
4 files changed, 1977 insertions(+)
create mode 100644 tools/arch/arm64/include/asm/perf_event.h
create mode 100644 tools/testing/selftests/kvm/aarch64/vpmu_test.c
--
2.39.1.581.gbfd45094c4-goog
next reply other threads:[~2023-02-15 1:07 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 1:07 Raghavendra Rao Ananta [this message]
2023-02-15 1:07 ` [REPOST PATCH 01/16] tools: arm64: Import perf_event.h Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 02/16] KVM: selftests: aarch64: Introduce vpmu_counter_access test Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 03/16] KVM: selftests: aarch64: vPMU register test for implemented counters Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 04/16] KVM: selftests: aarch64: vPMU register test for unimplemented counters Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 05/16] selftests: KVM: aarch64: Refactor the vPMU counter access tests Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 06/16] tools: arm64: perf_event: Define Cycle counter enable/overflow bits Raghavendra Rao Ananta
2023-03-03 0:46 ` Reiji Watanabe
2023-03-09 22:14 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 07/16] selftests: KVM: aarch64: Add PMU cycle counter helpers Raghavendra Rao Ananta
2023-03-03 3:06 ` Reiji Watanabe
2023-03-09 22:19 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 08/16] selftests: KVM: aarch64: Consider PMU event filters for VM creation Raghavendra Rao Ananta
2023-03-03 4:30 ` Reiji Watanabe
2023-03-09 22:45 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 09/16] selftests: KVM: aarch64: Add KVM PMU event filter test Raghavendra Rao Ananta
2023-03-04 20:28 ` Reiji Watanabe
2023-03-09 23:17 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 10/16] selftests: KVM: aarch64: Add KVM EVTYPE filter PMU test Raghavendra Rao Ananta
2023-03-07 1:19 ` Reiji Watanabe
2023-03-07 16:09 ` Sean Christopherson
2023-03-10 21:57 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 11/16] selftests: KVM: aarch64: Add vCPU migration test for PMU Raghavendra Rao Ananta
2023-03-07 3:43 ` Reiji Watanabe
2023-03-10 2:28 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 12/16] selftests: KVM: aarch64: Test PMU overflow/IRQ functionality Raghavendra Rao Ananta
2023-03-07 6:09 ` Reiji Watanabe
2023-03-08 1:19 ` Reiji Watanabe
2023-03-10 23:58 ` Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 13/16] selftests: KVM: aarch64: Test chained events for PMU Raghavendra Rao Ananta
2023-03-08 3:15 ` Reiji Watanabe
2023-02-15 1:07 ` [REPOST PATCH 14/16] selftests: KVM: aarch64: Add PMU test to chain all the counters Raghavendra Rao Ananta
2023-03-08 3:40 ` Reiji Watanabe
2023-02-15 1:07 ` [REPOST PATCH 15/16] selftests: KVM: aarch64: Add multi-vCPU support for vPMU VM creation Raghavendra Rao Ananta
2023-02-15 1:07 ` [REPOST PATCH 16/16] selftests: KVM: aarch64: Extend the vCPU migration test to multi-vCPUs Raghavendra Rao Ananta
2023-03-08 4:44 ` Reiji Watanabe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230215010717.3612794-1-rananta@google.com \
--to=rananta@google.com \
--cc=coltonlewis@google.com \
--cc=james.morse@arm.com \
--cc=jingzhangos@google.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oupton@google.com \
--cc=pbonzini@redhat.com \
--cc=reijiw@google.com \
--cc=ricarkol@google.com \
--cc=suzuki.poulose@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox