Internships/ProjectIdeas/VIRTIO F IN ORDER: Difference between revisions

From QEMU
(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...")
 
No edit summary
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 amount of notifications needed between devices
buffers and reduce DMA transactions when the device uses a batch of buffers.
and drivers may be reduced.


Currently the devices and drivers available on Linux and QEMU do not
Currently the devices and drivers available on Linux and QEMU do not

Revision as of 15:54, 17 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 on Linux and QEMU do not support this feature. An implementation is available in DPDK for the virtio-net driver.

The project could start with implementation for a single device/driver in QEMU and Linux, then generalize it 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:

Details:

  • Skill level: intermediate
  • Language: C
  • Mentor: Stefano Garzarella <sgarzare@redhat.com>
    • IRC/Matrix nick: sgarzare (OFTC/matrix.org)
  • Suggested by: Jason Wang <jasowang@redhat.com>