summaryrefslogtreecommitdiff
path: root/arch/powerpc/kvm/book3s_pr.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-08-13 10:44:41 (GMT)
committerAlexander Graf <agraf@suse.de>2012-10-05 21:38:46 (GMT)
commit7ee788556bf395a8ef413bea33494df29a3409e0 (patch)
treedfc85c7287cb634cb0c6d3e367c8139fef01cf78 /arch/powerpc/kvm/book3s_pr.c
parent206c2ed7f1ea55222bde2954ee3d65c2e9cfb750 (diff)
downloadlinux-fsl-qoriq-7ee788556bf395a8ef413bea33494df29a3409e0.tar.xz
KVM: PPC: Add return value in prepare_to_enter
Our prepare_to_enter helper wants to be able to return in more circumstances to the host than only when an interrupt is pending. Broaden the interface a bit and move even more generic code to the generic helper. Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm/book3s_pr.c')
-rw-r--r--arch/powerpc/kvm/book3s_pr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index 1ff0d6c..71fa0f1 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -589,6 +589,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
unsigned int exit_nr)
{
int r = RESUME_HOST;
+ int s;
vcpu->stat.sum_exits++;
@@ -862,10 +863,10 @@ program_interrupt:
* again due to a host external interrupt.
*/
local_irq_disable();
- if (kvmppc_prepare_to_enter(vcpu)) {
+ s = kvmppc_prepare_to_enter(vcpu);
+ if (s <= 0) {
local_irq_enable();
- run->exit_reason = KVM_EXIT_INTR;
- r = -EINTR;
+ r = s;
} else {
kvmppc_lazy_ee_enable();
}
@@ -1074,10 +1075,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
* a host external interrupt.
*/
local_irq_disable();
- if (kvmppc_prepare_to_enter(vcpu)) {
+ ret = kvmppc_prepare_to_enter(vcpu);
+ if (ret <= 0) {
local_irq_enable();
- kvm_run->exit_reason = KVM_EXIT_INTR;
- ret = -EINTR;
goto out;
}