diff options
author | Jan Kiszka | 2011-01-21 21:48:19 +0100 |
---|---|---|
committer | Marcelo Tosatti | 2011-01-23 05:27:22 +0100 |
commit | b0c883b5e079a4f719c43f875034e5e665ccc232 (patch) | |
tree | e7d2744d7a64748b0a7ba7cc032c411432ae1a6d /kvm-all.c | |
parent | kvm: x86: Rework identity map and TSS setup for larger BIOS sizes (diff) | |
download | qemu-b0c883b5e079a4f719c43f875034e5e665ccc232.tar.gz qemu-b0c883b5e079a4f719c43f875034e5e665ccc232.tar.xz qemu-b0c883b5e079a4f719c43f875034e5e665ccc232.zip |
kvm: Flush coalesced mmio buffer on IO window exits
We must flush pending mmio writes if we leave kvm_cpu_exec for an IO
window. Otherwise we risk to loose those requests when migrating to a
different host during that window.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -918,6 +918,8 @@ int kvm_cpu_exec(CPUState *env) cpu_single_env = env; kvm_arch_post_run(env, run); + kvm_flush_coalesced_mmio_buffer(); + if (ret == -EINTR || ret == -EAGAIN) { cpu_exit(env); DPRINTF("io window exit\n"); @@ -930,8 +932,6 @@ int kvm_cpu_exec(CPUState *env) abort(); } - kvm_flush_coalesced_mmio_buffer(); - ret = 0; /* exit loop */ switch (run->exit_reason) { case KVM_EXIT_IO: |