ANDROID: KVM: arm64: Do not advertise SVE capability in protected mode
SVE implementation isn't complete yet in protected, but the capability is there. Ensure that it's not available in protected mode. Bug: 251744418 Signed-off-by: Fuad Tabba <tabba@google.com> Change-Id: I905736f88f50c1d1be9ff22a86df61ff5018c8cd
This commit is contained in:
@@ -296,7 +296,7 @@ static int kvm_check_extension(struct kvm *kvm, long ext)
|
||||
r = get_kvm_ipa_limit();
|
||||
break;
|
||||
case KVM_CAP_ARM_SVE:
|
||||
r = system_supports_sve();
|
||||
r = system_supports_sve() && !is_protected_kvm_enabled();
|
||||
break;
|
||||
case KVM_CAP_ARM_PTRAUTH_ADDRESS:
|
||||
case KVM_CAP_ARM_PTRAUTH_GENERIC:
|
||||
|
||||
@@ -338,15 +338,11 @@ static int copy_features(struct kvm_vcpu *shadow_vcpu, struct kvm_vcpu *host_vcp
|
||||
/*
|
||||
* Check if remaining features are allowed:
|
||||
* - Performance Monitoring
|
||||
* - Scalable Vectors
|
||||
* - Pointer Authentication
|
||||
*/
|
||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_PMUVER), PVM_ID_AA64DFR0_ALLOW))
|
||||
set_bit(KVM_ARM_VCPU_PMU_V3, allowed_features);
|
||||
|
||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_SVE), PVM_ID_AA64PFR0_ALLOW))
|
||||
set_bit(KVM_ARM_VCPU_SVE, allowed_features);
|
||||
|
||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_API), PVM_ID_AA64ISAR1_ALLOW) &&
|
||||
FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_APA), PVM_ID_AA64ISAR1_ALLOW))
|
||||
set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
|
||||
|
||||
@@ -89,8 +89,8 @@ static u64 get_pvm_id_aa64pfr0(const struct kvm_vcpu *vcpu)
|
||||
u64 set_mask = 0;
|
||||
u64 allow_mask = PVM_ID_AA64PFR0_ALLOW;
|
||||
|
||||
if (!vcpu_has_sve(vcpu))
|
||||
allow_mask &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_SVE);
|
||||
/* SVE not supported for now. */
|
||||
allow_mask &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_SVE);
|
||||
|
||||
set_mask |= get_restricted_features_unsigned(id_aa64pfr0_el1_sys_val,
|
||||
PVM_ID_AA64PFR0_RESTRICT_UNSIGNED);
|
||||
|
||||
Reference in New Issue
Block a user