Crates.io | vhost-device-spi |
lib.rs | vhost-device-spi |
version | 0.1.0 |
source | src |
created_at | 2024-07-30 10:24:46.935841 |
updated_at | 2024-07-30 10:24:46.935841 |
description | vhost spi backend device |
homepage | |
repository | https://github.com/rust-vmm/vhost-device |
max_upload_size | |
id | 1319652 |
size | 129,059 |
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.
vhost-device-spi [OPTIONS]
-h, --help
Print help.
-s, --socket-path=PATH
Location of vhost-user Unix domain sockets, this path will be suffixed with
0,1,2..socket_count-1.
-c, --socket-count=INT
Number of guests (sockets) to attach to, default set to 1.
-l, --device=SPI-DEVICES
Spi device full path at the host OS in the format:
/dev/spidevX.Y
Here,
X: is spi controller's bus number.
Y: is chip select index.
For testing the device the required dependencies are:
CONFIG_SPI_VIRTIO=y
First start the daemon on the host machine::
```console
vhost-device-spi --socket-path=vspi.sock --socket-count=1 --device "/dev/spidev0.0"
```
The QEMU invocation needs to create a chardev socket the device spi use to communicate as well as share the guests memory over a memfd.
```console
qemu-system-aarch64 -m 1G \
-chardev socket,path=/home/root/vspi.sock0,id=vspi \
-device vhost-user-spi-pci,chardev=vspi,id=spi \
-object memory-backend-file,id=mem,size=1G,mem-path=/dev/shm,share=on \
-numa node,memdev=mem \
...
```
This project is licensed under either of