KVM: selftests: Test gp event filters don't affect fixed event filters
Add a test to ensure that setting both generic and fixed performance event filters does not affect the consistency of the fixed event filter behavior in KVM. Signed-off-by: Jinrong Liang <cloudliang@tencent.com> Link: https://lore.kernel.org/r/20230810090945.16053-7-cloudliang@tencent.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
d4e3616682
commit
740d087e7f
|
@ -838,6 +838,19 @@ static uint64_t test_with_fixed_counter_filter(struct kvm_vcpu *vcpu,
|
||||||
return run_vcpu_to_sync(vcpu);
|
return run_vcpu_to_sync(vcpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint64_t test_set_gp_and_fixed_event_filter(struct kvm_vcpu *vcpu,
|
||||||
|
uint32_t action,
|
||||||
|
uint32_t bitmap)
|
||||||
|
{
|
||||||
|
struct __kvm_pmu_event_filter f = base_event_filter;
|
||||||
|
|
||||||
|
f.action = action;
|
||||||
|
f.fixed_counter_bitmap = bitmap;
|
||||||
|
set_pmu_event_filter(vcpu, &f);
|
||||||
|
|
||||||
|
return run_vcpu_to_sync(vcpu);
|
||||||
|
}
|
||||||
|
|
||||||
static void __test_fixed_counter_bitmap(struct kvm_vcpu *vcpu, uint8_t idx,
|
static void __test_fixed_counter_bitmap(struct kvm_vcpu *vcpu, uint8_t idx,
|
||||||
uint8_t nr_fixed_counters)
|
uint8_t nr_fixed_counters)
|
||||||
{
|
{
|
||||||
|
@ -864,6 +877,20 @@ static void __test_fixed_counter_bitmap(struct kvm_vcpu *vcpu, uint8_t idx,
|
||||||
count = test_with_fixed_counter_filter(vcpu, KVM_PMU_EVENT_DENY,
|
count = test_with_fixed_counter_filter(vcpu, KVM_PMU_EVENT_DENY,
|
||||||
bitmap);
|
bitmap);
|
||||||
TEST_ASSERT_EQ(!!count, !(bitmap & BIT(idx)));
|
TEST_ASSERT_EQ(!!count, !(bitmap & BIT(idx)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check that fixed_counter_bitmap has higher priority than
|
||||||
|
* events[] when both are set.
|
||||||
|
*/
|
||||||
|
count = test_set_gp_and_fixed_event_filter(vcpu,
|
||||||
|
KVM_PMU_EVENT_ALLOW,
|
||||||
|
bitmap);
|
||||||
|
TEST_ASSERT_EQ(!!count, !!(bitmap & BIT(idx)));
|
||||||
|
|
||||||
|
count = test_set_gp_and_fixed_event_filter(vcpu,
|
||||||
|
KVM_PMU_EVENT_DENY,
|
||||||
|
bitmap);
|
||||||
|
TEST_ASSERT_EQ(!!count, !(bitmap & BIT(idx)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue