public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Yosry Ahmed <yosry@kernel.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Jim Mattson <jmattson@google.com>,
	kvm@vger.kernel.org,  linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 3/6] KVM: x86/pmu: Disable counters based on Host-Only/Guest-Only bits in SVM
Date: Mon, 27 Apr 2026 12:54:08 -0700	[thread overview]
Message-ID: <ae--4AYNLshM5_zJ@google.com> (raw)
In-Reply-To: <CAO9r8zO9YxhkfQAXu6ocDD7=SQ7ia1stTmOS4Z6JbMa00hz97w@mail.gmail.com>

On Mon, Apr 27, 2026, Yosry Ahmed wrote:
> > static inline void __kvm_pmu_reprogram_counters(struct kvm_pmu *pmu, u64 diff,
> >                                                 bool defer)
> > {
> >         struct kvm_vcpu *vcpu = pmu_to_vcpu(pmu);
> >
> >         lockdep_assert_once(defer || kvm_get_running_vcpu() == vcpu);
> >
> >         if (!diff)
> >                 return;
> >
> >         atomic64_or(diff, &pmu->__reprogram_pmi);
> >
> >         if (defer)
> >                 kvm_make_request(KVM_REQ_PMU, vcpu);
> >         else
> >                 kvm_pmu_handle_event(pmu_to_vcpu(pmu));
> > }
> 
> I like that the KVM PMU code is now presenting a generic API to
> reprogram counters rather than handling nested transitions, even
> though reprogram_on_nested_transition fits better semantically in
> kvm_pmu (than svm_nested_state).
> 
> I do have a few questions:
> 
> 1. Do we want to do all of the work in kvm_pmu_handle_event() on every
> nested transition (rather than just reprogram counters)? Genuinely
> asking as I am not sure if the rest of it is significant.

Yes, we have to for correctness.  And somewhat sneakily, it's not that as much
work as it might seem at first glance because the Host/Guest stuff is limited to
the mediated PMU.  Specifically, pmu->need_cleanup will never be true and so the
heavy-ish kvm_pmu_cleanup() will never be invoked.

As for correctness, we either need to run through this code:

	kvm_for_each_pmc(pmu, pmc, bit, bitmap)
		kvm_pmu_recalc_pmc_emulation(pmu, pmc);

or pend a KVM_REQ_PMU so that it's done before re-entering the guest, so that
KVM does the right thing when skipping/emulating guest instructions.  That flow
is relatively cheap, so I don't see any reason to defer it.


> 2. This approach will reprogram all counters that need it on nested
> transitions. In my proposed approach above, I only iterate over
> counters in reprogram_on_nested_transition and reprogram them. Do you
> think it matters? I guess if other counters need reprogramming we'll
> probably do it in kvm_pmu_handle_event() before running the vCPU
> anyway,

Correct.  KVM has to do the work before the next VMRUN, all we're doing is
completing the work earlier than is strictly necessary.

> but then we're repeating the work here?

No, it's not repeated.  That's why I want to callkvm_pmu_handle_event(): it
updates pmu->reprogram_pmi to clear bits for PMCs that are successfully reprogrammed.

> 3. In this world we still keep the mediated_reprogram_counter() callback, right?

Weren't we planning on a callback that would take the diff of counters?  I.e. one
callback per kvm_pmu_handle_event(), not one callback per PMC?

  reply	other threads:[~2026-04-27 19:54 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26  3:11 [PATCH v4 0/6] KVM: x86/pmu: Add support for AMD Host-Only/Guest-Only bits Yosry Ahmed
2026-03-26  3:11 ` [PATCH v4 1/6] KVM: x86: Move enable_pmu/enable_mediated_pmu to pmu.h and pmu.c Yosry Ahmed
2026-03-26  3:11 ` [PATCH v4 2/6] KVM: x86: Move guest_mode helpers to x86.h Yosry Ahmed
2026-03-26 22:48   ` kernel test robot
2026-03-26 23:18     ` Yosry Ahmed
2026-03-27  3:15   ` kernel test robot
2026-03-26  3:11 ` [PATCH v4 3/6] KVM: x86/pmu: Disable counters based on Host-Only/Guest-Only bits in SVM Yosry Ahmed
2026-04-07  1:30   ` Sean Christopherson
2026-04-24  6:55     ` Yosry Ahmed
2026-04-27 18:50       ` Sean Christopherson
2026-04-27 19:11         ` Yosry Ahmed
2026-04-27 19:54           ` Sean Christopherson [this message]
2026-04-27 20:02             ` Yosry Ahmed
2026-04-27 20:06               ` Sean Christopherson
2026-04-27 23:20         ` Yosry Ahmed
2026-04-27 23:53           ` Sean Christopherson
2026-04-28  0:34             ` Yosry Ahmed
2026-04-28  0:35               ` Yosry Ahmed
2026-04-28  0:37                 ` Yosry Ahmed
2026-03-26  3:11 ` [PATCH v4 4/6] KVM: x86/pmu: Re-evaluate Host-Only/Guest-Only on nested SVM transitions Yosry Ahmed
2026-04-07  1:35   ` Sean Christopherson
2026-04-09  4:59   ` Jim Mattson
2026-04-09 17:22     ` Sean Christopherson
2026-04-09 17:29       ` Jim Mattson
2026-04-09 17:48         ` Sean Christopherson
2026-04-09 18:35           ` Jim Mattson
2026-04-09 18:38             ` Sean Christopherson
2026-04-09 21:21               ` Sean Christopherson
2026-04-10  3:50                 ` Jim Mattson
2026-04-15 21:26                   ` Sean Christopherson
2026-04-15 23:07                     ` Jim Mattson
2026-04-16  0:29                       ` Sean Christopherson
2026-04-17 22:51                         ` Jim Mattson
2026-04-21 20:01                 ` Yosry Ahmed
2026-04-22 22:42                   ` Sean Christopherson
2026-04-24  6:57                     ` Yosry Ahmed
2026-03-26  3:11 ` [PATCH v4 5/6] KVM: x86/pmu: Allow Host-Only/Guest-Only bits with nSVM and mediated PMU Yosry Ahmed
2026-03-26  3:11 ` [PATCH v4 6/6] KVM: selftests: Add svm_pmu_host_guest_test for Host-Only/Guest-Only bits Yosry Ahmed
2026-04-07  1:39   ` Sean Christopherson
2026-04-07  3:23     ` Jim Mattson

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=ae--4AYNLshM5_zJ@google.com \
    --to=seanjc@google.com \
    --cc=jmattson@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=yosry@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox