[PATCH v2 11/19] KVM: arm64: Move vcpu ON_UNSUPPORTED_CPU flag to the state flag set

Alexandru Elisei alexandru.elisei at arm.com
Wed Jun 15 06:14:19 PDT 2022


Hi,

On Fri, Jun 10, 2022 at 10:28:30AM +0100, Marc Zyngier wrote:
> The ON_UNSUPPORTED_CPU flag is only there to track the sad fact
> that we have ended-up on a CPU where we cannot really run.
> 
> Since this is only for the host kernel's use, move it to the state
> set.
> 
> Reviewed-by: Fuad Tabba <tabba at google.com>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
>  arch/arm64/include/asm/kvm_host.h | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
> index 4f147bdc5ce9..0c22514cb7c7 100644
> --- a/arch/arm64/include/asm/kvm_host.h
> +++ b/arch/arm64/include/asm/kvm_host.h
> @@ -519,6 +519,8 @@ struct kvm_vcpu_arch {
>  #define HOST_SVE_ENABLED	__vcpu_single_flag(sflags, BIT(0))
>  /* SME enabled for EL0 */
>  #define HOST_SME_ENABLED	__vcpu_single_flag(sflags, BIT(1))
> +/* Physical CPU not in supported_cpus */
> +#define ON_UNSUPPORTED_CPU	__vcpu_single_flag(sflags, BIT(2))

I'm a bit confused here. The ON_UNSUPPORTED_CPU flag ends up in sflags. The
comment for sflags says:

+	/* State flags for kernel bookkeeping, unused by the hypervisor code */
+	u64 sflags;

The ON_UNSUPPORT_CPU flag is used exclusively by KVM (it's only used by the
file arch/arm64/kvm/arm.c), so why is it part of a set of flags which are
supposed to be unused by the hypervisor code?

Thanks,
Alex

>  
>  /* Pointer to the vcpu's SVE FFR for sve_{save,load}_state() */
>  #define vcpu_sve_pffr(vcpu) (kern_hyp_va((vcpu)->arch.sve_state) +	\
> @@ -541,7 +543,6 @@ struct kvm_vcpu_arch {
>  })
>  
>  /* vcpu_arch flags field values: */
> -#define KVM_ARM64_ON_UNSUPPORTED_CPU	(1 << 15) /* Physical CPU not in supported_cpus */
>  #define KVM_ARM64_WFIT			(1 << 17) /* WFIT instruction trapped */
>  #define KVM_GUESTDBG_VALID_MASK (KVM_GUESTDBG_ENABLE | \
>  				 KVM_GUESTDBG_USE_SW_BP | \
> @@ -561,13 +562,13 @@ struct kvm_vcpu_arch {
>  #endif
>  
>  #define vcpu_on_unsupported_cpu(vcpu)					\
> -	((vcpu)->arch.flags & KVM_ARM64_ON_UNSUPPORTED_CPU)
> +	vcpu_get_flag(vcpu, ON_UNSUPPORTED_CPU)
>  
>  #define vcpu_set_on_unsupported_cpu(vcpu)				\
> -	((vcpu)->arch.flags |= KVM_ARM64_ON_UNSUPPORTED_CPU)
> +	vcpu_set_flag(vcpu, ON_UNSUPPORTED_CPU)
>  
>  #define vcpu_clear_on_unsupported_cpu(vcpu)				\
> -	((vcpu)->arch.flags &= ~KVM_ARM64_ON_UNSUPPORTED_CPU)
> +	vcpu_clear_flag(vcpu, ON_UNSUPPORTED_CPU)
>  
>  #define vcpu_gp_regs(v)		(&(v)->arch.ctxt.regs)
>  
> -- 
> 2.34.1
> 



More information about the linux-arm-kernel mailing list