|
From: | zhukeqian |
Subject: | [QUESTION] About virtio and eventloop |
Date: | Mon, 16 Jan 2023 08:18:22 +0000 |
Hi all maintainers and community friends, Recently I am reviewing and learning the virtio and eventloop implementation of latest QEMU, and now I have a questions for help: In general, the IO requests of virtio is popped in iothread/mainloop and may submitted to “async IO Engine” (io_uring/linux aio/threadpool). Once the IO operation is done, the “async IO engine” will send notification to iothread/mainloop through evenfd or bottomhalf, and the completion action for the IO request (add used ring and notify guest) is done in iothread/mainloop. And let’s look at the “deactive” procedure of virtio-pci devices (when guest write 0 to device status or system triggered reset), the basic requirement is that device should stop handling IO requests and accessing virtqueue before returning back to guest, as the guest may destroy virqueue once deactivation is done. QEMU invokes stop_ioeventfd() callback to perform above actions. It unregisters ioeventfd from eventloop and KVM,
It’s great that if anyone can help! Thanks,
Keqian |
[Prev in Thread] | Current Thread | [Next in Thread] |