All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jinrong Liang <ljr.kernel@gmail.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Like Xu <like.xu.linux@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>,
	Aaron Lewis <aaronlewis@google.com>,
	David Matlack <dmatlack@google.com>,
	Vishal Annapurve <vannapurve@google.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Bagas Sanjaya <bagasdotme@gmail.com>,
	Jinrong Liang <cloudliang@tencent.com>,
	linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 2/7] KVM: selftests: Apply create_pmu_event_filter() to fixed ctrs
Date: Thu, 20 Apr 2023 18:46:17 +0800	[thread overview]
Message-ID: <20230420104622.12504-3-ljrcore@126.com> (raw)
In-Reply-To: <20230420104622.12504-1-ljrcore@126.com>

From: Jinrong Liang <cloudliang@tencent.com>

From: Jinrong Liang <cloudliang@tencent.com>

Add fixed_counter_bitmap to the create_pmu_event_filter() to
support the use of the same creator to control the use of guest
fixed counters.

No functional change intended.

Signed-off-by: Jinrong Liang <cloudliang@tencent.com>
---
 .../kvm/x86_64/pmu_event_filter_test.c        | 31 ++++++++++++-------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
index c0521fc9e8f6..4e87eea6986b 100644
--- a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
+++ b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
@@ -192,19 +192,22 @@ static struct kvm_pmu_event_filter *alloc_pmu_event_filter(uint32_t nevents)
 	return f;
 }
 
-
 static struct kvm_pmu_event_filter *
 create_pmu_event_filter(const uint64_t event_list[], uint32_t nevents,
-			uint32_t action, uint32_t flags)
+			uint32_t action, uint32_t flags,
+			uint32_t fixed_counter_bitmap)
 {
 	struct kvm_pmu_event_filter *f;
 	int i;
 
 	f = alloc_pmu_event_filter(nevents);
 	f->action = action;
+	f->fixed_counter_bitmap = fixed_counter_bitmap;
 	f->flags = flags;
-	for (i = 0; i < nevents; i++)
-		f->events[i] = event_list[i];
+	if (f->nevents) {
+		for (i = 0; i < f->nevents; i++)
+			f->events[i] = event_list[i];
+	}
 
 	return f;
 }
@@ -213,7 +216,7 @@ static struct kvm_pmu_event_filter *event_filter(uint32_t action)
 {
 	return create_pmu_event_filter(event_list,
 				       ARRAY_SIZE(event_list),
-				       action, 0);
+				       action, 0, 0);
 }
 
 /*
@@ -260,7 +263,7 @@ static void test_amd_deny_list(struct kvm_vcpu *vcpu)
 	struct kvm_pmu_event_filter *f;
 	uint64_t count;
 
-	f = create_pmu_event_filter(&event, 1, KVM_PMU_EVENT_DENY, 0);
+	f = create_pmu_event_filter(&event, 1, KVM_PMU_EVENT_DENY, 0, 0);
 	count = test_with_filter(vcpu, f);
 
 	free(f);
@@ -544,7 +547,7 @@ static struct perf_counter run_masked_events_test(struct kvm_vcpu *vcpu,
 
 	f = create_pmu_event_filter(masked_events, nmasked_events,
 				    KVM_PMU_EVENT_ALLOW,
-				    KVM_PMU_EVENT_FLAG_MASKED_EVENTS);
+				    KVM_PMU_EVENT_FLAG_MASKED_EVENTS, 0);
 	r.raw = test_with_filter(vcpu, f);
 	free(f);
 
@@ -726,12 +729,14 @@ static void test_masked_events(struct kvm_vcpu *vcpu)
 }
 
 static int run_filter_test(struct kvm_vcpu *vcpu, const uint64_t *events,
-			   uint32_t nevents, uint32_t flags)
+			   uint32_t nevents, uint32_t flags, uint32_t action,
+			   uint32_t fixed_counter_bitmap)
 {
 	struct kvm_pmu_event_filter *f;
 	int r;
 
-	f = create_pmu_event_filter(events, nevents, KVM_PMU_EVENT_ALLOW, flags);
+	f = create_pmu_event_filter(events, nevents, action, flags,
+				    fixed_counter_bitmap);
 	r = __vm_ioctl(vcpu->vm, KVM_SET_PMU_EVENT_FILTER, f);
 	free(f);
 
@@ -747,14 +752,16 @@ static void test_filter_ioctl(struct kvm_vcpu *vcpu)
 	 * Unfortunately having invalid bits set in event data is expected to
 	 * pass when flags == 0 (bits other than eventsel+umask).
 	 */
