]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
pflash: fix cpr
authorSteve Sistare <steven.sistare@oracle.com>
Fri, 7 Mar 2025 20:55:52 +0000 (12:55 -0800)
committerFabiano Rosas <farosas@suse.de>
Fri, 14 Mar 2025 12:29:19 +0000 (09:29 -0300)
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 <steven.sistare@oracle.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Message-ID: <1741380954-341079-3-git-send-email-steven.sistare@oracle.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
hw/block/block.c

index 1d405e02bf875c535300ea8af9d62e1df00636be..2e10611d95a6086b997eddaf4b7788927ec3e54a 100644 (file)
@@ -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,