cloud-hypervisor

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.

Stars
3.7K

Bot releases are visible (Hide)

cloud-hypervisor - v29.0

Published by github-actions[bot] almost 2 years ago

This release has been tracked in our roadmap
project
as iteration
v29.0. The following user visible changes have been made:

Release Binary Supports Both MSHV and KVM

On x86-64 the binary included in releases supports both the KVM and MSHV
hypervisor with runtime detection to identify the correct hypervisor to use.

Snapshot/Restore and Live Migration Improvements

Improvements have been made to the data structures used for both live migration
and snapshot/restore. Unfortunately this has broken compatibility with older
versions (support for migrating between major versions is not yet officially
supported but has worked for some versions.)

Heap Allocation Improvements

Improvements have been made to the volume of heap allocations when running with
virtio-block devices along with a reduction in the peak heap size.

ch-remote Improvements

Support for "pinging" the VMM and shutting the VMM down have been added to
ch-remote.

AArch64 Documentation Integration

The documentation for AArch64 support has been integrated into the main
README.

virtio-block Counters Enhancement

The counters for the virtio-block device has extended to include min/mean/max
latency counters.

TCP Offload Control

The virtio-net device has gained support for controlling the enabling of
checksum and offloading. This allows the device to be used in environments
where the hardware lacks support for the offloading.

