mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
hw/loader: fix roms during 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 <steven.sistare@oracle.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Message-ID: <1741380954-341079-4-git-send-email-steven.sistare@oracle.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
e56ba1878f
commit
b42f28111e
1 changed files with 4 additions and 1 deletions
|
@ -51,6 +51,7 @@
|
|||
#include "trace.h"
|
||||
#include "hw/hw.h"
|
||||
#include "disas/disas.h"
|
||||
#include "migration/cpr.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "monitor/monitor.h"
|
||||
#include "system/reset.h"
|
||||
|
@ -1029,7 +1030,9 @@ static void *rom_set_mr(Rom *rom, Object *owner, const char *name, bool ro)
|
|||
vmstate_register_ram_global(rom->mr);
|
||||
|
||||
data = memory_region_get_ram_ptr(rom->mr);
|
||||
memcpy(data, rom->data, rom->datasize);
|
||||
if (!cpr_is_incoming()) {
|
||||
memcpy(data, rom->data, rom->datasize);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue