summaryrefslogtreecommitdiff
path: root/arch/s390/kvm/interrupt.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-07-27 10:00:23 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-27 10:00:23 -0700
commitb0d8aa081bcb2d396a257ae5b3be8c1b3006bfa4 (patch)
treeb382c2be90cdb972edc7b334b5de8bd964b967f3 /arch/s390/kvm/interrupt.c
parent6948385cbd83201fb933125c1a578b29b456605d (diff)
parentcc04454fa81e93b5f1b5133950331639d2f59f85 (diff)
Merge branch 'kvm-updates-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm
* 'kvm-updates-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: KVM: ppc: fix invalidation of large guest pages KVM: s390: Fix possible host kernel bug on lctl(g) handling KVM: s390: Fix instruction naming for lctlg KVM: s390: Fix program check on interrupt delivery handling KVM: s390: Change guestaddr type in gaccess KVM: s390: Fix guest kconfig KVM: s390: Advertise KVM_CAP_USER_MEMORY KVM: ia64: Fix irq disabling leak in error handling code KVM: VMX: Fix undefined beaviour of EPT after reload kvm-intel.ko KVM: VMX: Fix bypass_guest_pf enabling when disable EPT in module parameter KVM: task switch: translate guest segment limit to virt-extension byte granular field KVM: Avoid instruction emulation when event delivery is pending KVM: task switch: use seg regs provided by subarch instead of reading from GDT KVM: task switch: segment base is linear address KVM: SVM: allow enabling/disabling NPT by reloading only the architecture module
Diffstat (limited to 'arch/s390/kvm/interrupt.c')
-rw-r--r--arch/s390/kvm/interrupt.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 11230b0db95..2960702b482 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -13,6 +13,7 @@
#include <asm/lowcore.h>
#include <asm/uaccess.h>
#include <linux/kvm_host.h>
+#include <linux/signal.h>
#include "kvm-s390.h"
#include "gaccess.h"
@@ -246,15 +247,10 @@ static void __do_deliver_interrupt(struct kvm_vcpu *vcpu,
default:
BUG();
}
-
if (exception) {
- VCPU_EVENT(vcpu, 1, "%s", "program exception while delivering"
- " interrupt");
- kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
- if (inti->type == KVM_S390_PROGRAM_INT) {
- printk(KERN_WARNING "kvm: recursive program check\n");
- BUG();
- }
+ printk("kvm: The guest lowcore is not mapped during interrupt "
+ "delivery, killing userspace\n");
+ do_exit(SIGKILL);
}
}
@@ -277,14 +273,11 @@ static int __try_deliver_ckc_interrupt(struct kvm_vcpu *vcpu)
__LC_EXT_NEW_PSW, sizeof(psw_t));
if (rc == -EFAULT)
exception = 1;
-
if (exception) {
- VCPU_EVENT(vcpu, 1, "%s", "program exception while delivering" \
- " ckc interrupt");
- kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
- return 0;
+ printk("kvm: The guest lowcore is not mapped during interrupt "
+ "delivery, killing userspace\n");
+ do_exit(SIGKILL);
}
-
return 1;
}