It is no need to dirty-track MMIO regions or other readonly regions. Before we start or stop to dirty-track a memory region, check the type of the memory region. The region must be a writeable ram to be dirty-tracked.
Signed-off-by: Yan-Jie Wang <ubz...@gmail.com> --- accel/hvf/hvf-mem.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/accel/hvf/hvf-mem.c b/accel/hvf/hvf-mem.c index 2f70ceb307..b215386bc8 100644 --- a/accel/hvf/hvf-mem.c +++ b/accel/hvf/hvf-mem.c @@ -180,6 +180,11 @@ static void hvf_set_dirty_tracking(MemoryRegionSection *section, bool on) { HVFSlot *slot; + if (!memory_region_is_ram(section->mr) || memory_region_is_rom(section)) { + /* do not consider memory regions which are not directly writeable */ + return; + } + qemu_mutex_lock(&memlock); slot = hvf_find_overlap_slot( -- 2.32.0 (Apple Git-132)