...
This page contains weekly reports of the Virtual Open Systems activity about the "AGL Native VIRTIO phase 2" project.
week 19
gerrit reviews:
The first batch of vhost-user devices was pushed (29407). This includes rust implementation of GPIO, I2C, RNG and VSOCK, taken from meta-virtualization.
Also, a small restructuring of the egvirt feature has been proposed (29408). Reviews are ongoing.
Next week we plan to work on recipes for vhost-user-sound and vhost-user-can (more details below on the latter).
CAN:
This week we finalized the implementation of vhost-user-can on top of virtio-loopback. The code was polished and aligned with QEMU and Rust-vmm code style. Next week we are going to prepare yocto recipes. Source files will be then included in meta-egvirt. When .rs files will be merged in meta-egvirt, we will communicate with the rust-vmm community to assess their interest in merging this device.
Virtio-Console:
We started working on the vhost-user-console support and after some investigations we prepared an initial plan. In general, (similarly to what happened for CAN) there is no vhost-user device available publicly, and the plan includes the development of a rust vhost-user-can device that will be shared with the rust-vmm community. Plan milestones:
1) Implement vhost-user-console Adapter interface (deadline 24/11/2023) - Based on other adapter's device implementation and QEMU's virtio-console device.
2) Vhost-user-can backend in Rust (deadline 08/12/2023) - Implement vhost-user-can based on vhost-device-can and QEMU's virtio-console device.
- [vhost-device](https://github.com/rust-vmm/vhost-device/tree/main)
3) Testing & Prepare the release: (deadline 15/12/2023) - Polish/Push the epsilon-release version by the addition of vhost-user-console
GPU:
The work carried on the integration of vhost-user-gpu/virtio-gpu devices on virtio-loopback-adapter. Completed the porting of `qemu_chr_*` API functions to unix-socket API for `vhost-user-gpu.c`. Integrated the virtio-gpu-base-base device and reworked the QEMU API-accessor macros/functions.
Performed functional tests with virtio-loopback-adapter and `contrib/vhost-user-gpu` application upto the point where the virtual-gpu is instantiated. Continued on further integration of QEMU's `hw/display/virtio-gpu.c`and `hw/display/virito-gpu-gl.c` as dependencies for an OpenGL-accelerated virtio-gpu device support. Integrated the SDL rendering backend to support the visual representation of the frames on a Wayland compositor. Next steps include the integration the virtio-gpu devices support on virtio-loopback-adapter and perform functional test with a Wayland compositor (Weston).
week 18
GPU:
The task continues on finalizing the display rendering and vhost/virtio device model support on virtio-loopback-adapter.Extracted partially the Type and Object device systems of QEMU as required for the instantiation of the vhost-user-gpu and virtio-gpu devices. Reworked the QEMU Character-Device API `qemu_chr_*` found in `vhost_user_gpu.c` and `virtio-gpu-base.c`and replaced it with conventional unix-socket API. Continued on the wiring of the top-level rendering framework and the instantiation of the window that hosts the frames as instructed by the VhostUserGPU protocol.
The next steps include the integration of the display rendering components with the vhost-user- and virtio-gpu device models.
Additionally, test 3D workloads on a Wayland compositor such as Weston.
CAN:
CAN/CANFD messages are being exchanged between the virtio-can and vhost-user-can backend (+ "vcan0").
This week, we developed the send/receive functionality code into vhost-user-can for sending/receiving messages to real hardware CAN device and add support for CANFD messages. After the initial communication between adapter and vhost-user-can device, a new virtio-can device is being inserted successfully into the kernel. At that moment, by using "can-utils", CAN/CANFD messages are sent through virtio-can, virtio-loopback-transport, adapter, vhost-user-can to "vcan0" device and vice versa. Next week we plan to polish the code for finalization.
week 17
GPU:
Activity continues aiming at finalizing the port of the hw/virtio/vhost-user-gpu.c dependencies for the rendering framework and the vhost-user-gpu protocol. On virtio-loopback-adapter we added support for the VirtIOGpu device that implements the display framework backend of QEMU. Isolated and extracted the top-level GTK hooks and the display-listener used by QEMU. Next steps include finalizing the vhost-user-gpu support on the adapter and the port of display dependencies from QEMU.
As mentioned last week, there is a small delay on this task, however we plan to produce a first delivery before the next SDV call.
...