On Sun, Jun 12, 2022 at 11:59:49PM +0200, Jason A. Donenfeld 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: Stafford Horne <sho...@gmail.com> > Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com> > --- > hw/openrisc/openrisc_sim.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c > index 35adce17ac..41821b5f30 100644 > --- a/hw/openrisc/openrisc_sim.c > +++ b/hw/openrisc/openrisc_sim.c > @@ -20,6 +20,7 @@ > > #include "qemu/osdep.h" > #include "qemu/error-report.h" > +#include "qemu/guest-random.h" > #include "qapi/error.h" > #include "cpu.h" > #include "hw/irq.h" > @@ -115,6 +116,7 @@ static void openrisc_create_fdt(Or1ksimState *state, > int cpu; > char *nodename; > int pic_ph; > + uint8_t rng_seed[32]; > > fdt = state->fdt = create_device_tree(&state->fdt_size); > if (!fdt) { > @@ -165,6 +167,10 @@ static void openrisc_create_fdt(Or1ksimState *state, > qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline); > } > > + /* Pass seed to RNG. */ > + qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed)); > + qemu_fdt_setprop(fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed)); > + > /* Create aliases node for use by devices. */ > qemu_fdt_add_subnode(fdt, "/aliases"); > }
This all looks fine to me. I will queue it with my current changes. Since this is only applying to openrisc_sim I would like to also apply it to virt. To do that I need to have a common core openrisc system creation api. That way I don't end up copying and pasting this to every platform. -Stafford