>
>
> > CONFIG_PCI=y
> > CONFIG_VIRTIO=y
> > CONFIG_VIRTIO_PCI=y
> > CONFIG_VIRTIO_BLK=y
> > CONFIG_HW_RANDOM_VIRTIO=y
> > CONFIG_CRYPTO_DEV_VIRTIO=y
> > CONFIG_CRYPTO_HW=y
> > CONFIG_CRYPTO_RNG2=y
> > CONFIG_HW_RANDOM=y
> >
> > I honestly don't know which of these actually matter. I'm wondering, am
> I missing something?
>
> Are you using other PCI devices successfully? Do the kernel's
> bootup messages include information about having successfully
> found PCI devices? That will tell you whether you need to be
> looking for "config switches related to PCI in general" or "config
> switches related to RNG stuff".
>
> In particular, make sure you have
> CONFIG_PCI_HOST_GENERIC=y
>  -- this is the switch that enables support for the virt board's PCI
> controller.
>

Yes great, thank you for the tip.. I should have been looking in dmesg for
PCI stuff all along. While CONFIG_PCI_HOST_GENERIC was not set, setting it
didn't help. But that did give me an error which I tracked down to this:

https://bugs.launchpad.net/qemu/+bug/1790975

Starting QEMU with:

-M virt,highmem=off

...fixes the /dev/hwrng issue. That said, there's an additional problem
which is that rngd takes 10-20s to initialize from /dev/hwrng.

Also, the presence of rngd doesn't seem to increase or decrease the rng
throughput:

(with rngd...)
rngtest: bits received from input: 521780032
rngtest: FIPS 140-2 successes: 26071
rngtest: FIPS 140-2 failures: 18
rngtest: FIPS 140-2(2001-10-10) Monobit: 1
rngtest: FIPS 140-2(2001-10-10) Poker: 4
rngtest: FIPS 140-2(2001-10-10) Runs: 8
rngtest: FIPS 140-2(2001-10-10) Long run: 5
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=5.022; avg=37.484; max=544.957)Mibits/s
rngtest: FIPS tests speed: (min=1.690; avg=42.693; max=44.152)Mibits/s
rngtest: Program run time: 25015557 microseconds

(*without* rngd, presumably means not using /dev/hwrng?)
rngtest: bits received from input: 524600032
rngtest: FIPS 140-2 successes: 26213
rngtest: FIPS 140-2 failures: 17
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 3
rngtest: FIPS 140-2(2001-10-10) Runs: 6
rngtest: FIPS 140-2(2001-10-10) Long run: 8
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=6.788; avg=37.489; max=544.957)Mibits/s
rngtest: FIPS tests speed: (min=2.864; avg=43.172; max=44.564)Mibits/s
rngtest: Program run time: 25016438 microseconds

In both cases I get approximately 37Mbps in the input channel. I'm not sure
if I'm interpreting the results correctly, but I take that to mean that
/dev/hwrng isn't contributing to the entropy pool. Note, the host machine
has plenty of entropy and the same test gets 15,000Mbps. In both the
cases /proc/sys/kernel/random/entropy_avail
has approximately the same value. The rngd logs show it's working correctly
and adding entropy from the hwrng.

I realize this may not be a qemu issue at this point, but I am curious as
to why rngd takes so long to initialize /dev/hwrng.

Wes

Reply via email to