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@xxxxxxxxxx> > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> > --- > 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 >