Re: [PATCH 2/2] KVM: arm64: PMU: Disallow vPMU on non-uniform PMUVer systems

Oliver Upton
2023-06-11T02:33:34Z

On Fri, Jun 09, 2023 at 11:15:20PM -0700, Reiji Watanabe wrote:
> Disallow userspace from configuring vPMU for guests on systems
> where the PMUVer is not uniform across all PEs.
> KVM has not been advertising PMUv3 to the guests with vPMU on
> such systems anyway, and such systems would be extremely
> uncommon and unlikely to even use KVM.

Ok... Now your changes are starting to make sense. This patch is rather
relevant context for interpreting the other PMU fix [*], so I'd
recommend you send this as a combined series going forward.

[*] https://lore.kernel.org/kvmarm/20230610194510.4146549-1-reijiw@google.com/

> diff --git a/include/kvm/arm_pmu.h b/include/kvm/arm_pmu.h
> index eef17de966da..af1fe2b53fbb 100644
> --- a/include/kvm/arm_pmu.h
> +++ b/include/kvm/arm_pmu.h
> @@ -105,6 +105,14 @@ void kvm_vcpu_pmu_restore_host(struct kvm_vcpu *vcpu);
>
> u8 kvm_arm_pmu_get_pmuver_limit(void);
>
> +static inline void kvm_arm_set_support_pmu_v3(void)
> +{
> + u8 pmuver = kvm_arm_pmu_get_pmuver_limit();
> +
> + if (pmu_v3_is_supported(pmuver))
> + static_branch_enable(&kvm_arm_pmu_available);
> +}
> +
> #else
> struct kvm_pmu {
> };
> @@ -114,6 +122,8 @@ static inline bool kvm_arm_support_pmu_v3(void)
> return false;
> }
>
> +static inline void kvm_arm_set_support_pmu_v3(void) {};
> +

nit: Give this thing a more generic name (e.g. kvm_pmu_init()) in case
we wind up needing more boot-time PMU initialization.

--
Thanks,
Oliver