A Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.
Bot releases are visible (Hide)
This release has been tracked in our roadmap
project as iteration
v39.0. The following user visible changes have been made:
It is now possible to use --pci-segment
to adjust the aperture size that
devices 32-bit and 64-bit PCI device BARs will be allocated from. Previously
the address space was equally distributed across all the segments which may
leave insufficient space for devices that require a large 32-bit space. With
this change the weighting per segment can be adjusted. (#6387)
Support for directly booting Linux from bzImages has been added.(#6200)
The x_nv_gpudirect_clique
option was added to --device
to allow the
configuration of device P2P support with NVIDIA GPUs. (#6235)
A new API endpoint and ch-remote
option added for injecting an NMI into the
guest. (#6047)
sigwinch_listener
process (#6208)queue_affinity
option in OpenAPI metadata (#6268)virtio-vsock
virtio-fs
tag validation (#6358, #6359)pvpanic
device to OpenAPI metadata (#6372)virtio-mem
regions with snapshot/restore (#6337,event-monitor
events around reboot (#6277, #6274)ch-remote
with no subcommand (#6230)virtio
devices after snapshot/restore and live migrationMany thanks to everyone who has contributed to our release:
Published by github-actions[bot] 7 months ago
This is a bug fix release. The following issues have been addressed:
Published by github-actions[bot] 8 months ago
This release has been tracked in our roadmap
project as iteration
v38.0. The following user visible changes have been made:
Users now can throttle a group of block devices with the new
--rate-limiter-group
option. Details can be found from the I/O
Throttling documentation
Users now have the option to pin virt-queue threads for block devices
to specific host cpus.
The boot time with prefault
option enabled is optimized via parallel
memory prefault.
A 'debug-console' device is added to provide a user-configurable debug
port for logging guest information. Details can be found from the Debug
IO Ports documentation.
All non-emulated MMIO regions of VFIO devices are now mapped to the VFIO
container, allowing PCIe P2P between all VFIO devices on the same
VM. This is required for a wide variety of multi-GPU workloads involving
GPUDirect P2P (DMA between two GPUs), GPUDirect RDMA (DMA between a GPU
and an IB device).
Users now can set the vcpu affinity to a host CPU with index larger
than 255.
virtio-vsock
(#6080, #6091, #6095)Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] 9 months ago
This is a bug fix release. The following issues have been addressed:
static mut
with once_cell
(#5772)Published by github-actions[bot] 9 months ago
This is a bug fix release. The following issues have been addressed:
Published by github-actions[bot] 9 months ago
This is a bug fix release. The following issues have been addressed:
Published by github-actions[bot] 10 months ago
This release has been tracked in our roadmap project as iteration
v37.0. The following user visible changes have been made:
This release is a LTS release. Point releases for bug fixes will be made
for the next 18 months; live migration and live upgrade will be
supported between the point releases of the LTS.
Now VFIO devices with 32-bit memory BARs can be attached to non-zero PCI
segments on the guest, allowing users to have more 32-bit devices and
assign such devices to appropriate NUMA nodes for better performance.
Named TAP devices now accepts IP configuration from users, such as IP
and MAC address, as long as the named TAP device is created by Cloud
Hypervisor (e.g. not existing TAP devices).
Now legacy serial device and virtio console can be set as TTY mode as
the same time. This allows users to capture early boot logs with the
legacy serial device without losing performance benefits of using
virtio-console, when appropriate kernel configuration is used (such as
using kernel command-line console=hvc0 earlyprintk=ttyS0
on x86).
The speed of VM restoration from snapshots is improved with a better
implementation of deserializing JSON files.
Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] 12 months ago
This release has been tracked in our roadmap project as iteration
v36.0. The following user visible changes have been made:
We switched back to use the clap
crate to create our command line,
since the argh
crate is barely maintained. There were several syntax
changes:
--option value
commands now are --option=value
.--disk DISK1 --disk DISK2
command now is --disk DISK1 DISK2
.-v -v -v
command now is -vvv
.Note: the released binary size increased around 0.3M due to this change.
Now the enabled (Cargo) features of the running Cloud Hypervisor
instance can be queried via API endpoint (/vmm.ping
) and CLI
(--version -v
).
The --numa
command is augmented with a new option pci_segment=
, so
that users can define the relationship between PCI segments and NUMA
nodes. Examples can be found from the memory documentation
Now the CPU topology on x86_64 platforms supports multiple vendors.
The --serial
command is augmented with a new option socket=
, allowing
users to access the serial port using a Unix socket.
An AIO backend is added for virtio-block
devices to improve block
device performance when the io_uring
feature is not supported by the
host Operating System.
Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] about 1 year ago
This release has been tracked in our roadmap project as iteration v35.0.
The following user visible changes have been made:
virtio-vsock
Support for Linux Guest Kernel v6.3+Since kernel v6.3, a vsock packet can be included in a single descriptor,
instead of being split over two descriptors. Our virtio-vsock
implementation
now support both situations.
virtio-block
A new option serial
is added to the --block
command that allows users to
specify a serial number for block devices which will be guest visible.
This ensures migration works correctly between hosts that have different TSC
frequencies if the guest is running with TSC as the source of timekeeping.
static mut
with once_cell
(#5772)Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] about 1 year ago
This release has been tracked in our roadmap project as iteration v34.0. The following user visible changes have been made:
A new device has been added that can communicate when the guest kernel has panicked and share those details with the VMM. This is controlled with a new --pvpanic
command line option and JSON API change equivalent. (#5526)
Requesting to dump the guest memory as core dump will now transparently pause the VM if required; returning to the original state after. (#5604)
The support for QCOW2 files has been enhanced to include support for using backing files. (#5573)
The minimum supported host kernel is now 5.13 in order to incorporate a bug fix for KVM_FEATURE_ASYNC_PF_INT
functionality. (#5626)
Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
Published by github-actions[bot] over 1 year ago
This release has been tracked in our roadmap project as iteration
v33.0. The following user visible changes have been made:
A D-Bus based API has been added as an alternative to the existing REST
API. This feature is gated by the dbus_api
feature. Details can be
found in the API documentation.
Now the CPU cache information on the host is properly exposed to the
guest on AArch64.
Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] over 1 year ago
This release has been tracked in our roadmap project as iteration v32.0. The following user visible changes have been made:
The maximum number of PCI segments that can be used is now 96 (up from 16).
KVM_ARM_VCPU_PMU_V3
if available (#5360)Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
KVM_ARM_VCPU_PMU_V3
if available (#5360)vhost-user
FS client (#5235)Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
KVM_ARM_VCPU_PMU_V3
if available (#5360)Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
KVM_ARM_VCPU_PMU_V3
if available (#5360)vhost-user
FS client (#5235)ShutdownVmm
and Shutdown
commands to call the correct APIPublished by github-actions[bot] over 1 year ago
This release has been tracked in our roadmap project as iteration
v31.0. The following user visible changes have been made:
acpi_tables
Adapted to the latest acpi_tables. There has been significant API changes in
the crate.
Updated the recommended guest kernel version from 6.1.6 to 6.2.
SIGWINCH
HandlerA separate thread had been created to capture the SIGWINCH
signal and resize
the guest console. Now the thread is skipped if the console is not resizable.
Two completely different code paths existed for handling console resizing, one
for tty
and the other for pty
. That makes the understanding of the console
handling code unnecessarily complicated. Now the code paths are unified. Both
tty
and pty
are supported in single SIGWINCH
handler. And the new handler
can works with kernel versions earlier than v5.5.
MemoryZoneConfig::file
Setting a directory to MemoryZoneConfig::file
is no longer supported.
Before this change, user can set a directory to file
of the --memory-zone
option. In that case, a temporary file will be created as the backing file for
the mmap(2)
operation. This functionality has been unnecessary since we had
the native support for hugepages and allocating anonymous shared memory.
vhost-user
FSShutdownVmm
and Shutdown
commands to call the correct APIMany thanks to everyone who has contributed to our release:
Published by github-actions[bot] over 1 year ago
This release has been tracked in our roadmap project as iteration
v30.0. The following user visible changes have been made:
The clap
crate was replaced by the argh
crate to create our command
line, which reduced our release binary size from 3.6MB to 3.3MB. There
were several syntax changes:
--option=value
commands now are --option value
.--disk DISK1 DISK2
command now is --disk DISK1 --disk DISK2
.-vvv
command now is -v -v -v
Our vfio-user
crate is extended to provide basic server side support
with an example of gpio vfio-user device. This crate now is moved to its
own repository under the
rust-vmm
organization.
A new building target is added for profiling purposes with examples of
heap profiling using dhat
gated by the dhat-heap
feature.
The documentation on Intel TDX is expanded with details of the building
and using TD-Shim,
references to TDX Tools, and
version information of guest/host kernel/TDVF/TDShim being tested. Also,
a new 'heap profiling' documentation is added with improvements on the
existing 'profiling' documentation.
exit_evt
upon thread exit (#5211)Many thanks to everyone who has contributed to our release:
Published by github-actions[bot] over 1 year ago
This is a bug fix release. The following issues have been addressed:
virtio
devices are now shutdown on reboot (#5095)