From: Oliver Upton <oliver.upton@linux.dev>
To: Janne Grunau <j@jannau.net>
Cc: kvmarm@lists.linux.dev, Marc Zyngier <maz@kernel.org>,
Joey Gouly <joey.gouly@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
Mingwei Zhang <mizhang@google.com>,
Colton Lewis <coltonlewis@google.com>,
Raghavendra Rao Ananta <rananta@google.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, asahi@lists.linux.dev
Subject: Re: [PATCH 00/18] KVM: arm64: Support FEAT_PMUv3 on Apple hardware
Date: Sat, 21 Dec 2024 14:00:55 -0800 [thread overview]
Message-ID: <Z2c6l1cTM7V1Jy7V@linux.dev> (raw)
In-Reply-To: <20241221134549.GA2917938@robin.jannau.net>
On Sat, Dec 21, 2024 at 02:45:49PM +0100, Janne Grunau wrote:
> On Tue, Dec 17, 2024 at 01:20:30PM -0800, Oliver Upton wrote:
> > One of the interesting features of some Apple M* parts is an IMPDEF trap
> > that routes EL1/EL0 accesses of the PMUv3 registers to EL2. This allows
> > a hypervisor to emulate an architectural PMUv3 on top of the IMPDEF PMU
> > hardware present in the CPU.
> >
> > And if you squint, this _might_ look like a CPU erratum :-)
> >
> > This series takes advantage of these IMPDEF traps to provide PMUv3 to
> > KVM guests. As a starting point, only expose the fixed CPU cycle counter
> > and no event counters. Conveniently, this is enough to get Windows
> > running as a KVM guest on Apple hardware.
> >
> > I've tried to keep the deviation to a minimum by refactoring some of the
> > flows used for PMUv3, e.g. computing PMCEID from the arm_pmu bitmap
> > instead of reading hardware directly.
> >
> > RFC -> v1:
> > - Rebase to 6.13-rc3
> > - Add support for 1 event counter in addition to CPU cycle counter
> > - Don't sneak past the PMU event filter (Marc)
> > - Have the PMU driver provide a PMUv3 -> HW event ID mapping (Marc)
> >
> > Tested on my M2 with Linux and Windows guests. If possible, I'd
> > appreciate someone testing on an M1 as I haven't added those MIDRs to
> > the erratum yet.
>
> Tested on M1 (t8103) with perf in a Linux guest and the patch below
>
> Tested-by: Janne Grunau <j@jannau.net>
>
> I'll import this into the downstream asahi kernel as there was a request
> for performance counters to aid FEX-Emu development recently.
>
> Janne
Awesome, greatly appreciate the testing Janne. Hopefully we can get this
worked out for upstream too :)
--
Thanks,
Oliver
next prev parent reply other threads:[~2024-12-21 22:01 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-17 21:20 [PATCH 00/18] KVM: arm64: Support FEAT_PMUv3 on Apple hardware Oliver Upton
2024-12-17 21:20 ` [PATCH 01/18] drivers/perf: apple_m1: Refactor event select/filter configuration Oliver Upton
2024-12-17 21:20 ` [PATCH 02/18] drivers/perf: apple_m1: Support host/guest event filtering Oliver Upton
2024-12-17 21:20 ` [PATCH 03/18] drivers/perf: apple_m1: Map generic branch events Oliver Upton
2024-12-17 21:20 ` [PATCH 04/18] drivers/perf: apple_m1: Provide helper for mapping PMUv3 events Oliver Upton
2024-12-17 21:20 ` [PATCH 05/18] KVM: arm64: Compute PMCEID from arm_pmu's event bitmaps Oliver Upton
2024-12-17 21:20 ` [PATCH 06/18] KVM: arm64: Always support SW_INCR PMU event Oliver Upton
2024-12-17 21:20 ` [PATCH 07/18] KVM: arm64: Remap PMUv3 events onto hardware Oliver Upton
2024-12-17 21:20 ` [PATCH 08/18] KVM: arm64: Use a cpucap to determine if system supports FEAT_PMUv3 Oliver Upton
2024-12-17 21:20 ` [PATCH 09/18] KVM: arm64: Drop kvm_arm_pmu_available static key Oliver Upton
2024-12-18 23:23 ` kernel test robot
2024-12-17 21:20 ` [PATCH 10/18] KVM: arm64: Use guard() to cleanup usage of arm_pmus_lock Oliver Upton
2024-12-17 21:20 ` [PATCH 11/18] KVM: arm64: Move PMUVer filtering into KVM code Oliver Upton
2024-12-17 21:20 ` [PATCH 12/18] KVM: arm64: Compute synthetic sysreg ESR for Apple PMUv3 traps Oliver Upton
2024-12-17 21:20 ` [PATCH 13/18] KVM: arm64: Advertise PMUv3 if IMPDEF traps are present Oliver Upton
2024-12-17 21:22 ` [PATCH 14/18] KVM: arm64: Advertise 0 event counters for IMPDEF PMU Oliver Upton
2024-12-17 21:22 ` [PATCH 15/18] arm64: Enable IMP DEF PMUv3 traps on Apple M2 Oliver Upton
2024-12-17 21:23 ` [RFC PATCH 16/18] drivers/perf: apple_m1: Map a few more PMUv3 events Oliver Upton
2024-12-17 21:23 ` [RFC PATCH 17/18] KVM: arm64: Provide 1 event counter on IMPDEF hardware Oliver Upton
2024-12-17 21:23 ` [HACK PATCH 18/18] KVM: arm64: selftests: Add test for probing PMUv3 sysregs Oliver Upton
2024-12-21 13:45 ` [PATCH 00/18] KVM: arm64: Support FEAT_PMUv3 on Apple hardware Janne Grunau
2024-12-21 22:00 ` Oliver Upton [this message]
2025-01-08 12:38 ` Will Deacon
2025-01-08 20:14 ` Oliver Upton
2025-01-08 21:26 ` Marc Zyngier
2025-01-08 23:06 ` [PATCH 00/18] KVM: arm64: Support FEAT_PMUv3 on Apple hardware\ Oliver Upton
2025-01-10 16:22 ` [PATCH 00/18] KVM: arm64: Support FEAT_PMUv3 on Apple hardware Will Deacon
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=Z2c6l1cTM7V1Jy7V@linux.dev \
--to=oliver.upton@linux.dev \
--cc=asahi@lists.linux.dev \
--cc=catalin.marinas@arm.com \
--cc=coltonlewis@google.com \
--cc=j@jannau.net \
--cc=joey.gouly@arm.com \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=mizhang@google.com \
--cc=rananta@google.com \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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.