From: Peter Xu Date: Wed, 19 Jan 2022 08:09:15 +0000 (+0800) Subject: migration: No off-by-one for pss->page update in host page size X-Git-Tag: v7.0.0-rc0~71^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=258f5c9825a9fb77aeae8a9d8c0877e714c090e2;p=thirdparty%2Fqemu.git migration: No off-by-one for pss->page update in host page size We used to do off-by-one fixup for pss->page when finished one host huge page transfer. That seems to be unnecesary at all. Drop it. Cc: Keqian Zhu Cc: Kunkun Jiang Cc: Andrey Gruzdev Signed-off-by: Peter Xu Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- diff --git a/migration/ram.c b/migration/ram.c index ca879c744f7..58adcaf4301 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1617,7 +1617,7 @@ static int ram_save_release_protection(RAMState *rs, PageSearchStatus *pss, /* Check if page is from UFFD-managed region. */ if (pss->block->flags & RAM_UF_WRITEPROTECT) { void *page_address = pss->block->host + (start_page << TARGET_PAGE_BITS); - uint64_t run_length = (pss->page - start_page + 1) << TARGET_PAGE_BITS; + uint64_t run_length = (pss->page - start_page) << TARGET_PAGE_BITS; /* Flush async buffers before un-protect. */ qemu_fflush(rs->f); @@ -2230,7 +2230,7 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss) offset_in_ramblock(pss->block, ((ram_addr_t)pss->page) << TARGET_PAGE_BITS)); /* The offset we leave with is the min boundary of host page and block */ - pss->page = MIN(pss->page, hostpage_boundary) - 1; + pss->page = MIN(pss->page, hostpage_boundary); res = ram_save_release_protection(rs, pss, start_page); return (res < 0 ? res : pages);