vhost-device/vhost-device-spi
Davíð Steinn Geirsson 1c021aaea6 Use our vhost fork for all crates and add GPU flake package
Use our vhost fork for all crates. It has SHMEM and GPU backend support.
Add a Nix flake package for vhost-device-gpu with the virgl backend enabled.

Also fixes duplicate imports in vhost-device-gpu/src/backend/virgl.rs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 19:10:55 +00:00
..
src chore: remove pub visibility from exit event fields 2025-11-19 12:09:37 +02:00
Cargo.toml Use our vhost fork for all crates and add GPU flake package 2026-03-22 19:10:55 +00:00
CHANGELOG.md spi: fix changelog format 2024-07-30 19:03:28 +05:30
LICENSE-APACHE vhost-device-spi: Add initial implementation 2024-07-29 09:51:40 +02:00
LICENSE-BSD-3-Clause vhost-device-spi: Add initial implementation 2024-07-29 09:51:40 +02:00
README.md vhost-device-spi: update link to kernel driver 2025-09-12 14:22:27 +03:00

vhost-device-spi - SPI emulation backend daemon

Description

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.

Synopsis

vhost-device-spi [OPTIONS]

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.

Examples

Dependencies

For testing the device the required dependencies are:

Test the device

First start the daemon on the host machine::

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.

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 \
    ...

License

This project is licensed under either of