-	r = run_filter_test(vcpu, &e, 1, 0);
+	r = run_filter_test(vcpu, &e, 1, 0, KVM_PMU_EVENT_ALLOW, 0);
 	TEST_ASSERT(r == 0, "Valid PMU Event Filter is failing");
 
-	r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS);
+	r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS,
+			    KVM_PMU_EVENT_ALLOW, 0);
 	TEST_ASSERT(r != 0, "Invalid PMU Event Filter is expected to fail");
 
 	e = KVM_PMU_ENCODE_MASKED_ENTRY(0xff, 0xff, 0xff, 0xf);
-	r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS);
+	r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS,
+			    KVM_PMU_EVENT_ALLOW, 0);
 	TEST_ASSERT(r == 0, "Valid PMU Event Filter is failing");
 }
 
-- 
2.31.1


  parent reply	other threads:[~2023-04-20 10:48 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-20 10:46 [PATCH v2 0/7] KVM: selftests: Add tests for pmu event filter Jinrong Liang
2023-04-20 10:46 ` [PATCH v2 1/7] KVM: selftests: Replace int with uint32_t for nevents Jinrong Liang
2023-05-25 16:23   ` Sean Christopherson
2023-04-20 10:46 ` Jinrong Liang [this message]
2023-05-25 17:44   ` [PATCH v2 2/7] KVM: selftests: Apply create_pmu_event_filter() to fixed ctrs Sean Christopherson
2023-04-20 10:46 ` [PATCH v2 3/7] KVM: selftests: Test unavailable event filters are rejected Jinrong Liang
2023-05-25 17:46   ` Sean Christopherson
2023-04-20 10:46 ` [PATCH v2 4/7] KVM: x86/pmu: Add documentation for fixed ctr on PMU filter Jinrong Liang
2023-05-25 17:56   ` Sean Christopherson
2023-04-20 10:46 ` [PATCH v2 5/7] KVM: selftests: Check if pmu_event_filter meets expectations on fixed ctrs Jinrong Liang
2023-05-25 18:11   ` Sean Christopherson
2023-04-20 10:46 ` [PATCH v2 6/7] KVM: selftests: Check gp event filters without affecting fixed event filters Jinrong Liang
2023-05-25 18:12   ` Sean Christopherson
2023-04-20 10:46 ` [PATCH v2 7/7] KVM: selftests: Test pmu event filter with incompatible kvm_pmu_event_filter Jinrong Liang
2023-05-24 23:50   ` Sean Christopherson
2023-05-25  2:19     ` Jinrong Liang
2023-05-25 15:55       ` Sean Christopherson
2023-05-22  3:33 ` [PATCH v2 0/7] KVM: selftests: Add tests for pmu event filter Jinrong Liang
2023-05-22 15:02   ` Sean Christopherson

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=20230420104622.12504-3-ljrcore@126.com \
    --to=ljr.kernel@gmail.com \
    --cc=aaronlewis@google.com \
    --cc=bagasdotme@gmail.com \
    --cc=cloudliang@tencent.com \
    --cc=corbet@lwn.net \
    --cc=dmatlack@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=like.xu.linux@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=vannapurve@google.com \
    --cc=wanpengli@tencent.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.