linux/arch/s390/kvm
Christian Borntraeger 0eaeafa10f [S390] s390-kvm: leave sie context on work. Removes preemption requirement
From: Martin Schwidefsky <schwidefsky@de.ibm.com>

This patch fixes a bug with cpu bound guest on kvm-s390. Sometimes it
was impossible to deliver a signal to a spinning guest. We used
preemption as a circumvention. The preemption notifiers called
vcpu_load, which checked for pending signals and triggered a host
intercept. But even with preemption, a sigkill was not delivered
immediately.

This patch changes the low level host interrupt handler to check for the
SIE  instruction, if TIF_WORK is set. In that case we change the
instruction pointer of the return PSW to rerun the vcpu_run loop. The kvm
code sees an intercept reason 0 if that happens. This patch adds accounting
for these types of intercept as well.

The advantages:
- works with and without preemption
- signals are delivered immediately
- much better host latencies without preemption

Acked-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-05-07 09:23:01 +02:00
..
diag.c KVM: s390: intercepts for diagnose instructions 2008-04-27 12:00:46 +03:00
gaccess.h KVM: s390: arch backend for the kvm kernel module 2008-04-27 12:00:42 +03:00
intercept.c [S390] s390-kvm: leave sie context on work. Removes preemption requirement 2008-05-07 09:23:01 +02:00
interrupt.c KVM: hlt emulation should take in-kernel APIC/PIT timers into account 2008-04-27 12:04:11 +03:00
Kconfig [S390] s390-kvm: leave sie context on work. Removes preemption requirement 2008-05-07 09:23:01 +02:00
kvm-s390.c [S390] s390-kvm: leave sie context on work. Removes preemption requirement 2008-05-07 09:23:01 +02:00
kvm-s390.h KVM: s390: intercepts for diagnose instructions 2008-04-27 12:00:46 +03:00
Makefile KVM: s390: intercepts for diagnose instructions 2008-04-27 12:00:46 +03:00
priv.c [S390] Move stfl to system.h and delete duplicated version. 2008-04-30 13:38:46 +02:00
sie64a.S KVM: s390: arch backend for the kvm kernel module 2008-04-27 12:00:42 +03:00
sigp.c KVM: s390: interprocessor communication via sigp 2008-04-27 12:00:46 +03:00