On Mon, Jun 13, 2022 at 8:08 PM Jason A. Donenfeld <ja...@zx2c4.com> wrote: > > 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 confirmed to successfully initialize the > RNG on Linux 5.19-rc2. > > Cc: Alistair Francis <alistair.fran...@wdc.com> > Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com> > --- > hw/riscv/virt.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index bc424dd2f5..368a723bf6 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -21,6 +21,7 @@ > #include "qemu/osdep.h" > #include "qemu/units.h" > #include "qemu/error-report.h" > +#include "qemu/guest-random.h" > #include "qapi/error.h" > #include "hw/boards.h" > #include "hw/loader.h" > @@ -998,6 +999,7 @@ static void create_fdt(RISCVVirtState *s, const > MemMapEntry *memmap, > MachineState *mc = MACHINE(s); > uint32_t phandle = 1, irq_mmio_phandle = 1, msi_pcie_phandle = 1; > uint32_t irq_pcie_phandle = 1, irq_virtio_phandle = 1; > + uint8_t rng_seed[32]; > > if (mc->dtb) { > mc->fdt = load_device_tree(mc->dtb, &s->fdt_size); > @@ -1046,6 +1048,10 @@ update_bootargs: > if (cmdline && *cmdline) { > qemu_fdt_setprop_string(mc->fdt, "/chosen", "bootargs", cmdline); > } > + > + /* Pass seed to RNG. */
nits: please remove the ending period > + qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed)); > + qemu_fdt_setprop(mc->fdt, "/chosen", "rng-seed", rng_seed, > sizeof(rng_seed)); > } > > static inline DeviceState *gpex_pcie_init(MemoryRegion *sys_mem, > -- Otherwise, Reviewed-by: Bin Meng <bmeng...@gmail.com>