Internships/ProjectIdeas/VIRTIO F IN ORDER: Difference between revisions
(Created page with "=== VIRTIO_F_IN_ORDER support for virtio devices === '''Summary:''' Implement VIRTIO_F_IN_ORDER in QEMU and Linux (vhost and virtio drivers) The VIRTIO specification defines...") |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 10: | Line 10: | ||
This feature can simplify device and driver implementations and increase performance. For example, when | This feature can simplify device and driver implementations and increase performance. For example, when | ||
VIRTIO_F_IN_ORDER is negotiated, it may be easier to create a batch of | VIRTIO_F_IN_ORDER is negotiated, it may be easier to create a batch of | ||
buffers and the | buffers and reduce DMA transactions when the device uses a batch of buffers. | ||
Currently the devices and drivers available | Currently the devices and drivers available in Linux and QEMU do not | ||
support this feature. An implementation is available in DPDK for the | support this feature. An implementation is available in DPDK for the | ||
virtio-net driver. | virtio-net driver. | ||
Goals: | |||
in QEMU and Linux | * Implement VIRTIO_F_IN_ORDER for a single device/driver in QEMU and Linux (virtio-net or virtio-serial are good starting points). | ||
and packed virtqueue layouts. | * Generalize your approach to the common virtio core code for split and packed virtqueue layouts. | ||
* If time allows, support for the packed virtqueue layout can be added to Linux vhost, QEMU's libvhost-user, and/or QEMU's virtio qtest code. | |||
If time allows, support for the packed virtqueue layout can be added to | |||
Linux vhost, QEMU's libvhost-user, and/or QEMU's virtio qtest code. | |||
'''Links:''' | '''Links:''' | ||
Line 33: | Line 30: | ||
'''Details:''' | '''Details:''' | ||
* | * Project size: 350 hours | ||
* | * Difficulty: intermediate | ||
* | * Required skills: C programming | ||
** IRC/Matrix | * Mentors: Stefano Garzarella <sgarzare@redhat.com>, Eugenio Perez Martin <eperezma@redhat.com> | ||
** IRC/Matrix nicks: sgarzare, eperezma | |||
* Suggested by: Jason Wang <jasowang@redhat.com> | * Suggested by: Jason Wang <jasowang@redhat.com> |
Latest revision as of 06:49, 25 February 2022
VIRTIO_F_IN_ORDER support for virtio devices
Summary: Implement VIRTIO_F_IN_ORDER in QEMU and Linux (vhost and virtio drivers)
The VIRTIO specification defines a feature bit (VIRTIO_F_IN_ORDER) that devices and drivers can negotiate when the device uses descriptors in the same order in which they were made available by the driver.
This feature can simplify device and driver implementations and increase performance. For example, when VIRTIO_F_IN_ORDER is negotiated, it may be easier to create a batch of buffers and reduce DMA transactions when the device uses a batch of buffers.
Currently the devices and drivers available in Linux and QEMU do not support this feature. An implementation is available in DPDK for the virtio-net driver.
Goals:
- Implement VIRTIO_F_IN_ORDER for a single device/driver in QEMU and Linux (virtio-net or virtio-serial are good starting points).
- Generalize your approach to the common virtio core code for split and packed virtqueue layouts.
- If time allows, support for the packed virtqueue layout can be added to Linux vhost, QEMU's libvhost-user, and/or QEMU's virtio qtest code.
Links:
- VIRTIO spec 1.1
- Source code for the VIRTIO spec
- Patches that introduced VIRTIO_F_IN_ORDER in DPDK
- Patch that introduced VIRTIO_F_IN_ORDER in VIRTIO spec
- Incomplete implementation proposed for QEMU
Details:
- Project size: 350 hours
- Difficulty: intermediate
- Required skills: C programming
- Mentors: Stefano Garzarella <sgarzare@redhat.com>, Eugenio Perez Martin <eperezma@redhat.com>
- IRC/Matrix nicks: sgarzare, eperezma
- Suggested by: Jason Wang <jasowang@redhat.com>