On Fri, 20 Oct 2023 21:40:40 +0000, Raghavendra Rao Ananta wrote: > The goal of this series is to allow userspace to limit the number > of PMU event counters on the vCPU. We need this to support migration > across systems that implement different numbers of counters. > > The number of PMU event counters is indicated in PMCR_EL0.N. > For a vCPU with PMUv3 configured, its value will be the same as > the current PE by default. Userspace can set PMCR_EL0.N for the > vCPU to any value even with the current KVM using KVM_SET_ONE_REG. > However, it is practically unsupported, as KVM resets PMCR_EL0.N > to the host value on vCPU reset and some KVM code uses the host > value to identify (un)implemented event counters on the vCPU. > > [...] I've applied this with Marc + I's fixes. I'm happy to toss any fixes on top of this series if folks spot issues. [01/13] KVM: arm64: PMU: Introduce helpers to set the guest's PMU https://git.kernel.org/kvmarm/kvmarm/c/1616ca6f3c10 [02/13] KVM: arm64: PMU: Set the default PMU for the guest before vCPU reset https://git.kernel.org/kvmarm/kvmarm/c/427733579744 [03/13] KVM: arm64: PMU: Add a helper to read a vCPU's PMCR_EL0 https://git.kernel.org/kvmarm/kvmarm/c/57fc267f1b5c [04/13] KVM: arm64: PMU: Set PMCR_EL0.N for vCPU based on the associated PMU https://git.kernel.org/kvmarm/kvmarm/c/4d20debf9ca1 [05/13] KVM: arm64: Add {get,set}_user for PM{C,I}NTEN{SET,CLR}, PMOVS{SET,CLR} https://git.kernel.org/kvmarm/kvmarm/c/a45f41d754e0 [06/13] KVM: arm64: Sanitize PM{C,I}NTEN{SET,CLR}, PMOVS{SET,CLR} before first run https://git.kernel.org/kvmarm/kvmarm/c/27131b199f9f [07/13] KVM: arm64: PMU: Allow userspace to limit PMCR_EL0.N for the guest https://git.kernel.org/kvmarm/kvmarm/c/ea9ca904d24f [08/13] tools: Import arm_pmuv3.h https://git.kernel.org/kvmarm/kvmarm/c/9f4b3273dfbe [09/13] KVM: selftests: aarch64: Introduce vpmu_counter_access test https://git.kernel.org/kvmarm/kvmarm/c/8d0aebe1ca2b [10/13] KVM: selftests: aarch64: vPMU register test for implemented counters https://git.kernel.org/kvmarm/kvmarm/c/ada1ae68262d [11/13] KVM: selftests: aarch64: vPMU register test for unimplemented counters https://git.kernel.org/kvmarm/kvmarm/c/e1cc87206348 [12/13] KVM: selftests: aarch64: vPMU test for validating user accesses https://git.kernel.org/kvmarm/kvmarm/c/62708be351fe -- Best, Oliver