mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-08-21 07:21:15 +00:00
When a virtio device is paused an event is written to the appropriate "pause" EventFd for the device. This will be noticed by the the device's epoll_wait(), an atomic bool checked an if true then the thread is parked(). When resuming the bool is reset and the thread is unpark()ed. However the event triggering the pause is still in the EventFd so the epoll_wait() will continue to return but because the boolean is not set the thread will not be park()ed but instead we will busy loop around an event that is not being consumed. The solution is to drain the "pause" EventFd when the event is first received and thus the epoll_wait() will only return for the pause event once. This resolves the infinite epoll_wait() wake-ups. Fixes: #869 Signed-off-by: Rob Bradford <robert.bradford@intel.com> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |