[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230222082002.97570-1-likexu@tencent.com>
Date: Wed, 22 Feb 2023 16:20:02 +0800
From: Like Xu <like.xu.linux@...il.com>
To: Sean Christopherson <seanjc@...gle.com>
Cc: Paolo Bonzini <pbonzini@...hat.com>, kvm@...r.kernel.org,
linux-kernel@...r.kernel.org,
Jinrong Liang <cloudliang@...cent.com>
Subject: [PATCH] KVM: x86/pmu: Apply event filter mechanism to emulated instructions
From: Like Xu <likexu@...cent.com>
The check_pmu_event_filter() prevents the perf_event from being created
and stops the associated counters from increasing, the same check should
also be applied to counter increases caused by emulated instructions.
Otherwise this filter mechanism cannot be considered to be in effect.
Reported-by: Jinrong Liang <cloudliang@...cent.com>
Signed-off-by: Like Xu <likexu@...cent.com>
---
arch/x86/kvm/pmu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
index 7b6c3ba2c8e1..1fd1c2f0d4da 100644
--- a/arch/x86/kvm/pmu.c
+++ b/arch/x86/kvm/pmu.c
@@ -684,7 +684,8 @@ void kvm_pmu_trigger_event(struct kvm_vcpu *vcpu, u64 perf_hw_id)
for_each_set_bit(i, pmu->all_valid_pmc_idx, X86_PMC_IDX_MAX) {
pmc = static_call(kvm_x86_pmu_pmc_idx_to_pmc)(pmu, i);
- if (!pmc || !pmc_is_enabled(pmc) || !pmc_speculative_in_use(pmc))
+ if (!pmc || !pmc_is_enabled(pmc) || !pmc_speculative_in_use(pmc) ||
+ !check_pmu_event_filter(pmc))
continue;
/* Ignore checks for edge detect, pin control, invert and CMASK bits */
base-commit: 13738a3647368f7f600b30d241779bcd2a3ebbfd
--
2.39.2
Powered by blists - more mailing lists