The test is inspired by the pmu_event_filter_test which implemented by x86. On the arm64 platform, there is the same ability to set the pmu_event_filter through the KVM_ARM_VCPU_PMU_V3_FILTER attribute. So add the test for arm64. The series first create the helper function which can be used for the vpmu related tests. Then, it implement the test. Changelog: ---------- v9->v10: - Remove the first_filter checking in the prepare_expected_pmce function. - Add a new macro EVENT_[ALLOW|DENY] to make the definition of filter more readable. - Some small improvements. v8->v9: - Rebased to latest kvm-arm/next. v7->v8: - Rebased to kvm-arm/next. - Deleted the GIC layout related staff. - Fixed the checking logic in the kvm_pmu_support_events. v6->v7: - Rebased to v6.9-rc3. v5->v6: - Rebased to v6.9-rc1. - Collect RB. - Add multiple filter test. v4->v5: - Rebased to v6.8-rc6. - Refactor the helper function, make it fine-grained and easy to be used. - Namimg improvements. - Use the kvm_device_attr_set() helper. - Make the test descriptor array readable and clean. - Delete the patch which moves the pmu related helper to vpmu.h. - Remove the kvm_supports_pmu_event_filter() function since nobody will run this on a old kernel. v3->v4: - Rebased to the v6.8-rc2. v2->v3: - Check the pmceid in guest code instead of pmu event count since different hardware may have different event count result, check pmceid makes it stable on different platform. [Eric] - Some typo fixed and commit message improved. v1->v2: - Improve the commit message. [Eric] - Fix the bug in [enable|disable]_counter. [Raghavendra & Marc] - Add the check if kvm has attr KVM_ARM_VCPU_PMU_V3_FILTER. - Add if host pmu support the test event throught pmceid0. - Split the test_invalid_filter() to another patch. [Eric] Shaoqin Huang (3): KVM: selftests: aarch64: Add helper function for the vpmu vcpu creation KVM: selftests: aarch64: Introduce pmu_event_filter_test KVM: selftests: aarch64: Add invalid filter test in pmu_event_filter_test tools/testing/selftests/kvm/Makefile | 1 + .../kvm/aarch64/pmu_event_filter_test.c | 352 ++++++++++++++++++ .../kvm/aarch64/vpmu_counter_access.c | 32 +- .../selftests/kvm/include/aarch64/vpmu.h | 28 ++ 4 files changed, 387 insertions(+), 26 deletions(-) create mode 100644 tools/testing/selftests/kvm/aarch64/pmu_event_filter_test.c create mode 100644 tools/testing/selftests/kvm/include/aarch64/vpmu.h -- 2.40.1