mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
KVM: arm64: Hoist SVE check into KVM_ARM_VCPU_INIT ioctl handler
Test that the system supports SVE before ever getting to kvm_reset_vcpu(). Link: https://lore.kernel.org/r/20230920195036.1169791-4-oliver.upton@linux.dev Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
This commit is contained in:
parent
9116db11fe
commit
be9c0c0183
|
|
@ -1200,6 +1200,9 @@ static unsigned long system_supported_vcpu_features(void)
|
|||
if (!kvm_arm_support_pmu_v3())
|
||||
clear_bit(KVM_ARM_VCPU_PMU_V3, &features);
|
||||
|
||||
if (!system_supports_sve())
|
||||
clear_bit(KVM_ARM_VCPU_SVE, &features);
|
||||
|
||||
return features;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,11 +73,8 @@ int __init kvm_arm_init_sve(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int kvm_vcpu_enable_sve(struct kvm_vcpu *vcpu)
|
||||
static void kvm_vcpu_enable_sve(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
if (!system_supports_sve())
|
||||
return -EINVAL;
|
||||
|
||||
vcpu->arch.sve_max_vl = kvm_sve_max_vl;
|
||||
|
||||
/*
|
||||
|
|
@ -86,8 +83,6 @@ static int kvm_vcpu_enable_sve(struct kvm_vcpu *vcpu)
|
|||
* kvm_arm_vcpu_finalize(), which freezes the configuration.
|
||||
*/
|
||||
vcpu_set_flag(vcpu, GUEST_HAS_SVE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -231,11 +226,8 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
|||
}
|
||||
|
||||
if (!kvm_arm_vcpu_sve_finalized(vcpu)) {
|
||||
if (test_bit(KVM_ARM_VCPU_SVE, vcpu->arch.features)) {
|
||||
ret = kvm_vcpu_enable_sve(vcpu);
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
if (test_bit(KVM_ARM_VCPU_SVE, vcpu->arch.features))
|
||||
kvm_vcpu_enable_sve(vcpu);
|
||||
} else {
|
||||
kvm_vcpu_reset_sve(vcpu);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user