Re: [PATCH v9 00/16] KVM: arm64: PMU: Use multiple host PMUs

Fuad Tabba <[email protected]>
Newsgroups dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.kvm,org.kernel.vger.linux-doc,org.kernel.vger.linux-hardening,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <CA+EHjTyAtAg=u61nwqGYPstRkq1qiBJ=Up_9e=J_3FUOONZ9YA@mail.gmail.com>
On Mon, 20 Jul 2026 at 06:39, Akihiko Odaki
<[email protected]> wrote:
...
> A QEMU patch that demonstrates the usage of the new attribute is
> available at:
> https://lore.kernel.org/qemu-devel/[email protected]/
> ("[PATCH RFC v4] target/arm/kvm: Choose PMU backend")
>
> Signed-off-by: Akihiko Odaki <[email protected]>

I didn't test with the QEMU patch, but I tested on QEMU: booting the
host and a KVM guest, plus the vpmu_counter_access and get-reg-list
KVM selftests under nvhe, vhe, andvhe with kvm-arm.mode=nested.

For the series:
Tested-by: Fuad Tabba < [email protected]>

Cheers,
/fuad

> ---
> Changes in v9:
> - Dropped patch
>   "KVM: arm64: Disallow vPMU when pPMUs do not cover all CPUs".
> - Added patch
>   "KVM: arm64: PMU: Stop updating MDCR_EL2.HPMN".
> - Added patch
>   "KVM: arm64: selftests: Cover PMU state in MDCR_EL2".
> - Added patch
>   "arm64: errata: Require Apple IMPDEF PMUv3 traps on all CPUs".
> - Added patch
>   "KVM: arm64: Don't clear vcpu->cpu in kvm_arch_vcpu_put()".
> - Noted that fixed-counters-only mode avoids relying on the default PMU.
> - Clarified why fixed-counters-only mode hides PMCEID.
> - Added patch "KVM: arm64: Serialize repeated vCPU initialization".
> - Added patch "KVM: arm64: PMU: Freeze counter count after first run".
> - Added patch
>   "KVM: arm64: selftests: Test SET_NR_COUNTERS after first run".
> - Added patch "KVM: arm64: PMU: Recreate events after MDCR_EL2 changes".
> - Clarified why extra IMPDEF PMUv3 trap support on a late CPU is safe.
> - Changed fixed-counters-only emulation to taint the kernel when it
>   encounters a CPU without a registered pPMU; see the commit message.
> - Added patch
>   "KVM: arm64: PMU: Keep implemented counter mask EL-independent".
> - Added a targeted bitfield helper type change to tools headers.
> - Link to v8: https://patch.msgid.link/[email protected]
>
> Changes in v8:
> - Added patch
>   "KVM: arm64: Disallow vPMU when pPMUs do not cover all CPUs".
> - Split patch "KVM: arm64: PMU: Introduce FIXED_COUNTERS_ONLY".
> - Documented the FEAT_PMUv3_ICNTR support plan.
> - Ensured KVM_ARM_VCPU_PMU_V3_FILTER and
>   KVM_ARM_VCPU_PMU_V3_FIXED_COUNTERS_ONLY are mutually exclusive.
> - Ensured KVM_ARM_VCPU_PMU_V3_SET_PMU and
>   KVM_ARM_VCPU_PMU_V3_FIXED_COUNTERS_ONLY are mutually exclusive.
> - Dropped the code to support KVM_ARM_VCPU_PMU_V3_SET_NR_COUNTERS for
>   KVM_ARM_VCPU_PMU_V3_FIXED_COUNTERS_ONLY.
> - Added a function to de-duplicate
>   "test_bit(KVM_ARCH_FLAG_PMU_V3_FIXED_COUNTERS_ONLY, ...)".
> - Link to v7: https://lore.kernel.org/r/[email protected]
>
> Changes in v7:
> - Fixed the vCPU run hang in test_fixed_counters_only().
> - Link to v6: https://lore.kernel.org/r/[email protected]
>
> Changes in v6:
> - Removed WARN_ON_ONCE() in kvm_pmu_create_perf_event(). It can be
>   triggered in kvm_arch_vcpu_load() before it checks supported_cpus.
> - Removed an extra lockdep assertion in kvm_arm_pmu_v3_get_attr().
> - Fixed error messages in test_fixed_counters_only().
> - Fixed the vCPU run in test_fixed_counters_only().
> - Link to v5: https://lore.kernel.org/r/[email protected]
>
> Changes in v5:
> - Rebased.
> - Fixed the order to clear KVM_ARCH_FLAG_PMU_V3_FIXED_COUNTERS_ONLY in
>   kvm_arm_pmu_v3_set_pmu().
> - Fixed the setting of KVM_ARM_VCPU_PMU_V3_IRQ in
>   test_fixed_counters_only().
> - Changed to WARN_ON_ONCE() when kvm_pmu_probe_armpmu() returns NULL in
>   kvm_pmu_create_perf_event(), which is no longer supposed to happen.
> - Link to v4: https://lore.kernel.org/r/[email protected]
>
> Changes in v4:
> - Extracted kvm_pmu_enabled_counter_mask() into a separate patch.
> - Added patch "KVM: arm64: PMU: Protect the list of PMUs with RCU".
> - Merged KVM_REQ_CREATE_PMU into KVM_REQ_RELOAD_PMU.
> - Added a check to avoid unnecessary KVM_REQ_RELOAD_PMU requests.
> - Dropped the change to avoid setting kvm_arm_set_default_pmu() when
>   KVM_ARM_VCPU_PMU_V3_FIXED_COUNTERS_ONLY is not set.
> - Link to v3: https://lore.kernel.org/r/[email protected]
>
> Changes in v3:
> - Renamed the attribute to KVM_ARM_VCPU_PMU_V3_FIXED_COUNTERS_ONLY.
> - Changed to request the creation of perf counters when loading vCPU.
> - Link to v2: https://lore.kernel.org/r/[email protected]
>
> Changes in v2:
> - Added the KVM_ARM_VCPU_PMU_V3_COMPOSITION attribute to opt in the
>   feature.
> - Added code to handle overflow.
> - Link to v1: https://lore.kernel.org/r/[email protected]
>
> ---
> Akihiko Odaki (15):
>       KVM: arm64: Serialize repeated vCPU initialization
>       KVM: arm64: PMU: Stop updating MDCR_EL2.HPMN
>       KVM: arm64: PMU: Freeze counter count after first run
>       KVM: arm64: selftests: Test SET_NR_COUNTERS after first run
>       KVM: arm64: PMU: Keep implemented counter mask EL-independent
>       KVM: arm64: PMU: Recreate events after MDCR_EL2 changes
>       tools headers: Use u* types for bitfield helpers
>       KVM: arm64: selftests: Cover PMU state in MDCR_EL2
>       arm64: errata: Require Apple IMPDEF PMUv3 traps on all CPUs
>       KVM: arm64: PMU: Protect the list of PMUs with RCU
>       KVM: arm64: PMU: Pass the pPMU to kvm_map_pmu_event()
>       KVM: arm64: PMU: Pass the target CPU to kvm_pmu_probe_armpmu()
>       KVM: arm64: PMU: Implement fixed-counters-only emulation
>       KVM: arm64: PMU: Introduce FIXED_COUNTERS_ONLY
>       KVM: arm64: selftests: Test PMU_V3_FIXED_COUNTERS_ONLY
>
> Oliver Upton (1):
>       KVM: arm64: Don't clear vcpu->cpu in kvm_arch_vcpu_put()
>
>  Documentation/virt/kvm/devices/vcpu.rst            |  30 ++-
>  arch/arm64/include/asm/kvm_host.h                  |   4 +
>  arch/arm64/include/uapi/asm/kvm.h                  |   1 +
>  arch/arm64/kernel/cpu_errata.c                     |   2 +-
>  arch/arm64/kvm/arm.c                               |  18 +-
>  arch/arm64/kvm/pmu-emul.c                          | 241 +++++++++++------
>  arch/arm64/kvm/reset.c                             |  16 +-
>  arch/arm64/kvm/sys_regs.c                          |  31 ++-
>  include/kvm/arm_pmu.h                              |   5 +
>  tools/arch/arm64/include/uapi/asm/kvm.h            |   1 +
>  tools/include/linux/bitfield.h                     |  26 +-
>  .../selftests/kvm/arm64/vpmu_counter_access.c      | 284 ++++++++++++++++++---
>  12 files changed, 510 insertions(+), 149 deletions(-)
> ---
> base-commit: cb9360ae6549120975f20887840fb33d47c13898
> change-id: 20250224-hybrid-01d5ff47edd2
>
> Best regards,
> --
> Akihiko Odaki <[email protected]>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.