summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorXu, Anthony <anthony.xu@intel.com>2017-03-22 17:53:35 +0000
committerPaolo Bonzini <pbonzini@redhat.com>2017-03-24 11:48:48 +0100
commitade9c1aac5292ff698fa550adebe794c37d86cc9 (patch)
tree6184eae6a097d68d98d6a92f71dcfec837001958
parent08329701199449bde497570dcfdb9c86062baf20 (diff)
downloadfocaccia-qemu-ade9c1aac5292ff698fa550adebe794c37d86cc9.tar.gz
focaccia-qemu-ade9c1aac5292ff698fa550adebe794c37d86cc9.zip
clear pending status before calling memory commit
clear pending status before calling memory commit.
Otherwise when memory_region_finalize is called,
memory_region_transaction_depth is 0 and
memory_region_update_pending is true.
That's wrong.

Signed-off -by: Anthony Xu <anthony.xu@intel.com>

Message-Id: <4712D8F4B26E034E80552F30A67BE0B1A2E3D5@ORSMSX112.amr.corp.intel.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--memory.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/memory.c b/memory.c
index 64b0a605ef..4c95aaf39c 100644
--- a/memory.c
+++ b/memory.c
@@ -906,12 +906,6 @@ void memory_region_transaction_begin(void)
     ++memory_region_transaction_depth;
 }
 
-static void memory_region_clear_pending(void)
-{
-    memory_region_update_pending = false;
-    ioeventfd_update_pending = false;
-}
-
 void memory_region_transaction_commit(void)
 {
     AddressSpace *as;
@@ -927,14 +921,14 @@ void memory_region_transaction_commit(void)
             QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
                 address_space_update_topology(as);
             }
-
+            memory_region_update_pending = false;
             MEMORY_LISTENER_CALL_GLOBAL(commit, Forward);
         } else if (ioeventfd_update_pending) {
             QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
                 address_space_update_ioeventfds(as);
             }
+            ioeventfd_update_pending = false;
         }
-        memory_region_clear_pending();
    }
 }