New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vhost-device-console: Add initial implementation #601
base: main
Are you sure you want to change the base?
vhost-device-console: Add initial implementation #601
Conversation
Hi @TimosAmpel , thanks for this PR! I'll review next week, but in the meantime I'd like to understand better That said, QEMU 8.2 should support a generic vhost-user device, so maybe you give it a try to test this device using something like this: (@stsquad and @epilys knows better than me)
|
Hi @stefano-garzarella, thanks for your response. Virtio-loopback is indeed similar to VDUSE and the main differences between
In addition, virtio-loopback supports the following rust-vmm devices: An RFC presenting the architecture (no patches included) had been submitted to Thank you a lot for the "vhost-user-device-pci" suggestion, I plan to test both |
7af25d5
to
cc599bb
Compare
Hello @epilys and @stefano-garzarella, I have pushed a new simplified version of the device Vhost-device-console is being tested with QEMU's "vhost-user-device" as suggested:
Also, I have created a new QEMU More about, known limination, test examples and future work can be found in |
cc599bb
to
006b2e0
Compare
Hello @epilys, I have pushed a newer version which covers the scenario of the device working with multiple QEMU's guest As before, the readme file has been updated and registers any known limitation, new features, testing examples etc. |
326e717
to
ac9c5bc
Compare
Hello @epilys, The latest version addresses all your comments, also adds more tests which goes through most of the cases, |
01d85cc
to
73bba99
Compare
@TimosAmpel if this PR is not a Draft, I suggest cleaning a bit the commits and squash them. We usually prefer to merge a PR with commits that do not modify code added in the same PR. |
The device was tested with: 1) Upstream QEMU's vhost-user-device qemu-system-x86_64 \ -m 4096 \ -numa node,memdev=mem \ -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on \ -chardev socket,id=char1,path=/tmp/console.sock \ -device vhost-user-device-pci,chardev=char1,virtio-id=3,num_vqs=4,config_size=12 \ ... 2) A new QEMU vhost-user-console device which can be found in the following repo: - https://github.com/virtualopensystems/qemu/tree/vhu-console-rfc For more information, please check the README.md file under staging/vhost-device-console/. Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
73bba99
to
f549dea
Compare
Thanks @stefano-garzarella! I have squashed them all in one new presenation commit, I hope that's more suitable. |
Summary of the PR
This PR introduces an initial implementation of vhost-device-console device.
The development of this device was performed by Virtual Open Systems in the context
of the Automotive Grade Linux SDV-EG (Software Defined Vehicle expert group)
AGL Native VIRTIO project. Part of this development has already been upstreamed
(see AGL Gerrit console patch).
The new device creates a console device which communicates with vhost-user-console
frontend driver and eventually with virtio-console. Since there was no upstream
implementation of any vhost-user-console frontend in QEMU, the current version has
only been tested with virtio-loopback design.
Virtio-loopback architecture aims to create a new HAL (hardware abstraction layer),
designed for non-Hypervisor environments based on virtio. The main objective
is to enable virtio drivers to communicate with vhost-user devices without emulation
or virtualization being involved. This technology has also been upstreamed
into AGL gerrit repositories.
More information about virtio-loopback can be found in the links below:
Since we believe that this device might be interesting to the community,
this PR targets to share this work, ask for comments and potentially
merge the implementation under vhost-device repository.
Requirements
git commit -s
), and the commitmessage has max 60 characters for the summary and max 75 characters for each
description line.
test.
Release" section of CHANGELOG.md (if no such section exists, please create one).
unsafe
code is properly documented.