memory_region_transaction_{begin|commit}() could be too big when finalizing a memory region. E.g., we should never attempt to update address space topology during the finalize() of a memory region. Provide helpers for further use.
Signed-off-by: Peter Xu <pet...@redhat.com> --- softmmu/memory.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/softmmu/memory.c b/softmmu/memory.c index bfedaf9c4d..725d57ec17 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1079,10 +1079,20 @@ static void address_space_update_topology(AddressSpace *as) address_space_set_flatview(as); } +static void memory_region_transaction_depth_inc(void) +{ + memory_region_transaction_depth++; +} + +static void memory_region_transaction_depth_dec(void) +{ + memory_region_transaction_depth--; +} + void memory_region_transaction_begin(void) { qemu_flush_coalesced_mmio_buffer(); - ++memory_region_transaction_depth; + memory_region_transaction_depth_inc(); } void memory_region_transaction_commit(void) @@ -1092,7 +1102,7 @@ void memory_region_transaction_commit(void) assert(memory_region_transaction_depth); assert(qemu_mutex_iothread_locked()); - --memory_region_transaction_depth; + memory_region_transaction_depth_dec(); if (!memory_region_transaction_depth) { if (memory_region_update_pending) { flatviews_reset(); -- 2.31.1