mirror of https://github.com/xemu-project/xemu.git
![]() Since commit "60253ed1e6ec rng: add request queue support to rng-random",
the use of a spapr_rng device may hang vCPU threads.
The following path is taken without holding the lock to the main loop mutex:
h_random()
rng_backend_request_entropy()
rng_random_request_entropy()
qemu_set_fd_handler()
The consequence is that entropy_available() may be called before the vCPU
thread could even queue the request: depending on the scheduling, it may
happen that entropy_available() does not call random_recv()->qemu_sem_post().
The vCPU thread will then sleep forever in h_random()->qemu_sem_wait().
This could not happen before
|
||
---|---|---|
.. | ||
Makefile.objs | ||
e500-ccsr.h | ||
e500.c | ||
e500.h | ||
e500plat.c | ||
mac.h | ||
mac_newworld.c | ||
mac_oldworld.c | ||
mpc8544_guts.c | ||
mpc8544ds.c | ||
ppc.c | ||
ppc4xx_devs.c | ||
ppc4xx_pci.c | ||
ppc405.h | ||
ppc405_boards.c | ||
ppc405_uc.c | ||
ppc440_bamboo.c | ||
ppc_booke.c | ||
ppce500_spin.c | ||
prep.c | ||
spapr.c | ||
spapr_drc.c | ||
spapr_events.c | ||
spapr_hcall.c | ||
spapr_iommu.c | ||
spapr_pci.c | ||
spapr_pci_vfio.c | ||
spapr_rng.c | ||
spapr_rtas.c | ||
spapr_rtc.c | ||
spapr_vio.c | ||
virtex_ml507.c |