From: Marc Zyngier <maz@kernel.org>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: Oliver Upton <oliver.upton@linux.dev>,
Joey Gouly <joey.gouly@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Kees Cook <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org,
devel@daynix.com
Subject: Re: [PATCH RFC] KVM: arm64: PMU: Use multiple host PMUs
Date: Wed, 19 Mar 2025 18:38:38 +0000 [thread overview]
Message-ID: <86ldt0n9w1.wl-maz@kernel.org> (raw)
In-Reply-To: <cd7b4528-34a3-4d87-9711-acc2c2e6f6e1@daynix.com>
On Wed, 19 Mar 2025 11:51:21 +0000,
Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> On 2025/03/19 20:41, Marc Zyngier wrote:
> > On Wed, 19 Mar 2025 11:26:18 +0000,
> > Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
> >>
> >> On 2025/03/19 20:07, Marc Zyngier wrote:
> >>> On Wed, 19 Mar 2025 10:26:57 +0000,
> >>>>
> >>> But that'd be a new ABI, which again would require buy-in from
> >>> userspace. Maybe there is scope for an all CPUs, cycle-counter only
> >>> PMUv3 exposed to the guest, but that cannot be set automatically, as
> >>> we would otherwise regress existing setups.
> >>>
> >>> At this stage, and given that you need to change userspace, I'm not
> >>> sure what the best course of action is.
> >>
> >> Having an explicit flag for the userspace is fine for QEMU, which I
> >> care. It can flip the flag if and only if threads are not pinned to
> >> one PMU and the machine is a new setup.
> >>
> >> I also wonder what regression you think setting it automatically causes.
> >
> > The current behaviour is that if you don't specify anything other than
> > creating a PMUv3 (without KVM_ARM_VCPU_PMU_V3_SET_PMU), you get *some*
> > PMU, and userspace is responsible for running the vcpu on CPUs that
> > will implement that PMU. When if does, all the counters, all the
> > events are valid. If it doesn't, nothing counts, but the
> > counters/events are still valid.
> >
> > If you now add this flag automatically, the guest doesn't see the full
> > PMU anymore. Only the cycle counter. That's the regression.
>
> What about setting the flag automatically when a user fails to pin
> vCPUs to CPUs that are covered by one PMU? There would be no change if
> a user correctly pins vCPUs as it is. Otherwise, they will see a
> correct feature set advertised to the guest and the cycle counter
> working.
How do you know that the affinity is "correct"? VCPU affinity can be
changed at any time. I, for one, do not want my VMs to change
behaviour because I let the vcpus bounce around as the scheduler sees
fit.
Honestly, this is not a can of worm I want to open. We already have a
pretty terrible userspace API for the PMU, let's not add to the
confusion. *If* we are going down the road of presenting a dumbed-down
PMU to the guest, it has to be an explicit buy-in from userspace.
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2025-03-19 18:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 6:33 [PATCH RFC] KVM: arm64: PMU: Use multiple host PMUs Akihiko Odaki
2025-03-19 7:34 ` Oliver Upton
2025-03-19 8:37 ` Akihiko Odaki
2025-03-19 9:47 ` Marc Zyngier
2025-03-19 10:26 ` Akihiko Odaki
2025-03-19 11:07 ` Marc Zyngier
2025-03-19 11:26 ` Akihiko Odaki
2025-03-19 11:41 ` Marc Zyngier
2025-03-19 11:51 ` Akihiko Odaki
2025-03-19 18:38 ` Marc Zyngier [this message]
2025-03-19 18:51 ` Oliver Upton
2025-03-20 6:03 ` Akihiko Odaki
2025-03-20 9:10 ` Marc Zyngier
2025-03-20 9:52 ` Akihiko Odaki
2025-03-20 17:14 ` Marc Zyngier
2025-03-21 6:20 ` Akihiko Odaki
2025-03-21 10:59 ` Marc Zyngier
2025-03-20 9:19 ` Marc Zyngier
2025-03-20 17:44 ` Oliver Upton
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=86ldt0n9w1.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=akihiko.odaki@daynix.com \
--cc=catalin.marinas@arm.com \
--cc=devel@daynix.com \
--cc=gustavoars@kernel.org \
--cc=joey.gouly@arm.com \
--cc=kees@kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oliver.upton@linux.dev \
--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.