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

Oliver Upton oliver.upton at linux.dev
Sat Jun 10 19:32:42 PDT 2023


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



More information about the linux-arm-kernel mailing list