Notable Bug Fixes

  • Update dependencies including a version of linux-loader that addresses an
    infinite loop issue (details)
  • Fix bugs related to virtio-net including an integer overflow issue
    (#4924, #4949)
  • Use host cpuid information for L2 cache for older KVM on x86 (#4920)
  • Memory mapped into the guest is now marked as non-dumpable which prevents large core files (#5016)
  • Fix QCOW2 refcount table size (#5034)
  • Fix unpause support on MSHV in dual binary (#5037)
  • Threads inside virtio devices are now shutdown on reboot (#5095)

Removals

No functionality has been removed in this release.

Deprecations

  • Support for specifying a directory with MemoryZoneConfig::file or
    MemoryConfig::file has been deprecated. This was originally used for
    supporting huge pages or shared memory backing which is now natively supported
    (#5085)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v28.1

Published by github-actions[bot] almost 2 years ago

This is a bug fix release. The following issues have been addressed:

  • Update dependencies including a version of linux-loader that
    addresses an infinite loop issue (details)
  • Fix bugs related to virtio-net including an integer overflow issue
    (#4924, #4949)
  • Use host cpuid information for L2 cache for older KVM on x86 (#4920)
  • Improve README and documentation
cloud-hypervisor - v28.0

Published by github-actions[bot] almost 2 years ago

This release has been tracked in our new roadmap project as iteration v28.0.

Community Engagement (Reminder)

Just a reminder that we have a new mailing list to support broader community discussions. Please consider subscribing. We plan to use this to announce a regular meeting for those interested in talking about Cloud
Hypervisor development.

Long Term Support (LTS) Release

This is the first version of Cloud Hypervisor to be released under the LTS release process. 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.

Virtualised TPM Support

Support for adding an emulated CRB TPM has been added. This has it's own TPM documentation.

Transparent Huge Page Support

By default, but controllable through --memory thp=off if it possible to back the guest memory with Transparent Huge Pages (no file backing/shared=off) then this will be used resulting in improved boot performance.

README Quick Start Improved

The README has been refreshed with the quick start guide updated to reflect the different firmware options and to recommend the use of pre-built binaries.

Notable Bug Fixes

  • Inappropriate Copy-on-Write of pinned pages (e.g. VFIO) leading to higher
    memory consumption (#4835)
  • Multiple virtio device bug fixes found through fuzzing (#4859, #4799)
  • Large QCOW files (> 4TiB) are now supported (#4767)
  • Support for > 31 vCPUS on aarch64 (#4863)
  • Multiple fixes to OpenAPI specification file (#4720, #4811)
  • Programming of the MSI-X table has been optimised leading to faster boot on
    newer Linux kernels (#4744)
  • Error on reboot from race to close TAP devices (#4871)
  • Non-spec compliant virtio-block read-only support (#4888)

Removals

The following functionality has been removed:

  • Support for non-PVH firmware booting has been removed (#4511)
  • I/O ports used for older versions of firmware have been removed (#3926)
  • Deprecated API options for kernel/cmdline/initramfs have been removed (#4737)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v27.0

Published by github-actions[bot] about 2 years ago

This release has been tracked in our new roadmap
project
as iteration
v27.0.

Community Engagement

A new mailing list has been created to support broader community discussions.
Please consider subscribing; an
announcement of a regular meeting will be announced via this list shortly.

Prebuilt Packages

Prebuilt packages are now available. Please see this
document

on how to install. These packages also include packages for the different
firmware options available.

Network Device MTU Exposed to Guest

The MTU for the TAP device associated with a virtio-net device is now exposed
to the guest. If the user provides a MTU with --net mtu=.. then that MTU is
applied to created TAP interfaces. This functionality is also exposed for
vhost-user-net devices including those created with the reference backend
(#4658, #4676.)

Boot Tracing

Support for generating a trace report for the boot time has been added
including a script for generating an SVG from that trace (#4659.)

Simplified Build Feature Flags

The set of feature flags, for e.g. experimental features, have been simplified:

  • msvh and kvm features provide support for those specific hypervisors
    (with kvm enabled by default),
  • tdx provides support for Intel TDX; and although there is no MSHV support
    now it is now possible to compile with the mshv feature (#4696,)
  • tracing adds support for boot tracing,
  • guest_debug now covers both support for gdbing a guest (formerly gdb
    feature) and dumping guest memory.

The following feature flags were removed as the functionality was enabled by
default: amx, fwdebug, cmos and common (#4679, #4632.)

Asynchronous Kernel Loading

AArch64 has gained support for loading the guest kernel asynchronously like
x86-64. (#4538)

GDB Support for AArch64

GDB stub support (accessed through --gdb under guest_debug feature) is now
available on AArch64 as well as as x86-64.

Notable Bug Fixes

  • This version incorporates a version of virtio-queue that addresses an issue
    where a rogue guest can potentially DoS the VMM (rust-vmm/vm-virtio#196.)
  • Improvements around PTY handling for virtio-console and serial devices
    (#4520, #4533, #4535.)
  • Improved error handling in virtio devices (#4626, #4605, #4509, #4631, #4697)

Deprecations

Deprecated features will be removed in a subsequent release and users should
plan to use alternatives.

  • Booting legacy firmware (compiled without a PVH header) has been deprecated.
    All the firmware options (Cloud Hypervisor OVMF and Rust Hypervisor Firmware)
    support booting with PVH so support for loading firmware in a legacy mode is no
    longer needed. This functionality will be removed in the next release.

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v26.0

Published by github-actions[bot] about 2 years ago

This release has been tracked through the v26.0
project
.

SMBIOS Improvements via --platform

--platform and the appropriate API structure has gained support for supplying
OEM strings (primarily used to communicate metadata to systemd in the guest)
(#4319, #4446) and support for specifying the UUID (#4389.)

Unified Binary MSHV and KVM Support

Support for both the MSHV and KVM hypervisors can be compiled into the same
binary with the detection of the hypervisor to use made at runtime.

Notable Bug Fixes

  • The prefetchable flag is preserved on BARs for VFIO devices (#4353, #4454)
  • PCI Express capabilties for functionality we do not support are now filtered
    out (#4456)
  • GDB breakpoint support is more reliable (#4354, #4363)
  • SIGINT and SIGTERM signals are now handled before the VM has booted
    (#4269, #4293)
  • Multiple API event loop handling bug fixes (#4309, #4362)
  • Incorrect assumptions in virtio queue numbering were addressed, allowing
    thevirtio-fs driver in OVMF to be used (#4341, #4314)
  • VHDX file format header fix (#4291)
  • The same VFIO device cannot be added twice (#4453, #4463)
  • SMBIOS tables were being incorrectly generated (#4442)

Deprecations

Deprecated features will be removed in a subsequent release and users should
plan to use alternatives.

  • The top-level kernel and initramfs members on the VmConfig have been
    moved inside a PayloadConfig as the payload member. The OpenAPI document
    has been updated to reflect the change and the old API members continue to
    function and are mapped to the new version. The expectation is that these old
    versions will be removed in the v28.0 release.

Removals

The following functionality has been removed:

  • The unused poll_queue parameter has been removed from --disk and
    equivalent. This was residual from the removal of the vhost-user-block
    spawning feature (#4402.)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v25.0

Published by github-actions[bot] over 2 years ago

This release has been tracked through the v25.0
project
.

ch-remote Improvements

The ch-remote command has gained support for creating the VM from a JSON
config and support for booting and deleting the VM from the VMM.

VM "Coredump" Support

Under the guest_debug feature flag it is now possible to extract the memory
of the guest for use in debugging with e.g. the crash utility. (#4012)

Notable Bug Fixes

  • Always restore console mode on exit (#4249, #4248)
  • Restore vCPUs in numerical order which fixes aarch64 snapshot/restore (#4244)
  • Don't try and configure IFF_RUNNING on TAP devices (#4279)
  • Propagate configured queue size through to vhost-user backend (#4286)
  • Always Program vCPU CPUID before running the vCPU to fix running on Linux
    5.16 (#4156)
  • Enable ACPI MADT "Online Capable" flag for hotpluggable vCPUs to fix newer
    Linux guest

Removals

The following functionality has been removed:

  • The mergeable option from the virtio-pmem support has been removed
    (#3968)
  • The dax option from the virtio-fs support has been removed (#3889)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v24.0

Published by github-actions[bot] over 2 years ago

This release has been tracked through the v24.0
project
.

Bypass Mode for virtio-iommu

virtio-iommu specification describes how a device can be attached by default
to a bypass domain. This feature is particularly helpful for booting a VM with
guest software which doesn't support virtio-iommu but still need to access
the device. Now that Cloud Hypervisor supports this feature, it can boot a VM
with Rust Hypervisor Firmware or OVMF even if the virtio-block device exposing
the disk image is placed behind a virtual IOMMU.

Ensure Identifiers Uniqueness

Multiple checks have been added to the code to prevent devices with identical
identifiers from being created, and therefore avoid unexpected behaviors at boot
or whenever a device was hot plugged into the VM.

Sparse Mmap support

Sparse mmap support has been added to both VFIO and vfio-user devices. This
allows the device regions that are not fully mappable to be partially mapped.
And the more a device region can be mapped into the guest address space, the
fewer VM exits will be generated when this device is accessed. This directly
impacts the performance related to this device.

Expose Platform Serial Number

A new serial_number option has been added to --platform, allowing a user to
set a specific serial number for the platform. This number is exposed to the
guest through the SMBIOS.

Notable Bug Fixes

  • Fix loading RAW firmware (#4072)
  • Reject compressed QCOW images (#4055)
  • Reject virtio-mem resize if device is not activated (#4003)
  • Fix potential mmap leaks from VFIO/vfio-user MMIO regions (#4069)
  • Fix algorithm finding HOB memory resources (#3983)

Notable Improvements

  • Refactor interrupt handling (#4083)
  • Load kernel asynchronously (#4022)
  • Only create ACPI memory manager DSDT when resizable (#4013)

Deprecations

Deprecated features will be removed in a subsequent release and users should
plan to use alternatives

  • The mergeable option from the virtio-pmem support has been deprecated
    (#3968)
  • The dax option from the virtio-fs support has been deprecated (#3889)

New on the Website

A new blog post Achieving Bare Metal Performance Within a Virtual
Machine

has been added to the Cloud Hypervisor website.

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v23.1

Published by github-actions[bot] over 2 years ago

This is a bug fix release. The following issues have been addressed:

  • Add some missing seccomp rules
  • Remove virtio-fs filesystem entries from config on removal
  • Do not delete API socket on API server start (#4026)
  • Reject virtio-mem resize if the guest doesn't activate the device
  • Fix OpenAPI naming of I/O throttling knobs
cloud-hypervisor - v23.0

Published by github-actions[bot] over 2 years ago

This release has been tracked through the v23.0
project
.

vDPA Support

A vDPA device has a datapath that complies with the virtio specification but
with a vendor specific control path. The addition of --vdpa and the REST API
equivalent allows the use of these devices with Cloud Hypervisor.

Updated OS Support list

The list of officially supported and tested OS versions has been updated to
include Ubuntu "jammy" 22.04 and EOLed versions removed.

AArch64 Memory Map Improvements

The memory map when running on AArch64 has been improved for the handling of
the UEFI region which means that the booted guest OS now has full access to its
allocated RAM. (#3938)

AMX Support

Under a compile time gate of amx it is possible compile in support for the
AMX instruction set extension for guest use. This also requires runtime
enabling with --cpu features=amx.

Notable Bug Fixes

  • Generate error when incorrect HTTP method used for some API endpoints (#3887)
  • CMOS based reset is now available to support rebooting on "jammy" (#3914)
  • ACPI tables are not produced for memory hotplug when running with
    virtio-mem (#3883)
  • virtio-iommu backed PCI segments are now comprehensively placed behind the
    vIOMMU (#3870)
  • Seccomp rules have been extended for virtio-fs to support direct access
    (#3848)

Deprecations

Deprecated features will be removed in a subsequent release and users should
plan to use alternatives

  • The mergeable option from the virtio-pmem support has been deprecated
    (#3968)
  • The dax option from the virtio-fs support has been deprecated (#3889)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v22.1

Published by github-actions[bot] over 2 years ago

This is a bug fix release. The following issues have been addressed:

  • VFIO ioctl reordering to fix MSI on AMD platforms (#3827)
  • Fix virtio-net control queue (#3829)
cloud-hypervisor - v21.1

Published by github-actions[bot] over 2 years ago

This is a bug fix release. The following issues have been addressed:

  • Missing openat() syscall from seccomp filter (#3609)
  • Ensure MMIO/PIO exits complete before pausing (#3658)
  • Support DWORD writes to MSI-X control register (#3714)
  • VFIO ioctl reordering to fix MSI on AMD platforms (#3827)
  • Fix virtio-net control queue (#3829)
cloud-hypervisor - v22.0

Published by github-actions[bot] over 2 years ago

This release has been tracked through the v22.0
project
.

GDB Debug Stub Support

Cloud Hypervisor can now be used as debug target with GDB. This is controlled
by the gdb compile time feature and details of how to use it can be found in
the gdb
documentation
.

virtio-iommu Backed Segments

In order to facilitate hotplug devices that require being behind an IOMMU (e.g.
QAT) there is a new option --platform iommu_segments=<list_of_segments> that
will place all the specified segments behind the IOMMU.

Before Boot Configuration Changes

It is now possible to change the VM configuration (e.g. add or remove devices,
resize) before the VM is booted.

virtio-balloon Free Page Reporting

If --balloon free_page_reporting=on is used then the guest can report pages
that is it not using to the VMM. The VMM will then notify the host OS that
those pages are no longer in use and can be freed. This can result in improved
memory density.

Support for Direct Kernel Booting with TDX

Through the use of TD-Shim lightweight firmware it is now possible to
directly boot into the kernel with TDX. The TDX
documentation

has been updated for this usage.

PMU Support for AArch64

A PMU is now available on AArch64 for guest performance profiling. This will be
exposed automatically if available from the host.

Documentation Under CC-BY-4.0 License

The documentation is now licensed under the "Creative Commons Attribution 4.0
International" license which is aligned with the project charter under the
Linux Foundation.

Deprecation of "Classic" virtiofsd

The use of the Rust based virtiofsd
is now recommended and we are no longer testing against the C based "classic"
version.

Notable Bug Fixes

  • Can now be used on kernels without AF_INET support (#3785)
  • virtio-balloon size is now validated against guest RAM size (#3689)
  • Ensure that I/O related KVM VM Exits are correctly handled (#3677)
  • Multiple TAP file descriptors can be used for virtio-net device hotplug (#3607)
  • Minor API improvements and fixes (#3756, #3766, #3647, #3578)
  • Fix sporadic seccomp violation from glibc memory freeing (#3610, #3609)
  • Fix Windows 11 on AArch64 due to wider MSI-X register accesses (#3714, #3720)
  • Ensure vhost-user features are correct across migration (#3737)
  • Improved vCPU topology on AArch64 (#3735, #3733)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v21.0

Published by github-actions[bot] over 2 years ago

This release has been tracked through the v21.0 project.

Efficient Local Live Migration (for Live Upgrade)

In order to support fast live upgrade of the VMM an optimised path has been added in which the memory for the VM is not compared from source to destination. This is activated by passing --local to the ch-remote send-migration command. This means that the live upgrade can complete in the order of 50ms vs 3s. (#3566)

Recommended Kernel is Now 5.15

Due to an issue in the virtio-net code in 5.14 the recommended Linux kernel is now 5.15. (#3530)

Notable Bug fixes

  • Multiple fixes were made to the OpenAPI YAML file to match the implementaion (#3555,#3562)
  • Avoid live migration deadlock when triggered during the kernel boot (#3585)
  • Support live migration within firmware (#3586)
  • Validate the virtio-net desciptor chain (#3548)
  • direct=on (O_DIRECT) can now be used with a guest that makes unaligned accesses (e.g. firmware) (#3587)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v20.2

Published by github-actions[bot] almost 3 years ago

This is a bug fix release. The following issues have been addressed:

  • Don't error out when setting up the SIGWINCH handler (for console resize)
    when this fails due to older kernel (#3456)
  • Seccomp rules were refined to remove syscalls that are now unused
  • Fix reboot on older host kernels when SIGWINCH handler was not initialised
    (#3496)
  • Fix virtio-vsock blocking issue (#3497)
cloud-hypervisor - v20.1

Published by github-actions[bot] almost 3 years ago

This is a bug fix release. The following issues have been addressed:

  • Networking performance regression with virtio-net (#3450)
  • Limit file descriptors sent in vfio-user support (#3401)
  • Fully advertise PCI MMIO config regions in ACPI tables (#3432)
  • Set the TSS and KVM identity maps so they don't overlap with firmware RAM
  • Correctly update the DeviceTree on restore
cloud-hypervisor - v20.0

Published by github-actions[bot] almost 3 years ago

v20.0

This release has been tracked through the v20.0
project
.

Multiple PCI segments support

Cloud Hypervisor is no longer limited to 31 PCI devices. For both x86_64 and
aarch64 architectures, it is now possible to create up to 16 PCI segments,
increasing the total amount of supported PCI devices to 496.

CPU pinning

For each vCPU, the user can define a limited set of host CPUs on which it is
allowed to run. This can be useful when assigning a 1:1 mapping between host and
guest resources, or when running a VM on a specific NUMA node.

Improved VFIO support

Based on VFIO region capabilities, all regions can be memory mapped, limiting
the amount of triggered VM exits, and therefore increasing the performance of
the passthrough device.

Safer code

Several sections containing unsafe Rust code have been replaced with safe
alternatives, and multiple comments have been added to clarify why the remaining
unsafe sections are safe to use.

Extended documentation

The documentation related to VFIO has been updated while some new documents have
been introduced to cover the usage of --cpus parameter as well as how to run
Cloud Hypervisor on Intel TDX.

Notable bug fixes

  • Naturally align PCI BARs on relocation (#3244)
  • Fix panic in SIGWINCH listener thread when no seccomp filter set (#3338)
  • Use the tty raw mode implementation from libc (#3344)
  • Fix the emulation of register D for CMOS/RTC device (#3393)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v19.0

Published by github-actions[bot] about 3 years ago

This release has been tracked through the v19.0 project.

Improved PTY handling for serial and virtio-console

The PTY support for serial has been enhanced with improved buffering when the
the PTY is not yet connected to. Using virtio-console with PTY now results in
the console being resized if the PTY window is also resized.

PCI boot time optimisations

Multiple optimisations have been made to the PCI handling resulting in
significant improvements in the boot time of the guest.

Improved TDX support

When using the latest TDVF firmware the ACPI tables created by the VMM are now
exposed via the firmware to the guest.

Live migration enhancements

Live migration support has been enhanced to support migration with virtio-mem
based memory hotplug and the virtio-balloon device now supports live
migration.

virtio-mem support with vfio-user

The use of vfio-user userspaces devices can now be used in conjunction with
virtio-mem based memory hotplug and unplug.

AArch64 for virtio-iommu

A paravirtualised IOMMU can now be used on the AArch64 platform.

Notable bug fixes

  • ACPI hotplugged memory is correctly restored after a live migration or
    snapshot/restore (#3165)
  • Multiple devices from the same IOMMU group can be passed through via VFIO
    (#3078 #3113)
  • Live migration with large blocks of memory was buggy due to an in issue in
    the underlying crate (#3157)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v18.0

Published by github-actions[bot] about 3 years ago

This release has been tracked through the v18.0 project.

Experimental User Device (vfio-user) support

Experimental support for running PCI devices in userspace via vfio-user
has been included. This allows the use of the SPDK NVMe vfio-user controller
with Cloud Hypervisor. This is enabled by --user-device on the command line.

Migration support for vhost-user devices

Devices exposed into the VM via vhost-user can now be migrated using the live
migration support. This requires support from the backend however the commonly
used DPDK vhost-user backend does support this.

VHDX disk image support

Images using the VHDX disk image format can now be used with Cloud Hypervisor.

Device pass through on MSHV hypervisor

When running on the MSHV hypervisor it is possible to pass through devices from
the host through to the guest (e.g with --device)

AArch64 for support virtio-mem

The reference Linux kernel we recommend for using with Cloud Hypervisor now supports virtio-mem on AArch64.

Live migration on MSHV hypervisor

Live migration is now supported when running on the MSHV hypervisor including
efficient tracking of dirty pages.

AArch64 CPU topology support

The CPU topology (as configured through --cpu topology=) can now be
configured on AArch64 platforms and is conveyed through either ACPI or device
tree.

Power button support on AArch64

Use of the ACPI power button (e.g ch-remote --api-socket=<API socket> power-button)
is now supported when running on AArch64.

Notable bug fixes

  • Using two PTY outputs e.g. --serial pty --console pty now works correctly (#3012)
  • TTY input is now always sent to the correct destination (#3005)
  • The boot is no longer blocked when using a unattached PTY on the serial console (#3004)
  • Live migration is now supported on AArch64 (#3049)
  • Ensure signal handlers are run on the correct thread (#3069)

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v17.0

Published by github-actions[bot] about 3 years ago

This release has been tracked through the v17.0
project
.

ARM64 NUMA support using ACPI

The support for ACPI on ARM64 has been enhanced to include support for
specifying a NUMA configuration using the existing control options.

Seccomp support for MSHV backend

The seccomp rules have now been extended to support running against the MSHV
hypervisor backend.

Hotplug of macvtap devices

Hotplug of macvtap devices is now supported with the file descriptor for the
network device if opened by the user and passed to the VMM. The ch-remote
tool supports this functionality when adding a network device.

Improved SGX support

The SGX support has been updated to match the latest Linux kernel support and
now supports SGX provisioning and associating EPC sections to NUMA nodes.

Inflight tracking for vhost-user devices

Support for handling inflight tracking of I/O requests has been added to the
vhost-user devices allowing recovery after device reconnection.

Notable bug fixes

  • VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
  • The VMM side of vhost-user devices no longer advertise the
    VIRTIO_F_RING_PACKED feature as they are not yet supported in the VMM
    (#2833).
  • On ARM64 VMs can be created with more than 16 vCPUs (#2763).

Contributors

Many thanks to everyone who has contributed to our release:

cloud-hypervisor - v16.0

Published by github-actions[bot] over 3 years ago

This release has been tracked through the v16.0 project.

Improved live migration support

The live migration support inside Cloud Hypervisor has been improved with the addition of the tracking of dirty pages written by the VMM to complement the tracking of dirty pages made by the guest itself. Further the internal state of the VMM now is versioned which allows the safe migration of VMs from one version of the VMM to a newer one. However further testing is required so this should be done with care. See the live migration documentation for more details.

Improved vhost-user support

When using vhost-user to access devices implemented in different processes there is now support for reconnection of those devices in the case of a restart of the backend. In addition it is now possible to operate with the direction of the vhost-user-net connection reversed with the server in the VMM and the client in the backend. This is aligns with the default approach recommended by Open vSwitch.

ARM64 ACPI and UEFI support

Cloud Hypervisor now supports using ACPI and booting from a UEFI image on ARM64. This allows the use of stock OS images without direct kernel boot.

Notable bug fixes

  • Activating fewer virtio-net queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
  • When using MQ with virtio devices Cloud Hypervisor now enforces a minimum vCPU count which ensures that the user will not see adverse guest performance (#2563).
  • The KVM clock is now correctly handled during live migration / snapshot & restore.

Removed functionality

The following formerly deprecated features have been removed:

  • Support for booting with the "LinuxBoot" protocol for ELF and bzImage
    binaries has been deprecated. When using direct boot users should configure
    their kernel with CONFIG_PVH=y.

Contributors

Many thanks to everyone who has contributed to our release including some new faces.