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 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/accel/hvf/hvf-mem.c b/accel/hvf/hvf-mem.c index 2f70ceb307..60ece20eb4 100644 --- a/accel/hvf/hvf-mem.c +++ b/accel/hvf/hvf-mem.c @@ -180,6 +180,12 @@ static void hvf_set_dirty_tracking(MemoryRegionSection *section, bool on) { HVFSlot *slot; + if (!memory_region_is_ram(section->mr) || + memory_region_is_rom(section->mr)) { + /* 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)