From: Sean Christopherson <seanjc@google.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Thomas Gleixner <tglx@kernel.org>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org, Jim Mattson <jmattson@google.com>,
Mingwei Zhang <mizhang@google.com>,
Stephane Eranian <eranian@google.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>
Subject: Re: [PATCH 1/4] perf/x86/intel: Don't write PEBS_ENABLED on host<=>guest xfers if CPU has isolation
Date: Thu, 16 Apr 2026 12:38:49 -0700 [thread overview]
Message-ID: <aeE6yYGaq2rnj77v@google.com> (raw)
In-Reply-To: <aeEpV9kfBSQrxwm-@google.com>
On Thu, Apr 16, 2026, Namhyung Kim wrote:
> > + /*
> > + * Disable counters where the guest PMC is different than the host PMC
> > + * being used on behalf of the guest, as the PEBS record includes
> > + * PERF_GLOBAL_STATUS, i.e. the guest will see overflow status for the
> > + * wrong counter(s). Similarly, disallow PEBS in the guest if the host
> > + * is using PEBS, to avoid bleeding host state into PEBS records.
> > + */
> > + guest_pebs_mask &= kvm_pmu->pebs_enable & ~kvm_pmu->host_cross_mapped_mask;
> > + if (pebs_mask & ~cpuc->intel_ctrl_guest_mask)
> > + guest_pebs_mask = 0;
> >
> > + /*
> > + * Do NOT mess with PEBS_ENABLED. As above, disabling counters via
> > + * PERF_GLOBAL_CTRL is sufficient, and loading a stale PEBS_ENABLED,
> > + * e.g. on VM-Exit, can put the system in a bad state. Simply enable
> > + * counters in PERF_GLOBAL_CTRL, as perf load PEBS_ENABLED with the
> > + * full value, i.e. perf *also* relies on PERF_GLOBAL_CTRL.
> > + */
> > + arr[global_ctrl].guest |= guest_pebs_mask;
>
> I was confused by the earlier comment in the funcion that says it is not
> enough to disable counters but I've realized it's only for the case PEBS
> isolation is not supported by CPU/ucode.
Yeah, me too, more than once. :-/
> I think it's ok for disabling guest PEBS, but I'm curious if there's a
> case to enable PEBS only in guest and it'd be handled correctly.
Yep, if PEBS is being virtualized for the guest, unless the host is also profiling,
then PEBS will be active for the guest but not the host. KVM tests for PEBS pass,
and while they aren't exactly comprehensive, they should detect outright breakage.
next prev parent reply other threads:[~2026-04-16 19:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-14 19:14 [PATCH 0/4] perf/x86: Don't write PEBS_ENABLED on KVM transitions Sean Christopherson
2026-04-14 19:14 ` [PATCH 1/4] perf/x86/intel: Don't write PEBS_ENABLED on host<=>guest xfers if CPU has isolation Sean Christopherson
2026-04-16 18:24 ` Namhyung Kim
2026-04-16 19:38 ` Sean Christopherson [this message]
2026-04-16 23:51 ` Namhyung Kim
2026-04-17 0:23 ` Sean Christopherson
2026-04-14 19:14 ` [PATCH 2/4] perf/x86/intel: Don't context switch DS_AREA (and PEBS config) if PEBS is unused Sean Christopherson
2026-04-14 21:31 ` Jim Mattson
2026-04-14 22:49 ` Sean Christopherson
2026-04-15 13:00 ` Jim Mattson
2026-04-14 19:14 ` [PATCH 3/4] perf/x86/intel: Make @data a mandatory param for intel_guest_get_msrs() Sean Christopherson
2026-04-14 22:29 ` Jim Mattson
2026-04-14 19:14 ` [PATCH 4/4] perf/x86: KVM: Have perf define a dedicated struct for getting guest PEBS data 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=aeE6yYGaq2rnj77v@google.com \
--to=seanjc@google.com \
--cc=acme@kernel.org \
--cc=bp@alien8.de \
--cc=dapeng1.mi@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mizhang@google.com \
--cc=namhyung@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@kernel.org \
--cc=x86@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