diff options
author | Paul Mackerras <paulus@samba.org> | 2013-09-20 00:52:41 -0400 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-10-17 08:45:02 -0400 |
commit | f3271d4c9011bf5f36a65b9b5e7caaef4280686d (patch) | |
tree | 87ebaa857ae61b6db67cad0cae978b69e0cd4f21 /arch/powerpc/kvm | |
parent | 388cc6e133132e6c9b64e7d5361114a3a7d57663 (diff) |
KVM: PPC: Book3S HV: Don't crash host on unknown guest interrupt
If we come out of a guest with an interrupt that we don't know about,
instead of crashing the host with a BUG(), we now return to userspace
with the exit reason set to KVM_EXIT_UNKNOWN and the trap vector in
the hw.hardware_exit_reason field of the kvm_run structure, as is done
on x86. Note that run->exit_reason is already set to KVM_EXIT_UNKNOWN
at the beginning of kvmppc_handle_exit().
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r-- | arch/powerpc/kvm/book3s_hv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index e42fb5448608..de9520f9241f 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c | |||
@@ -709,8 +709,8 @@ static int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
709 | printk(KERN_EMERG "trap=0x%x | pc=0x%lx | msr=0x%llx\n", | 709 | printk(KERN_EMERG "trap=0x%x | pc=0x%lx | msr=0x%llx\n", |
710 | vcpu->arch.trap, kvmppc_get_pc(vcpu), | 710 | vcpu->arch.trap, kvmppc_get_pc(vcpu), |
711 | vcpu->arch.shregs.msr); | 711 | vcpu->arch.shregs.msr); |
712 | run->hw.hardware_exit_reason = vcpu->arch.trap; | ||
712 | r = RESUME_HOST; | 713 | r = RESUME_HOST; |
713 | BUG(); | ||
714 | break; | 714 | break; |
715 | } | 715 | } |
716 | 716 | ||