Snapshot loading is supposed to be deterministic, so we shouldn't re-randomize the various seeds used.
Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com> --- hw/arm/boot.c | 3 ++- hw/i386/x86.c | 2 +- hw/mips/boston.c | 2 +- hw/openrisc/boot.c | 2 +- hw/riscv/boot.c | 2 +- hw/rx/rx-gdbsim.c | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 6a6f4c92c2..511f7b22b1 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -683,7 +683,8 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, * the DTB is copied again upon reset, even if addr points into RAM. */ rom_add_blob_fixed_as("dtb", fdt, size, addr, as); - qemu_register_reset(qemu_fdt_randomize_seeds, rom_ptr_for_as(as, addr, size)); + qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, + rom_ptr_for_as(as, addr, size)); g_free(fdt); diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 1148f70c03..bd50a064a3 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -1111,7 +1111,7 @@ void x86_load_linux(X86MachineState *x86ms, setup_data->type = cpu_to_le32(SETUP_RNG_SEED); setup_data->len = cpu_to_le32(RNG_SEED_LENGTH); qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); - qemu_register_reset(reset_rng_seed, setup_data); + qemu_register_reset_nosnapshotload(reset_rng_seed, setup_data); fw_cfg_add_bytes_callback(fw_cfg, FW_CFG_KERNEL_DATA, reset_rng_seed, NULL, setup_data, kernel, kernel_size, true); } else { diff --git a/hw/mips/boston.c b/hw/mips/boston.c index a560ce0324..cab63f43bf 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -811,7 +811,7 @@ static void boston_mach_init(MachineState *machine) /* Calculate real fdt size after filter */ dt_size = fdt_totalsize(dtb_load_data); rom_add_blob_fixed("dtb", dtb_load_data, dt_size, dtb_paddr); - qemu_register_reset(qemu_fdt_randomize_seeds, + qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, rom_ptr(dtb_paddr, dt_size)); } else { /* Try to load file as FIT */ diff --git a/hw/openrisc/boot.c b/hw/openrisc/boot.c index 8b9f11b6d8..007e80cd5a 100644 --- a/hw/openrisc/boot.c +++ b/hw/openrisc/boot.c @@ -112,7 +112,7 @@ uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start, rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr, &address_space_memory); - qemu_register_reset(qemu_fdt_randomize_seeds, + qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, rom_ptr_for_as(&address_space_memory, fdt_addr, fdtsize)); return fdt_addr; diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index aaecf21543..c389edb3cd 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -242,7 +242,7 @@ uint64_t riscv_load_fdt(hwaddr dram_base, uint64_t mem_size, void *fdt) rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr, &address_space_memory); - qemu_register_reset(qemu_fdt_randomize_seeds, + qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, rom_ptr_for_as(&address_space_memory, fdt_addr, fdtsize)); return fdt_addr; diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c index 198d048964..47c17026c7 100644 --- a/hw/rx/rx-gdbsim.c +++ b/hw/rx/rx-gdbsim.c @@ -149,7 +149,7 @@ static void rx_gdbsim_init(MachineState *machine) dtb_offset = ROUND_DOWN(machine->ram_size - dtb_size, 16); rom_add_blob_fixed("dtb", dtb, dtb_size, SDRAM_BASE + dtb_offset); - qemu_register_reset(qemu_fdt_randomize_seeds, + qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, rom_ptr(SDRAM_BASE + dtb_offset, dtb_size)); /* Set dtb address to R1 */ RX_CPU(first_cpu)->env.regs[1] = SDRAM_BASE + dtb_offset; -- 2.37.3