kvm: Flush coalesced mmio buffer on IO window exits
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 21 Jan 2011 20:48:19 +0000 (21:48 +0100)
committerMarcelo Tosatti <mtosatti@redhat.com>
Sun, 23 Jan 2011 04:27:22 +0000 (02:27 -0200)
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>
kvm-all.c

index 3a1f63b5b19edc75a8ba0a3eecb506f8ff7cfde0..9976762f87b48ec6e3a184455b3c8a57a581a88d 100644 (file)
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -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: