On Tue, Sep 17, 2019 at 03:02:26PM +0200, Laurent Vivier wrote: > On 17/09/2019 14:40, Herbert Xu wrote: > > On Tue, Sep 17, 2019 at 11:54:50AM +0200, Laurent Vivier wrote: > >> add_early_randomness() is called by hwrng_register() when the > >> hardware is added. If this hardware and its module are present > >> at boot, and if there is no data available the boot hangs until > >> data are available and can't be interrupted. > >> > >> To avoid that, call rng_get_data() in non-blocking mode (wait=0) > >> from add_early_randomness(). > >> > >> Signed-off-by: Laurent Vivier <lvivier@xxxxxxxxxx> > >> --- > >> drivers/char/hw_random/core.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > > > Please provide more context in your patch description such as which > > driver actually causes a hang here. > > I can add in the next version: > > "For instance, in the case of virtio-rng, in some cases the host can be > not able to provide enough entropy for all the guests. > > We can have two easy ways to reproduce the problem but they rely on > misconfiguration of the hypervisor or the egd daemon: > > - if virtio-rng device is configured to connect to the egd daemon of the > host but when the virtio-rng driver asks for data the daemon is not > connected, > > - if virtio-rng device is configured to connect to the egd daemon of the > host but the egd daemon doesn't provide data. > > The guest kernel will hang at boot until the virtio-rng driver provides > enough data." Patch applied with this addition. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt