From: Sean Christopherson <seanjc@google.com>
To: Aaron Lewis <aaronlewis@google.com>
Cc: kvm@vger.kernel.org, pbonzini@redhat.com, jmattson@google.com
Subject: Re: [PATCH 1/2] KVM: x86/pmu: Prevent the PMU from counting disallowed events
Date: Wed, 4 Jan 2023 17:20:10 +0000 [thread overview]
Message-ID: <Y7W1StyoN3f38xG8@google.com> (raw)
In-Reply-To: <20221209194957.2774423-2-aaronlewis@google.com>
On Fri, Dec 09, 2022, Aaron Lewis wrote:
> When counting "Instructions Retired" (0xc0) in a guest, KVM will
> occasionally increment the PMU counter regardless of if that event is
> being filtered. This is because some PMU events are incremented via
> kvm_pmu_trigger_event(), which doesn't know about the event filter. Add
> the event filter to kvm_pmu_trigger_event(), so events that are
> disallowed do not increment their counters.
>
> Fixes: 9cd803d496e7 ("KVM: x86: Update vPMCs when retiring instructions")
> Signed-off-by: Aaron Lewis <aaronlewis@google.com>
> ---
> arch/x86/kvm/pmu.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
> index 684393c22105..b87cf35a38b7 100644
> --- a/arch/x86/kvm/pmu.c
> +++ b/arch/x86/kvm/pmu.c
> @@ -581,7 +581,9 @@ 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))
reprogram_counter() has the same three checks, seems like we should combine them
into a common helper. No idea what to call it though. Maybe?
if (!pmc || !pmc_is_fully_enabled(pmc))
> continue;
>
> /* Ignore checks for edge detect, pin control, invert and CMASK bits */
> --
> 2.39.0.rc1.256.g54fd8350bd-goog
>
next prev parent reply other threads:[~2023-01-04 17:20 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-09 19:49 [PATCH 0/2] Fix "Instructions Retired" from incorrectly counting Aaron Lewis
2022-12-09 19:49 ` [PATCH 1/2] KVM: x86/pmu: Prevent the PMU from counting disallowed events Aaron Lewis
2023-01-04 17:20 ` Sean Christopherson [this message]
2022-12-09 19:49 ` [PATCH 2/2] KVM: selftests: Test the PMU event "Instructions retired" Aaron Lewis
2023-01-04 17:35 ` Sean Christopherson
2022-12-12 13:24 ` [PATCH 0/2] Fix "Instructions Retired" from incorrectly counting Like Xu
2022-12-15 13:39 ` Aaron Lewis
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=Y7W1StyoN3f38xG8@google.com \
--to=seanjc@google.com \
--cc=aaronlewis@google.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.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.