mirror of https://github.com/xemu-project/xemu.git
hw/loongarch: virt: pass random seed to fdt
If the FDT contains /chosen/rng-seed, then the Linux RNG will use it to initialize early. Set this using the usual guest random number generation function. This is the same procedure that's done inb91b6b5a2c
("hw/microblaze: pass random seed to fdt"),e4b4f0b71c
("hw/riscv: virt: pass random seed to fdt"),c6fe3e6b4c
("hw/openrisc: virt: pass random seed to fdt"),67f7e426e5
("hw/i386: pass RNG seed via setup_data entry"),c287941a4d
("hw/rx: pass random seed to fdt"),5e19cc68fb
("hw/mips: boston: pass random seed to fdt"),6b23a67916
("hw/nios2: virt: pass random seed to fdt")c4b075318e
("hw/ppc: pass random seed to fdt"), and5242876f37
("hw/arm/virt: dt: add rng-seed property"). These earlier commits later were amended to rerandomize the RNG seed on snapshot load, but the LoongArch code somehow already does that, despite not having this patch here, presumably due to some lucky copy and pasting. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Song Gao <gaosong@loongson.cn> Message-Id: <20240905153316.2038769-1-Jason@zx2c4.com> Signed-off-by: Song Gao <gaosong@loongson.cn>
This commit is contained in:
parent
b3d4ef8348
commit
d9bd1ccbf1
|
@ -48,6 +48,7 @@
|
|||
#include "hw/block/flash.h"
|
||||
#include "hw/virtio/virtio-iommu.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/guest-random.h"
|
||||
|
||||
static bool virt_is_veiointc_enabled(LoongArchVirtMachineState *lvms)
|
||||
{
|
||||
|
@ -303,6 +304,7 @@ static void fdt_add_uart_node(LoongArchVirtMachineState *lvms,
|
|||
static void create_fdt(LoongArchVirtMachineState *lvms)
|
||||
{
|
||||
MachineState *ms = MACHINE(lvms);
|
||||
uint8_t rng_seed[32];
|
||||
|
||||
ms->fdt = create_device_tree(&lvms->fdt_size);
|
||||
if (!ms->fdt) {
|
||||
|
@ -316,6 +318,10 @@ static void create_fdt(LoongArchVirtMachineState *lvms)
|
|||
qemu_fdt_setprop_cell(ms->fdt, "/", "#address-cells", 0x2);
|
||||
qemu_fdt_setprop_cell(ms->fdt, "/", "#size-cells", 0x2);
|
||||
qemu_fdt_add_subnode(ms->fdt, "/chosen");
|
||||
|
||||
/* Pass seed to RNG */
|
||||
qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed));
|
||||
qemu_fdt_setprop(ms->fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed));
|
||||
}
|
||||
|
||||
static void fdt_add_cpu_nodes(const LoongArchVirtMachineState *lvms)
|
||||
|
|
Loading…
Reference in New Issue