The crate has been moved from staging to root folder.
Update the README to reflect the correct link for the crate.
Signed-off-by: Dorinda Bassey <dbassey@redhat.com>
Add Packaging and distribution section that mentions the ability to
generate manual pages using the xtask crate in this workspace.
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Changes:
- Update socketcan-rs to v3.3.1 which solve the issue regarding the CANFD messages:
- https://github.com/socketcan-rs/socketcan-rs/pull/61
- Update Cargo.lock files under main and staging workspace
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
The current implementation seems ready to be promoted to the
main workspace since the device supports test coverage have been
increased and the basic functionality is implemented.
Cargo.lock files both in main and staging workspaces are updated.
Support for VIRTIO_CONSOLE_F_SIZE and VIRTIO_CONSOLE_F_EMERG_WRITE
is still missing.
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
The device was tested with:
1) Upstream QEMU's vhost-user-device
qemu-system-x86_64 \
<normal QEMU options> \
-machine <machine options>,memory-backend=mem0 \
-object memory-backend-memfd,id=mem0,size=<Guest RAM size> \ # size == -m size
-chardev socket,id=con0,path=/tmp/console.sock0 \
-device vhost-user-device-pci,chardev=con0,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/.
Co-authored-by: dorindabassey <53014273+dorindabassey@users.noreply.github.com>
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
This implementation supports the exchange of CAN/CANFD messages
virtual ("vcan") and real HW CAN device ("can0"). It was tested with:
a) virtio-can driver found in the following patch serie:
- https://lwn.net/Articles/934187/
b) QEMU's vhost-user-can device:
1) Option 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/can.sock \
-device vhost-user-device-pci,chardev=char1,virtio-id=36,num_vqs=3,config_size=16 \
...
2) Option 2: A new QEMU vhost-user-can device can be found in the
following repo:
- https://github.com/virtualopensystems/qemu/tree/vhu-can-rfc
For more information, please check the README.md file under
"staging/vhost-device-can/".
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
This program is a vhost-user backend that emulates a VirtIO SPI bus.
This program takes the layout of the spi bus and its devices on the host
OS and then talks to them via the /dev/spidevX.Y interface when a request
comes from the guest OS for a SPI device.
The implementation corresponds with the specification:
https://github.com/oasis-tcs/virtio-spec/tree/virtio-1.4/device-types/spi
Signed-off-by: Haixu Cui <quic_haixcui@quicinc.com>
The current implementation seems ready to be promoted to the
main workspace since the device supports both playback and recording,
and several audio backends.
Also, test coverage is good and aligned with the coverage of crates
in the main workspace.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
This patch is to add support for vhost input device emulation.
The code skeleton heavily reuses vhost-device-i2c and vhost-device-rng,
including sharing the same license, and how to create the multi-thread
mode and daemon for backend virtual device.
It gives detailed usage for enabling virtual input device for guest in
the README.md.
Signed-off-by: Leo Yan <leo.yan@linaro.org>
This adds a basic template crate, which will be useful for new
developers to understand how things work and layout all basic stuff they
are expected to write to make it work.
The current implementation just parses all the requests from the
virtqueue and prints the number of descriptor chains and size of each
descriptor buffer in there.
This adds basic sanity tests as well for the same, which can be run to
test the working of the crate.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Initial skeleton for virtio-video crate.
This crate is based on the v3 of the virtio-video
specs patch[1].
It has a big part of the infrastructure
required, although not all commands are implemented,
and does not have any backend available.
Includes support for async responses to the driver
(through VIDEO_EVENT) to QueueResource messages.
[1] -
https://lists.oasis-open.org/archives/virtio-dev/202002/msg00002.html
Related: #364
Signed-off-by: Albert Esteve <aesteve@redhat.com>
Lets be super clear and explicit about what it takes to include a
backend in the repository as well as the minimum requirements for
being included in staging.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Having all the workspace crates under the crates/ directory is
unnecessary. Rust documentation itself recommends all crates to be in
the root directory:
https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html#creating-the-second-package-in-the-workspace
I paste the text content here, in case the online page ever changes or
becomes unavailable:
## Creating the Second Package in the Workspace
Next, let’s create another member package in the workspace and call it add_one. Change the top-level Cargo.toml to specify the add_one path in the members list:
Filename: Cargo.toml
[workspace]
members = [
"adder",
"add_one",
]
Then generate a new library crate named add_one:
$ cargo new add_one --lib
Created library `add_one` package
Your add directory should now have these directories and files:
├── Cargo.lock
├── Cargo.toml
├── add_one
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── target
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Add a new workspace for devices that have no final specification merged
into the virtio spec.
Closes#459
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Having the directory of a crate match the name of the crate (i.e. the
one defined in its Cargo.toml) is intuitive and unambiguous.
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
When we merged the SCSI device, we forgot to put it in the
workspace README.md and put the link to the device README.md.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Various rust-vmm dependencies now support Xen platforms under a new
feature `xen`. Add the same here for all the crates.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
The upstream version doesn't compile the .c files locally and depends on
the package to be locally compiled and installed in advance.
It also doesn't provide pre-generated bindings, and requires bindgen
support.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit introduces a vhost-user-vsock device that enables
communicaton between an application running in the guest i.e
inside a VM and an application running on the host i.e outside
the VM. The device exposes unix sockets to which the VMM and
host-side applications connect to. Applications in the guest
communicate over VM sockets. Applicaitons on the host connect to
the unix socket i.e communicate over AF_UNIX sockets.
Signed-off-by: Harshavardhan Unnibhavi <harshanavkis@gmail.com>
[sgarzare: rebased, updated Cargo.lock, updated clap version to
avoid build issues, and fixed clap issues with the new version]
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
This patch provides a vhost-user compliant daemon for Random Number
Generation (RNG) that implements the VhostUserBackend trait. As such
it can be used seamlessly with any kind of VMM, regardless of the
underlying architecture or programming language.
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This attempts to finesse the rule of no coverage regressions for
discussion with the wider community.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
The workspace section in Rust documentation suggests adding new crates
in the top level directory itself instead of the src folder. Remove the
top level src folder.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
While there may be some work to do on the testing framework to make
proper use of vm-virtio we should at least document the desire for
modularity.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>