mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 03:13:44 +08:00
memory: Don't call memory_region_update_coalesced_range if nothing changed
With huge number of PCI devices in the system (for example, 200 virtio-blk-pci), this unconditional call can slow down emulation of irrelevant PCI operations drastically, such as a BAR update on a device that has no coalescing region. So avoid it. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
feca4ac18b
commit
ab5b3db5d7
7
memory.c
7
memory.c
@ -1332,6 +1332,7 @@ void memory_region_add_coalescing(MemoryRegion *mr,
|
||||
void memory_region_clear_coalescing(MemoryRegion *mr)
|
||||
{
|
||||
CoalescedMemoryRange *cmr;
|
||||
bool updated = false;
|
||||
|
||||
qemu_flush_coalesced_mmio_buffer();
|
||||
mr->flush_coalesced_mmio = false;
|
||||
@ -1340,8 +1341,12 @@ void memory_region_clear_coalescing(MemoryRegion *mr)
|
||||
cmr = QTAILQ_FIRST(&mr->coalesced);
|
||||
QTAILQ_REMOVE(&mr->coalesced, cmr, link);
|
||||
g_free(cmr);
|
||||
updated = true;
|
||||
}
|
||||
|
||||
if (updated) {
|
||||
memory_region_update_coalesced_range(mr);
|
||||
}
|
||||
memory_region_update_coalesced_range(mr);
|
||||
}
|
||||
|
||||
void memory_region_set_flush_coalesced(MemoryRegion *mr)
|
||||
|
Loading…
Reference in New Issue
Block a user