Devices
This chapter describes emulated devices in crosvm. These devices work like hardware for the guest.
List of devices
Here is a (non-comprehensive) list of emulated devices provided by crosvm.
Emulated Devices
CMOS/RTC
- Used to get the current calendar time.i8042
- Used by the guest kernel to exit crosvm.- usb - xhci emulation to provide USB device passthrough.
serial
- x86 I/O port driven serial devices that print to stdout and take input from stdin.
VirtIO Devices
balloon
- Allows the host to reclaim the guest's memories.block
- Basic read/write block device.console
- Input and outputs on console.fs
- Shares file systems over the FUSE protocol.gpu
- Graphics adapter.input
- Creates virtual human interface devices such as keyboards.iommu
- Emulates an IOMMU device to manage DMA from endpoints in the guest.net
- Device to interface the host and guest networks.p9
- Shares file systems over the 9P protocol.pmem
- Persistent memory.rng
- Entropy source used to seed guest OS's entropy pool.scsi
- SCSI device.snd
- Encodes and decodes audio streams.tpm
- Creates a TPM (Trusted Platform Module) device backed by vTPM daemon.video
- Allows the guest to leverage the host's video capabilities.wayland
- Allows the guest to use the host's Wayland socket.vsock
- Enables use of virtual sockets for the guest.vhost-user
- VirtIO devices which offloads the device implementation to another process through the vhost-user protocol:- vmm side: Shares its virtqueues.
- device side: Consumes virtqueues.
Device hotplug (experimental)
A hotplug-capable device can be added as a PCI device to the guest. To enable hotplug, compile
crosvm with feature flag pci-hotplug
:
cargo build --features=pci-hotplug #additional parameters
When starting the VM, specify the number of slots with --pci-hotplug-slots
option. Additionally,
specify a control socket specified with -s
option for sending hotplug commands.
For example, to run a VM with 3 PCI hotplug slots and control socket:
VM_SOCKET=/run/crosvm.socket
crosvm run \
-s ${VM_SOCKET} \
--pci-hotplug-slots 3
# usual crosvm args
Currently, only network devices are supported.