diff options
Diffstat (limited to 'arch/arm64')
-rw-r--r-- | arch/arm64/include/asm/kvm_psci.h | 2 | ||||
-rw-r--r-- | arch/arm64/kvm/handle_exit.c | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/arch/arm64/include/asm/kvm_psci.h b/arch/arm64/include/asm/kvm_psci.h index e25c658a757b..bc39e557c56c 100644 --- a/arch/arm64/include/asm/kvm_psci.h +++ b/arch/arm64/include/asm/kvm_psci.h | |||
@@ -22,6 +22,6 @@ | |||
22 | #define KVM_ARM_PSCI_0_2 2 | 22 | #define KVM_ARM_PSCI_0_2 2 |
23 | 23 | ||
24 | int kvm_psci_version(struct kvm_vcpu *vcpu); | 24 | int kvm_psci_version(struct kvm_vcpu *vcpu); |
25 | bool kvm_psci_call(struct kvm_vcpu *vcpu); | 25 | int kvm_psci_call(struct kvm_vcpu *vcpu); |
26 | 26 | ||
27 | #endif /* __ARM64_KVM_PSCI_H__ */ | 27 | #endif /* __ARM64_KVM_PSCI_H__ */ |
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index 7bc41eab4c64..182415e1a952 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c | |||
@@ -30,11 +30,15 @@ typedef int (*exit_handle_fn)(struct kvm_vcpu *, struct kvm_run *); | |||
30 | 30 | ||
31 | static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) | 31 | static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) |
32 | { | 32 | { |
33 | if (kvm_psci_call(vcpu)) | 33 | int ret; |
34 | |||
35 | ret = kvm_psci_call(vcpu); | ||
36 | if (ret < 0) { | ||
37 | kvm_inject_undefined(vcpu); | ||
34 | return 1; | 38 | return 1; |
39 | } | ||
35 | 40 | ||
36 | kvm_inject_undefined(vcpu); | 41 | return ret; |
37 | return 1; | ||
38 | } | 42 | } |
39 | 43 | ||
40 | static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) | 44 | static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) |