Loading arch_init.c +1 −14 Original line number Diff line number Diff line Loading @@ -238,20 +238,7 @@ static uint64_t bytes_transferred; static ram_addr_t ram_save_remaining(void) { RAMBlock *block; ram_addr_t count = 0; QLIST_FOREACH(block, &ram_list.blocks, next) { ram_addr_t addr; for (addr = 0; addr < block->length; addr += TARGET_PAGE_SIZE) { if (memory_region_get_dirty(block->mr, addr, TARGET_PAGE_SIZE, DIRTY_MEMORY_MIGRATION)) { count++; } } } return count; return ram_list.dirty_pages; } uint64_t ram_bytes_remaining(void) Loading cpu-all.h +1 −0 Original line number Diff line number Diff line Loading @@ -486,6 +486,7 @@ typedef struct RAMBlock { typedef struct RAMList { uint8_t *phys_dirty; QLIST_HEAD(, RAMBlock) blocks; uint64_t dirty_pages; } RAMList; extern RAMList ram_list; Loading exec-obsolete.h +10 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,11 @@ static inline int cpu_physical_memory_get_dirty(ram_addr_t start, static inline int cpu_physical_memory_set_dirty_flags(ram_addr_t addr, int dirty_flags) { if ((dirty_flags & MIGRATION_DIRTY_FLAG) && !cpu_physical_memory_get_dirty(addr, TARGET_PAGE_SIZE, MIGRATION_DIRTY_FLAG)) { ram_list.dirty_pages++; } return ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] |= dirty_flags; } Loading @@ -87,6 +92,11 @@ static inline int cpu_physical_memory_clear_dirty_flags(ram_addr_t addr, { int mask = ~dirty_flags; if ((dirty_flags & MIGRATION_DIRTY_FLAG) && cpu_physical_memory_get_dirty(addr, TARGET_PAGE_SIZE, MIGRATION_DIRTY_FLAG)) { ram_list.dirty_pages--; } return ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] &= mask; } Loading Loading
arch_init.c +1 −14 Original line number Diff line number Diff line Loading @@ -238,20 +238,7 @@ static uint64_t bytes_transferred; static ram_addr_t ram_save_remaining(void) { RAMBlock *block; ram_addr_t count = 0; QLIST_FOREACH(block, &ram_list.blocks, next) { ram_addr_t addr; for (addr = 0; addr < block->length; addr += TARGET_PAGE_SIZE) { if (memory_region_get_dirty(block->mr, addr, TARGET_PAGE_SIZE, DIRTY_MEMORY_MIGRATION)) { count++; } } } return count; return ram_list.dirty_pages; } uint64_t ram_bytes_remaining(void) Loading
cpu-all.h +1 −0 Original line number Diff line number Diff line Loading @@ -486,6 +486,7 @@ typedef struct RAMBlock { typedef struct RAMList { uint8_t *phys_dirty; QLIST_HEAD(, RAMBlock) blocks; uint64_t dirty_pages; } RAMList; extern RAMList ram_list; Loading
exec-obsolete.h +10 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,11 @@ static inline int cpu_physical_memory_get_dirty(ram_addr_t start, static inline int cpu_physical_memory_set_dirty_flags(ram_addr_t addr, int dirty_flags) { if ((dirty_flags & MIGRATION_DIRTY_FLAG) && !cpu_physical_memory_get_dirty(addr, TARGET_PAGE_SIZE, MIGRATION_DIRTY_FLAG)) { ram_list.dirty_pages++; } return ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] |= dirty_flags; } Loading @@ -87,6 +92,11 @@ static inline int cpu_physical_memory_clear_dirty_flags(ram_addr_t addr, { int mask = ~dirty_flags; if ((dirty_flags & MIGRATION_DIRTY_FLAG) && cpu_physical_memory_get_dirty(addr, TARGET_PAGE_SIZE, MIGRATION_DIRTY_FLAG)) { ram_list.dirty_pages--; } return ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] &= mask; } Loading