From e56ba1878fefe7babff76ff399311ae5e399c5c5 Mon Sep 17 00:00:00 2001 From: Steve Sistare Date: Fri, 7 Mar 2025 12:55:52 -0800 Subject: [PATCH] pflash: fix cpr During normal migration, new QEMU creates and initializes memory regions, then loads the preserved contents of the region from vmstate. During CPR, memory regions are preserved in place, then the realize method initializes the regions contents, losing the old contents. To fix, skip the re-init during CPR. Signed-off-by: Steve Sistare Reviewed-by: Fabiano Rosas Message-ID: <1741380954-341079-3-git-send-email-steven.sistare@oracle.com> Signed-off-by: Fabiano Rosas --- hw/block/block.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/block/block.c b/hw/block/block.c index 1d405e02bf..2e10611d95 100644 --- a/hw/block/block.c +++ b/hw/block/block.c @@ -12,6 +12,7 @@ #include "system/blockdev.h" #include "system/block-backend.h" #include "hw/block/block.h" +#include "migration/cpr.h" #include "qapi/error.h" #include "qapi/qapi-types-block.h" @@ -66,6 +67,10 @@ bool blk_check_size_and_read_all(BlockBackend *blk, DeviceState *dev, int ret; g_autofree char *dev_id = NULL; + if (cpr_is_incoming()) { + return true; + } + blk_len = blk_getlength(blk); if (blk_len < 0) { error_setg_errno(errp, -blk_len, -- 2.39.5