[PATCH 0/3] KVM: arm64: Fix PMU handling in pKVM

From: Fuad Tabba

Date: Tue Oct 27 2026 - 04:12:00 EST


Hi folks,

Two fixes and a hardening patch for PMU handling in pKVM, as one series
[1].

The first is Vincent's rework of his HPMN fix. It supersedes his earlier
posting [2]. Rather than read nr_event_counters through a different
accessor, the host now 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 [3]. 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/86bj8kzix4.wl-maz@xxxxxxxxxx/
[2] https://lore.kernel.org/all/20261023092007.3918848-1-vdonnefort@xxxxxxxxxx/
[3] 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/include/asm/kvm_host.h | 1 +
arch/arm64/kvm/debug.c | 4 +++-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 11 +++++++++++
arch/arm64/kvm/hyp/nvhe/switch.c | 24 ++++++++++++++++++++++++
arch/arm64/kvm/pkvm.c | 6 ++++++
5 files changed, 45 insertions(+), 1 deletion(-)


base-commit: dd0bc00e3e9201fd49b62ff9cc07890c89003afe
--
2.47.3