Commit 7e484d27 authored by Oliver Upton's avatar Oliver Upton Committed by Marc Zyngier

KVM: arm64: Return NOT_SUPPORTED to guest for unknown PSCI version

A subsequent change to KVM will allow negative returns from SMCCC
handlers to exit to userspace. Make way for this change by explicitly
returning SMCCC_RET_NOT_SUPPORTED to the guest if the VM is configured
to use an unknown PSCI version. Add a WARN since this is undoubtedly a
KVM bug.
Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230404154050.2270077-11-oliver.upton@linux.dev
parent 821d935c
...@@ -435,6 +435,7 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) ...@@ -435,6 +435,7 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
int kvm_psci_call(struct kvm_vcpu *vcpu) int kvm_psci_call(struct kvm_vcpu *vcpu)
{ {
u32 psci_fn = smccc_get_function(vcpu); u32 psci_fn = smccc_get_function(vcpu);
int version = kvm_psci_version(vcpu);
unsigned long val; unsigned long val;
val = kvm_psci_check_allowed_function(vcpu, psci_fn); val = kvm_psci_check_allowed_function(vcpu, psci_fn);
...@@ -443,7 +444,7 @@ int kvm_psci_call(struct kvm_vcpu *vcpu) ...@@ -443,7 +444,7 @@ int kvm_psci_call(struct kvm_vcpu *vcpu)
return 1; return 1;
} }
switch (kvm_psci_version(vcpu)) { switch (version) {
case KVM_ARM_PSCI_1_1: case KVM_ARM_PSCI_1_1:
return kvm_psci_1_x_call(vcpu, 1); return kvm_psci_1_x_call(vcpu, 1);
case KVM_ARM_PSCI_1_0: case KVM_ARM_PSCI_1_0:
...@@ -453,6 +454,8 @@ int kvm_psci_call(struct kvm_vcpu *vcpu) ...@@ -453,6 +454,8 @@ int kvm_psci_call(struct kvm_vcpu *vcpu)
case KVM_ARM_PSCI_0_1: case KVM_ARM_PSCI_0_1:
return kvm_psci_0_1_call(vcpu); return kvm_psci_0_1_call(vcpu);
default: default:
return -EINVAL; WARN_ONCE(1, "Unknown PSCI version %d", version);
smccc_set_retval(vcpu, SMCCC_RET_NOT_SUPPORTED, 0, 0, 0);
return 1;
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment