[PATCH v3 0/3] KVM: arm64: Fix PMU handling in pKVM
From: Fuad Tabba
Date: Wed Oct 28 2026 - 11:34:47 EST
Hi folks,
Changes since v2 [1]:
- Stop the host's counters with PMCR_EL0.E rather than the individual
counter enables. (Marc)
Two fixes and a hardening patch for PMU handling in pKVM, as one series
[2].
The first is Vincent's rework of his HPMN fix. It supersedes his earlier
posting [3]. Rather than read nr_event_counters through a different
accessor, the host copies the hypervisor's kvm_host_data before it's
deprivileged, so host_data_ptr() returns what was set up at init.
Otherwise, HPMN is 0 and a non-protected guest's event counters don't
count.
The second is the non-protected half of Oliver's patch from 2024 [4]. It
passes the host's PMU events to the hyp vCPU of a non-protected guest,
whose counters otherwise all read 0.
The third covers the protected half. It stops the host's counters while
a protected guest runs, so the host can't count the guest's cycles and
events. Side channels are outside pKVM's threat model, so it carries no
Fixes: tag.
Based on kvmarm/next (dd0bc00e3e920).
Cheers,
/fuad
[1] https://lore.kernel.org/all/20261028110739.2366566-1-fuad.tabba@xxxxxxxxx/
[2] https://lore.kernel.org/all/86bj8kzix4.wl-maz@xxxxxxxxxx/
[3] https://lore.kernel.org/all/20261023092007.3918848-1-vdonnefort@xxxxxxxxxx/
[4] https://lore.kernel.org/all/20240305184840.636212-2-oliver.upton@xxxxxxxxx/
Fuad Tabba (1):
KVM: arm64: Disable host PMU counters for protected guests
Oliver Upton (1):
KVM: arm64: Pass the PMU events to the hyp vCPU of non-protected
guests
Vincent Donnefort (1):
KVM: arm64: Synchronise kvm_host_data before host deprivileging
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 11 +++++++++++
arch/arm64/kvm/hyp/nvhe/switch.c | 24 ++++++++++++++++++++++++
arch/arm64/kvm/pkvm.c | 6 ++++++
3 files changed, 41 insertions(+)
base-commit: dd0bc00e3e9201fd49b62ff9cc07890c89003afe
--
2.47.3