mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
45c4b276f0
According to the virtio v1.x "entropy device" specification, a virtio-rng device is supposed to always return at least one byte of entropy. However the virtio v0.9 spec does not mention such a requirement. The Arm Fixed Virtual Platform (FVP) implementation of virtio-rng always returns 8 bytes less of entropy than requested. If 8 bytes or less are requested, it will return 0 bytes. This behaviour makes U-Boot's virtio_rng_read() implementation go into an endless loop, hanging the system. Work around this problem by always requesting 8 bytes more than needed, but only if a previous call to virtqueue_get_buf() returned 0 bytes. This should never trigger on a v1.x spec compliant implementation, but fixes the hang on the Arm FVP. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reported-by: Peter Hoyes <peter.hoyes@arm.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
virtio-uclass.c | ||
virtio_blk.c | ||
virtio_blk.h | ||
virtio_mmio.c | ||
virtio_mmio.h | ||
virtio_net.c | ||
virtio_net.h | ||
virtio_pci.h | ||
virtio_pci_legacy.c | ||
virtio_pci_modern.c | ||
virtio_ring.c | ||
virtio_rng.c | ||
virtio_sandbox.c |