[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] kvm: Fix IRQ injection into full queue
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH] kvm: Fix IRQ injection into full queue |
Date: |
Sat, 30 May 2009 10:01:45 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
User space may only inject interrupts during kvm_arch_pre_run if
ready_for_interrupt_injection is set in kvm_run. But that field is
updated on exit from KVM_RUN, so we must ensure that we enter the
kernel after potentially queuing an interrupt, otherwise we risk to
loose one - like it happens with the current code against latest
kernel modules (since kvm-86) that started to queue only a single
interrupt.
Fix the problem by reordering kvm_cpu_exec.
Credits go to Gleb Natapov for analyzing the issue in details.
Signed-off-by: Jan Kiszka <address@hidden>
---
kvm-all.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kvm-all.c b/kvm-all.c
index 0827ae2..dc2ded5 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -564,14 +564,13 @@ int kvm_cpu_exec(CPUState *env)
dprintf("kvm_cpu_exec()\n");
do {
- kvm_arch_pre_run(env, run);
-
if (env->exit_request) {
dprintf("interrupt exit requested\n");
ret = 0;
break;
}
+ kvm_arch_pre_run(env, run);
ret = kvm_vcpu_ioctl(env, KVM_RUN, 0);
kvm_arch_post_run(env, run);
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH] kvm: Fix IRQ injection into full queue,
Jan Kiszka <=