diff options
author | Carsten Otte <cotte@de.ibm.com> | 2008-05-21 13:37:37 +0200 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-06-06 21:08:26 +0300 |
commit | 0ff318674503ce3787ef62d84f4d948db204b268 (patch) | |
tree | 7e3f964df1961aa858bbaf28aa2d455d156cdcc9 /arch/s390 | |
parent | 71cde5879f10b639506bc0b9f29a89f58b42a17e (diff) | |
download | linux-0ff318674503ce3787ef62d84f4d948db204b268.tar.gz linux-0ff318674503ce3787ef62d84f4d948db204b268.tar.bz2 linux-0ff318674503ce3787ef62d84f4d948db204b268.zip |
KVM: s390: fix interrupt delivery
The current code delivers pending interrupts before it checks for
need_resched. On a busy host, this can lead to a longer interrupt
latency if the interrupt is injected while the process is scheduled
away. This patch moves delivering the interrupt _after_ schedule(),
which makes more sense.
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 40e4f2de7320..ded27c7777cc 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -435,6 +435,8 @@ static void __vcpu_run(struct kvm_vcpu *vcpu) if (test_thread_flag(TIF_MCCK_PENDING)) s390_handle_mcck(); + kvm_s390_deliver_pending_interrupts(vcpu); + vcpu->arch.sie_block->icptcode = 0; local_irq_disable(); kvm_guest_enter(); @@ -480,7 +482,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) might_sleep(); do { - kvm_s390_deliver_pending_interrupts(vcpu); __vcpu_run(vcpu); rc = kvm_handle_sie_intercept(vcpu); } while (!signal_pending(current) && !rc); |