1- [v39.0](#v390) 2 - [Variable Sizing of PCI Apertures for Segments](#variable-sizing-of-pci-apertures-for-segments) 3 - [Direct Booting with bzImages](#direct-booting-with-bzimages) 4 - [Support for NVIDIA GPUDirect P2P Support](#support-for-nvidia-gpudirect-p2p-support) 5 - [Guest NMI Injection Support](#guest-nmi-injection-support) 6 - [Notable Bug Fixes](#notable-bug-fixes) 7 - [Contributors](#contributors) 8- [v38.0](#v380) 9 - [Group Rate Limiter on Block Devices](#group-rate-limiter-on-block-devices) 10 - [CPU Pinning Support for Block Device Worker Thread](#cpu-pinning-support-for-block-device-worker-thread) 11 - [Optimized Boot Time with Parallel Memory Prefault](#optimized-boot-time-with-parallel-memory-prefault) 12 - [New 'debug-console' Device](#new-debug-console-device) 13 - [Improved VFIO Device Support](#improved-vfio-device-support) 14 - [Extended CPU Affinity Support](#extended-cpu-affinity-support) 15 - [Notable Bug Fixes](#notable-bug-fixes-1) 16 - [Contributors](#contributors-1) 17- [v37.0](#v370) 18 - [Long Term Support (LTS) Release](#long-term-support-lts-release) 19 - [Multiple PCI segments Support for 32-bit VFIO devices](#multiple-pci-segments-support-for-32-bit-vfio-devices) 20 - [Configurable Named TAP Devices](#configurable-named-tap-devices) 21 - [TTY Output from Both Serial Device and Virtio Console](#tty-output-from-both-serial-device-and-virtio-console) 22 - [Faster VM Restoration from Snapshots](#faster-vm-restoration-from-snapshots) 23 - [Notable Bug Fixes](#notable-bug-fixes-2) 24 - [Contributors](#contributors-2) 25- [v36.0](#v360) 26 - [Command Line Changes](#command-line-changes) 27 - [Enabled Features Reported via API Endpoint and CLI](#enabled-features-reported-via-api-endpoint-and-cli) 28 - [NUMA Support for PCI segments](#numa-support-for-pci-segments) 29 - [CPU Topology Support on AMD Platforms](#cpu-topology-support-on-amd-platforms) 30 - [Unix Socket Backend for Serial Port](#unix-socket-backend-for-serial-port) 31 - [AIO Backend for Block Devices](#aio-backend-for-block-devices) 32 - [Documentation Improvements](#documentation-improvements) 33 - [Notable Bug Fixes](#notable-bug-fixes-3) 34 - [Contributors](#contributors-3) 35- [v35.0](#v350) 36 - [`virtio-vsock` Support for Linux Guest Kernel v6.3+](#virtio-vsock-support-for-linux-guest-kernel-v63) 37 - [User Specified Serial Number for `virtio-block`](#user-specified-serial-number-for-virtio-block) 38 - [vCPU TSC Frequency Included in Migration State](#vcpu-tsc-frequency-included-in-migration-state) 39 - [Notable Bug Fixes](#notable-bug-fixes-4) 40 - [Contributors](#contributors-4) 41- [v34.0](#v340) 42 - [Paravirtualised Panic Device Support](#paravirtualised-panic-device-support) 43 - [Improvements to VM Core Dump](#improvements-to-vm-core-dump) 44 - [QCOW2 Support for Backing Files](#qcow2-support-for-backing-files) 45 - [Minimum Host Kernel Bump](#minimum-host-kernel-bump) 46 - [Notable Bug Fixes](#notable-bug-fixes-5) 47 - [Contributors](#contributors-5) 48- [v33.0](#v330) 49 - [D-Bus based API](#d-bus-based-api) 50 - [Expose Host CPU Cache Details for AArch64](#expose-host-cpu-cache-details-for-aarch64) 51 - [Notable Bug Fixes](#notable-bug-fixes-6) 52 - [Contributors](#contributors-6) 53- [v32.0](#v320) 54 - [Increased PCI Segment Limit](#increased-pci-segment-limit) 55 - [API Changes](#api-changes) 56 - [Notable Bug Fixes](#notable-bug-fixes-7) 57 - [Contributors](#contributors-7) 58- [v31.1](#v311) 59- [v31.0](#v310) 60 - [Update to Latest `acpi_tables`](#update-to-latest-acpi_tables) 61 - [Update Reference Kernel to 6.2](#update-reference-kernel-to-62) 62 - [Improvements on Console `SIGWINCH` Handler](#improvements-on-console-sigwinch-handler) 63 - [Remove Directory Support from `MemoryZoneConfig::file`](#remove-directory-support-from-memoryzoneconfigfile) 64 - [Documentation Improvements](#documentation-improvements-1) 65 - [Notable Bug Fixes](#notable-bug-fixes-8) 66 - [Contributors](#contributors-8) 67- [v30.0](#v300) 68 - [Command Line Changes for Reduced Binary Size](#command-line-changes-for-reduced-binary-size) 69 - [Basic vfio-user Server Support](#basic-vfio-user-server-support) 70 - [Heap Profiling Support](#heap-profiling-support) 71 - [Documentation Improvements](#documentation-improvements-2) 72 - [Notable Bug Fixes](#notable-bug-fixes-9) 73 - [Contributors](#contributors-9) 74- [v28.2](#v282) 75- [v29.0](#v290) 76 - [Release Binary Supports Both MSHV and KVM](#release-binary-supports-both-mshv-and-kvm) 77 - [Snapshot/Restore and Live Migration Improvements](#snapshotrestore-and-live-migration-improvements) 78 - [Heap Allocation Improvements](#heap-allocation-improvements) 79 - [`ch-remote` Improvements](#ch-remote-improvements) 80 - [`AArch64` Documentation Integration](#aarch64-documentation-integration) 81 - [`virtio-block` Counters Enhancement](#virtio-block-counters-enhancement) 82 - [TCP Offload Control](#tcp-offload-control) 83 - [Notable Bug Fixes](#notable-bug-fixes-10) 84 - [Removals](#removals) 85 - [Deprecations](#deprecations) 86 - [Contributors](#contributors-10) 87- [v28.1](#v281) 88- [v28.0](#v280) 89 - [Community Engagement (Reminder)](#community-engagement-reminder) 90 - [Long Term Support (LTS) Release](#long-term-support-lts-release-1) 91 - [Virtualised TPM Support](#virtualised-tpm-support) 92 - [Transparent Huge Page Support](#transparent-huge-page-support) 93 - [README Quick Start Improved](#readme-quick-start-improved) 94 - [Notable Bug Fixes](#notable-bug-fixes-11) 95 - [Removals](#removals-1) 96 - [Contributors](#contributors-11) 97- [v27.0](#v270) 98 - [Community Engagement](#community-engagement) 99 - [Prebuilt Packages](#prebuilt-packages) 100 - [Network Device MTU Exposed to Guest](#network-device-mtu-exposed-to-guest) 101 - [Boot Tracing](#boot-tracing) 102 - [Simplified Build Feature Flags](#simplified-build-feature-flags) 103 - [Asynchronous Kernel Loading](#asynchronous-kernel-loading) 104 - [GDB Support for AArch64](#gdb-support-for-aarch64) 105 - [Notable Bug Fixes](#notable-bug-fixes-12) 106 - [Deprecations](#deprecations-1) 107 - [Contributors](#contributors-12) 108- [v26.0](#v260) 109 - [SMBIOS Improvements via `--platform`](#smbios-improvements-via---platform) 110 - [Unified Binary MSHV and KVM Support](#unified-binary-mshv-and-kvm-support) 111 - [Notable Bug Fixes](#notable-bug-fixes-13) 112 - [Deprecations](#deprecations-2) 113 - [Removals](#removals-2) 114 - [Contributors](#contributors-13) 115- [v25.0](#v250) 116 - [`ch-remote` Improvements](#ch-remote-improvements-1) 117 - [VM "Coredump" Support](#vm-coredump-support) 118 - [Notable Bug Fixes](#notable-bug-fixes-14) 119 - [Removals](#removals-3) 120 - [Contributors](#contributors-14) 121- [v24.0](#v240) 122 - [Bypass Mode for `virtio-iommu`](#bypass-mode-for-virtio-iommu) 123 - [Ensure Identifiers Uniqueness](#ensure-identifiers-uniqueness) 124 - [Sparse Mmap support](#sparse-mmap-support) 125 - [Expose Platform Serial Number](#expose-platform-serial-number) 126 - [Notable Bug Fixes](#notable-bug-fixes-15) 127 - [Notable Improvements](#notable-improvements) 128 - [Deprecations](#deprecations-3) 129 - [New on the Website](#new-on-the-website) 130 - [Contributors](#contributors-15) 131- [v23.1](#v231) 132- [v23.0](#v230) 133 - [vDPA Support](#vdpa-support) 134 - [Updated OS Support list](#updated-os-support-list) 135 - [`AArch64` Memory Map Improvements](#aarch64-memory-map-improvements) 136 - [`AMX` Support](#amx-support) 137 - [Notable Bug Fixes](#notable-bug-fixes-16) 138 - [Deprecations](#deprecations-4) 139 - [Contributors](#contributors-16) 140- [v22.1](#v221) 141- [v22.0](#v220) 142 - [GDB Debug Stub Support](#gdb-debug-stub-support) 143 - [`virtio-iommu` Backed Segments](#virtio-iommu-backed-segments) 144 - [Before Boot Configuration Changes](#before-boot-configuration-changes) 145 - [`virtio-balloon` Free Page Reporting](#virtio-balloon-free-page-reporting) 146 - [Support for Direct Kernel Booting with TDX](#support-for-direct-kernel-booting-with-tdx) 147 - [PMU Support for AArch64](#pmu-support-for-aarch64) 148 - [Documentation Under CC-BY-4.0 License](#documentation-under-cc-by-40-license) 149 - [Deprecation of "Classic" `virtiofsd`](#deprecation-of-classic-virtiofsd) 150 - [Notable Bug Fixes](#notable-bug-fixes-17) 151 - [Contributors](#contributors-17) 152- [v21.0](#v210) 153 - [Efficient Local Live Migration (for Live Upgrade)](#efficient-local-live-migration-for-live-upgrade) 154 - [Recommended Kernel is Now 5.15](#recommended-kernel-is-now-515) 155 - [Notable Bug fixes](#notable-bug-fixes-18) 156 - [Contributors](#contributors-18) 157- [v20.2](#v202) 158- [v20.1](#v201) 159- [v20.0](#v200) 160 - [Multiple PCI segments support](#multiple-pci-segments-support) 161 - [CPU pinning](#cpu-pinning) 162 - [Improved VFIO support](#improved-vfio-support) 163 - [Safer code](#safer-code) 164 - [Extended documentation](#extended-documentation) 165 - [Notable bug fixes](#notable-bug-fixes-19) 166 - [Contributors](#contributors-19) 167- [v19.0](#v190) 168 - [Improved PTY handling for serial and `virtio-console`](#improved-pty-handling-for-serial-and-virtio-console) 169 - [PCI boot time optimisations](#pci-boot-time-optimisations) 170 - [Improved TDX support](#improved-tdx-support) 171 - [Live migration enhancements](#live-migration-enhancements) 172 - [`virtio-mem` support with `vfio-user`](#virtio-mem-support-with-vfio-user) 173 - [AArch64 for `virtio-iommu`](#aarch64-for-virtio-iommu) 174 - [Notable bug fixes](#notable-bug-fixes-20) 175 - [Contributors](#contributors-20) 176- [v18.0](#v180) 177 - [Experimental User Device (`vfio-user`) support](#experimental-user-device-vfio-user-support) 178 - [Migration support for `vhost-user` devices](#migration-support-for-vhost-user-devices) 179 - [VHDX disk image support](#vhdx-disk-image-support) 180 - [Device pass through on MSHV hypervisor](#device-pass-through-on-mshv-hypervisor) 181 - [AArch64 for support `virtio-mem`](#aarch64-for-support-virtio-mem) 182 - [Live migration on MSHV hypervisor](#live-migration-on-mshv-hypervisor) 183 - [AArch64 CPU topology support](#aarch64-cpu-topology-support) 184 - [Power button support on AArch64](#power-button-support-on-aarch64) 185 - [Notable bug fixes](#notable-bug-fixes-21) 186 - [Contributors](#contributors-21) 187- [v17.0](#v170) 188 - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi) 189 - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend) 190 - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices) 191 - [Improved SGX support](#improved-sgx-support) 192 - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices) 193 - [Notable bug fixes](#notable-bug-fixes-22) 194 - [Contributors](#contributors-22) 195- [v16.0](#v160) 196 - [Improved live migration support](#improved-live-migration-support) 197 - [Improved `vhost-user` support](#improved-vhost-user-support) 198 - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support) 199 - [Notable bug fixes](#notable-bug-fixes-23) 200 - [Removed functionality](#removed-functionality) 201 - [Contributors](#contributors-23) 202- [v15.0](#v150) 203 - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees) 204 - [Network device rate limiting](#network-device-rate-limiting) 205 - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload) 206 - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter) 207 - [Bug fixes](#bug-fixes) 208 - [Deprecations](#deprecations-5) 209 - [Contributors](#contributors-24) 210- [v0.14.1](#v0141) 211- [v0.14.0](#v0140) 212 - [Structured event monitoring](#structured-event-monitoring) 213 - [MSHV improvements](#mshv-improvements) 214 - [Improved aarch64 platform](#improved-aarch64-platform) 215 - [Updated hotplug documentation](#updated-hotplug-documentation) 216 - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console) 217 - [Block device rate limiting](#block-device-rate-limiting) 218 - [Deprecations](#deprecations-6) 219 - [Contributors](#contributors-25) 220- [v0.13.0](#v0130) 221 - [Wider VFIO device support](#wider-vfio-device-support) 222 - [Improved huge page support](#improved-huge-page-support) 223 - [MACvTAP support](#macvtap-support) 224 - [VHD disk image support](#vhd-disk-image-support) 225 - [Improved Virtio device threading](#improved-virtio-device-threading) 226 - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button) 227 - [Contributors](#contributors-26) 228- [v0.12.0](#v0120) 229 - [ARM64 enhancements](#arm64-enhancements) 230 - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning) 231 - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend) 232 - [Enhanced "info" API](#enhanced-info-api) 233 - [Contributors](#contributors-27) 234- [v0.11.0](#v0110) 235 - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block) 236 - [Windows Guest Support](#windows-guest-support) 237 - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation) 238 - [`virtio-mmio` Removal](#virtio-mmio-removal) 239 - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64) 240 - [Improved Linux Boot Time](#improved-linux-boot-time) 241 - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling) 242 - [Default Log Level Changed](#default-log-level-changed) 243 - [New `--balloon` Parameter Added](#new---balloon-parameter-added) 244 - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support) 245 - [Notable Bug Fixes](#notable-bug-fixes-24) 246 - [Contributors](#contributors-28) 247- [v0.10.0](#v0100) 248 - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors) 249 - [Memory Zones](#memory-zones) 250 - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements) 251 - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control) 252 - [Notable Bug Fixes](#notable-bug-fixes-25) 253 - [Contributors](#contributors-29) 254- [v0.9.0](#v090) 255 - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support) 256 - [Block and Network Device Statistics](#block-and-network-device-statistics) 257 - [HTTP API Responses](#http-api-responses) 258 - [CPU Topology](#cpu-topology) 259 - [Release Build Optimization](#release-build-optimization) 260 - [Hypervisor Abstraction](#hypervisor-abstraction) 261 - [Snapshot/Restore Improvements](#snapshotrestore-improvements) 262 - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support) 263 - [Enhancements to ARM64 Support](#enhancements-to-arm64-support) 264 - [Intel SGX Support](#intel-sgx-support) 265 - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1) 266 - [Notable Bug Fixes](#notable-bug-fixes-26) 267 - [Contributors](#contributors-30) 268- [v0.8.0](#v080) 269 - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support) 270 - [Experimental ARM64 Support](#experimental-arm64-support) 271 - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests) 272 - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices) 273 - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements) 274 - [Notable Bug Fixes](#notable-bug-fixes-27) 275 - [Command Line and API Changes](#command-line-and-api-changes) 276 - [Contributors](#contributors-31) 277- [v0.7.0](#v070) 278 - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug) 279 - [Alternative `libc` Support](#alternative-libc-support) 280 - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends) 281 - [Initial RamFS Support](#initial-ramfs-support) 282 - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem) 283 - [`Seccomp` Sandboxing](#seccomp-sandboxing) 284 - [Updated Distribution Support](#updated-distribution-support) 285 - [Command Line and API Changes](#command-line-and-api-changes-1) 286 - [Contributors](#contributors-32) 287- [v0.6.0](#v060) 288 - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug) 289 - [Shared Filesystem Improvements](#shared-filesystem-improvements) 290 - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading) 291 - [Command Line Interface](#command-line-interface) 292 - [PVH Boot](#pvh-boot) 293 - [Contributors](#contributors-33) 294- [v0.5.1](#v051) 295- [v0.5.0](#v050) 296 - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing) 297 - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization) 298 - [New Interrupt Management Framework](#new-interrupt-management-framework) 299 - [Development Tools](#development-tools) 300 - [Kata Containers Integration](#kata-containers-integration) 301 - [Contributors](#contributors-34) 302- [v0.4.0](#v040) 303 - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition) 304 - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation) 305 - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends) 306 - [Guest pause and resume](#guest-pause-and-resume) 307 - [Userspace IOAPIC by default](#userspace-ioapic-by-default) 308 - [PCI BAR reprogramming](#pci-bar-reprogramming) 309 - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization) 310 - [Contributors](#contributors-35) 311- [v0.3.0](#v030) 312 - [Block device offloading](#block-device-offloading) 313 - [Network device backend](#network-device-backend) 314 - [Virtual sockets](#virtual-sockets) 315 - [HTTP based API](#http-based-api) 316 - [Memory mapped virtio transport](#memory-mapped-virtio-transport) 317 - [Paravirtualized IOMMU](#paravirtualized-iommu) 318 - [Ubuntu 19.10](#ubuntu-1910) 319 - [Large memory guests](#large-memory-guests) 320- [v0.2.0](#v020) 321 - [Network device offloading](#network-device-offloading) 322 - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi) 323 - [Debug I/O port](#debug-io-port) 324 - [Improved direct device assignment](#improved-direct-device-assignment) 325 - [Improved shared filesystem](#improved-shared-filesystem) 326 - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci) 327- [v0.1.0](#v010) 328 - [Shared filesystem](#shared-filesystem) 329 - [Initial direct device assignment support](#initial-direct-device-assignment-support) 330 - [Userspace IOAPIC](#userspace-ioapic) 331 - [Virtual persistent memory](#virtual-persistent-memory) 332 - [Linux kernel bzImage](#linux-kernel-bzimage) 333 - [Console over virtio](#console-over-virtio) 334 - [Unit testing](#unit-testing) 335 - [Integration tests parallelization](#integration-tests-parallelization) 336 337# v39.0 338 339This release has been tracked in our [roadmap 340project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 341v39.0. The following user visible changes have been made: 342 343### Variable Sizing of PCI Apertures for Segments 344 345It is now possible to use `--pci-segment` to adjust the aperture size that 346devices 32-bit and 64-bit PCI device BARs will be allocated from. Previously 347the address space was equally distributed across all the segments which may 348leave insufficient space for devices that require a large 32-bit space. With 349this change the weighting per segment can be adjusted. (#6387) 350 351### Direct Booting with bzImages 352 353Support for directly booting Linux from bzImages has been added.(#6200) 354 355### Support for NVIDIA GPUDirect P2P Support 356 357The `x_nv_gpudirect_clique` option was added to `--device` to allow the 358configuration of device P2P support with NVIDIA GPUs. (#6235) 359 360### Guest NMI Injection Support 361 362A new API endpoint and `ch-remote` option added for injecting an NMI into the 363guest. (#6047) 364 365### Notable Bug Fixes 366 367* Workaround for kernel bug affecting guest IRQ masking on AMD (#6353) 368* Correctly cleanup `sigwinch_listener` process (#6208) 369* Graceful shutdown of HTTP API thread (#6248, #6247) 370* Fix `queue_affinity` option in OpenAPI metadata (#6268) 371* Fix documentation to indicate only stream mode is supported by `virtio-vsock` 372 (#6306) 373* Fix `virtio-fs` tag validation (#6358, #6359) 374* Add missing `pvpanic` device to OpenAPI metadata (#6372) 375* Fixes for nested virtualization with VFIO devices (#6110, #6298, #6297, 376 #6319) 377* Fix for backing file for `virtio-mem` regions with snapshot/restore (#6337, 378 #6338) 379* Explicitly mark FDs used for network devices as invalid across 380 snapshot/restore (#6332, #6286) 381* Improve `event-monitor` events around reboot (#6277, #6274) 382* Fix potential deadlock around paused devices during live migration (#6293) 383* Fix panic when running `ch-remote` with no subcommand (#6230) 384* Fix hotplug of `virtio` devices after snapshot/restore and live migration 385 (#6326, #6265) 386 387### Contributors 388 389Many thanks to everyone who has contributed to our release: 390 391* Alexandru Matei <alexandru.matei@uipath.com> 392* Andrew Carp <acarp@crusoeenergy.com> 393* Bo Chen <chen.bo@intel.com> 394* Bouke van der Bijl <i@bou.ke> 395* Chris Webb <chris@arachsys.com> 396* Jinank Jain <jinankjain@microsoft.com> 397* Lucas Jacques <contact@lucasjacques.com> 398* Muminul Islam <muislam@microsoft.com> 399* Nuno Das Neves <nudasnev@microsoft.com> 400* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 401* Rob Bradford <rbradford@rivosinc.com> 402* Ruslan Mstoi <ruslan.mstoi@intel.com> 403* Stefan Nuernberger <stefan.nuernberger@cyberus-technology.de> 404* Thomas Barrett <tbarrett@crusoeenergy.com> 405* Wei Liu <liuwe@microsoft.com> 406* Yi Wang <foxywang@tencent.com> 407 408# v38.0 409 410This release has been tracked in our [roadmap 411project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 412v38.0. The following user visible changes have been made: 413 414### Group Rate Limiter on Block Devices 415 416Users now can throttle a group of block devices with the new 417`--rate-limiter-group` option. Details can be found from the [I/O 418Throttling documentation](docs/io_throttling.md) 419 420### CPU Pinning Support for Block Device Worker Thread 421 422Users now have the option to pin virt-queue threads for block devices 423to specific host cpus. 424 425### Optimized Boot Time with Parallel Memory Prefault 426 427The boot time with `prefault` option enabled is optimized via parallel 428memory prefault. 429 430### New 'debug-console' Device 431 432A 'debug-console' device is added to provide a user-configurable debug 433port for logging guest information. Details can be found from the [Debug 434IO Ports documentation](docs/debug-port.md). 435 436### Improved VFIO Device Support 437 438All non-emulated MMIO regions of VFIO devices are now mapped to the VFIO 439container, allowing PCIe P2P between all VFIO devices on the same 440VM. This is required for a wide variety of multi-GPU workloads involving 441GPUDirect P2P (DMA between two GPUs), GPUDirect RDMA (DMA between a GPU 442and an IB device). 443 444### Extended CPU Affinity Support 445 446Users now can set the vcpu affinity to a host CPU with index larger 447than 255. 448 449### Notable Bug Fixes 450 451* Enable HTT flag to avoid crashing cpu topology enumeration software 452such as hwloc in the guest (#6146) 453* Fix several security advisories from dependencies (#6134, #6141) 454* Handle non-power-of-two CPU topology properly (#6062) 455* Various bug fixes around `virtio-vsock`(#6080, #6091, #6095) 456* Enable nested virtualization on AMD if supported (#6106) 457* Align VFIO devices PCI BARs naturally (#6196) 458 459### Contributors 460 461Many thanks to everyone who has contributed to our release: 462* Alyssa Ross <hi@alyssa.is> 463* Bo Chen <chen.bo@intel.com> 464* Daniel Farina <daniel@ubicloud.com> 465* Jinank Jain <jinankjain@microsoft.com> 466* Muminul Islam <muislam@microsoft.com> 467* Peteris Rudzusiks <rye@stripe.com> 468* Philipp Schuster <philipp.schuster@cyberus-technology.de> 469* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 470* Rob Bradford <rbradford@rivosinc.com> 471* Ruslan Mstoi <ruslan.mstoi@intel.com> 472* Sean Banko <sbanko@crusoeenergy.com> 473* Thomas Barrett <tbarrett@crusoeenergy.com> 474* Wei Liu <liuwe@microsoft.com> 475* Yi Wang <foxywang@tencent.com> 476* acarp <acarp@crusoeenergy.com> 477 478# v37.0 479 480This release has been tracked in our [roadmap 481project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 482v37.0. The following user visible changes have been made: 483 484### Long Term Support (LTS) Release 485 486This release is a LTS release. Point releases for bug fixes will be made 487for the next 18 months; live migration and live upgrade will be 488supported between the point releases of the LTS. 489 490### Multiple PCI segments Support for 32-bit VFIO devices 491 492Now VFIO devices with 32-bit memory BARs can be attached to non-zero PCI 493segments on the guest, allowing users to have more 32-bit devices and 494assign such devices to appropriate NUMA nodes for better performance. 495 496### Configurable Named TAP Devices 497 498Named TAP devices now accepts IP configuration from users, such as IP 499and MAC address, as long as the named TAP device is created by Cloud 500Hypervisor (e.g. not existing TAP devices). 501 502### TTY Output from Both Serial Device and Virtio Console 503 504Now legacy serial device and virtio console can be set as TTY mode as 505the same time. This allows users to capture early boot logs with the 506legacy serial device without losing performance benefits of using 507virtio-console, when appropriate kernel configuration is used (such as 508using kernel command-line `console=hvc0 earlyprintk=ttyS0` on x86). 509 510### Faster VM Restoration from Snapshots 511 512The speed of VM restoration from snapshots is improved with a better 513implementation of deserializing JSON files. 514 515### Notable Bug Fixes 516 517* Fix aio backend behavior for block devices when writeback cache 518 disabled (#5930) 519* Fix PvPanic device PCI BAR alignment (#5956) 520* Bug fix to OpenAPI specification file (#5967) 521* Error out early for live migration when TDX is enabled (#6025) 522 523### Contributors 524 525Many thanks to everyone who has contributed to our release: 526 527* Bo Chen <chen.bo@intel.com> 528* Jinank Jain <jinankjain@microsoft.com> 529* Markus Sütter <markus.suetter@secunet.com> 530* Michael Zhao <michael.zhao@arm.com> 531* Muminul Islam <muislam@microsoft.com> 532* Rob Bradford <rbradford@rivosinc.com> 533* Rui Chang <rui.chang@arm.com> 534* Ruslan Mstoi <ruslan.mstoi@intel.com> 535* Thomas Barrett <tbarrett@crusoeenergy.com> 536* Wei Liu <liuwe@microsoft.com> 537* Yi Wang <foxywang@tencent.com> 538* Yong He <alexyonghe@tencent.com> 539 540# v36.0 541 542This release has been tracked in our [roadmap 543project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 544v36.0. The following user visible changes have been made: 545 546### Command Line Changes 547 548We switched back to use the `clap` crate to create our command line, 549since the `argh` crate is barely maintained. There were several syntax 550changes: 551 552* All `--option value` commands now are `--option=value`. 553* The `--disk DISK1 --disk DISK2` command now is `--disk DISK1 DISK2`. 554* The `-v -v -v`command now is `-vvv`. 555 556Note: the released binary size increased around 0.3M due to this change. 557 558### Enabled Features Reported via API Endpoint and CLI 559 560Now the enabled (Cargo) features of the running Cloud Hypervisor 561instance can be queried via API endpoint (`/vmm.ping`) and CLI 562(`--version -v`). 563 564### NUMA Support for PCI segments 565 566The `--numa` command is augmented with a new option `pci_segment=`, so 567that users can define the relationship between PCI segments and NUMA 568nodes. Examples can be found from the [memory documentation](docs/memory.md) 569 570### CPU Topology Support on AMD Platforms 571 572Now the CPU topology on x86_64 platforms supports multiple vendors. 573 574### Unix Socket Backend for Serial Port 575 576The `--serial` command is augmented with a new option `socket=`, allowing 577users to access the serial port using a Unix socket. 578 579### AIO Backend for Block Devices 580 581An AIO backend is added for `virtio-block` devices to improve block 582device performance when the `io_uring` feature is not supported by the 583host Operating System. 584 585### Documentation Improvements 586 587* New [documentation](docs/coverage.md) for collecting coverage data 588* Various typo fixes 589 590### Notable Bug Fixes 591 592* Fix a deadlock when TDX is enabled (#5845) 593* Only advertise AMX feature bits to guest when the AMX cpu feature is 594 enabled (#5834) 595* Correct default value for vCPU topology on AArch64 (#5893) 596 597### Contributors 598 599Many thanks to everyone who has contributed to our release: 600 601* Anatol Belski <anbelski@linux.microsoft.com> 602* Bo Chen <chen.bo@intel.com> 603* Dario Nieuwenhuis <dirbaio@dirbaio.net> 604* Jianyong Wu <jianyong.wu@arm.com> 605* Jinank Jain <jinankjain@microsoft.com> 606* Muminul Islam <muislam@microsoft.com> 607* Praveen K Paladugu <prapal@linux.microsoft.com> 608* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 609* Rob Bradford <rbradford@rivosinc.com> 610* Thomas Barrett <tbarrett@crusoeenergy.com> 611* Wei Liu <liuwe@microsoft.com> 612* Yi Wang <foxywang@tencent.com> 613* dom.song <dom.song@amperecomputing.com> 614 615# v35.0 616 617This release has been tracked in our [roadmap 618project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 619v35.0. The following user visible changes have been made: 620 621### `virtio-vsock` Support for Linux Guest Kernel v6.3+ 622 623Since kernel v6.3, a vsock packet can be included in a single descriptor, 624instead of being split over two descriptors. Our `virtio-vsock` implementation 625now support both situations. 626 627### User Specified Serial Number for `virtio-block` 628 629A new option `serial` is added to the `--block` command that allows users to 630specify a serial number for block devices which will be guest visible. 631 632### vCPU TSC Frequency Included in Migration State 633 634This ensures migration works correctly between hosts that have different TSC 635frequencies if the guest is running with TSC as the source of timekeeping. 636 637### Notable Bug Fixes 638 639* Disallow concurrent CPU resizing (#5668) 640* Handle APIC EOI message for MSHV (#5681) 641* Use wrapping add for memory offset from instruction emulator (#5719) 642* Add global spell check via the 'typos' GitHub action (#5720) 643* Ensure probing reads are block size aligned (#5727) 644* Multiple bug fixes around the latency counter for block devices 645 (#5712, #5750, #5762, #5763) 646* Replace unsound `static mut` with `once_cell` (#5772) 647 648### Contributors 649 650Many thanks to everyone who has contributed to our release: 651 652* Alyssa Ross <hi@alyssa.is> 653* Anatol Belski <anbelski@linux.microsoft.com> 654* Bo Chen <chen.bo@intel.com> 655* Christian Blichmann <cblichmann@google.com> 656* Jianyong Wu <jianyong.wu@arm.com> 657* Jinank Jain <jinankjain@microsoft.com> 658* Julian Stecklina <julian.stecklina@cyberus-technology.de> 659* Omer Faruk Bayram <omer.faruk@sartura.hr> 660* Philipp Schuster <philipp.schuster@cyberus-technology.de> 661* Rob Bradford <rbradford@rivosinc.com> 662* Ruslan Mstoi <ruslan.mstoi@intel.com> 663* Thomas Barrett <tbarrett@crusoeenergy.com> 664* Wei Liu <liuwe@microsoft.com> 665* Yi Wang <foxywang@tencent.com> 666* zhongbingnan <zhongbingnan@bytedance.com> 667 668# v34.0 669 670This release has been tracked in our [roadmap 671project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 672v34.0. The following user visible changes have been made: 673 674### Paravirtualised Panic Device Support 675 676A new device has been added that can communicate when the guest kernel has 677panicked and share those details with the VMM. This is controlled with a new 678`--pvpanic` command line option and JSON API change equivalent. (#5526) 679 680### Improvements to VM Core Dump 681 682Requesting to dump the guest memory as core dump will now transparently pause 683the VM if required; returning to the original state after. (#5604) 684 685### QCOW2 Support for Backing Files 686 687The support for QCOW2 files has been enhanced to include support for using 688backing files. (#5573) 689 690### Minimum Host Kernel Bump 691 692The minimum supported host kernel is now 5.13 in order to incorporate a bug fix 693for `KVM_FEATURE_ASYNC_PF_INT` functionality. (#5626) 694 695### Notable Bug Fixes 696 697* The x86 emulator is only compiled in if MSHV is compiled in (the kernel 698 carries out this job with KVM) (#5561). 699* A regression has been fixed in VFIO support for devices that use MSI rather 700 than MSI-X (#5658). 701* When triggering a VM shutdown or reset via I/O the vCPU thread will be 702 blocked until that asynchronous event has been received (#5645). 703* Pausing a VM is now a synchronous action with the request only completing 704 when all vCPUs are paused (#5611). 705* Event monitor support now correctly supports concurrent access (#5633). 706* Bug fixes for the QCOW2 file support (#5573). 707 708### Contributors 709 710Many thanks to everyone who has contributed to our release: 711 712* Alyssa Ross <hi@alyssa.is> 713* Anatol Belski <anbelski@linux.microsoft.com> 714* Bo Chen <chen.bo@intel.com> 715* Changyuan Lyu <changyuanl@google.com> 716* Christian Blichmann <cblichmann@google.com> 717* Manish Goregaokar <manishsmail@gmail.com> 718* Omer Faruk Bayram <omer.faruk@sartura.hr> 719* Philipp Schuster <philipp.schuster@cyberus-technology.de> 720* Praveen K Paladugu <prapal@linux.microsoft.com> 721* Rob Bradford <rbradford@rivosinc.com> 722* Ruslan Mstoi <ruslan.mstoi@intel.com> 723* Yi Wang <foxywang@tencent.com> 724* Yong He <alexyonghe@tencent.com> 725* Yu Li <liyu.yukiteru@bytedance.com> 726* dom.song <dom.song@amperecomputing.com> 727 728# v33.0 729 730This release has been tracked in our [roadmap 731project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 732v33.0. The following user visible changes have been made: 733 734### D-Bus based API 735 736A D-Bus based API has been added as an alternative to the existing REST 737API. This feature is gated by the `dbus_api` feature. Details can be 738found in the [API documentation](docs/api.md). 739 740### Expose Host CPU Cache Details for AArch64 741 742Now the CPU cache information on the host is properly exposed to the 743guest on AArch64. 744 745### Notable Bug Fixes 746 747* Report errors explicitly to users when VM failed to boot (#5453) 748* Fix VFIO on platforms with non-4k page size (#5450, #5469) 749* Fix TDX initialization (#5454) 750* Ensure all guest memory regions are page-size aligned (#5496) 751* Fix seccomp filter lists related to virtio-console, serial and pty 752 (#5506, #5524) 753* Populate APIC ID properly (#5512) 754* Ignore and warn TAP FDs in more situations (#5522) 755 756### Contributors 757 758Many thanks to everyone who has contributed to our release: 759 760* Alyssa Ross <hi@alyssa.is> 761* Anatol Belski <anbelski@linux.microsoft.com> 762* Bo Chen <chen.bo@intel.com> 763* Jianyong Wu <jianyong.wu@arm.com> 764* Omer Faruk Bayram <omer.faruk@sartura.hr> 765* Rafael Mendonca <rafaelmendsr@gmail.com> 766* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 767* Rob Bradford <rbradford@rivosinc.com> 768* Ruslan Mstoi <ruslan.mstoi@intel.com> 769* Yu Li <liyu.yukiteru@bytedance.com> 770* zhongbingnan <zhongbingnan@bytedance.com> 771 772# v32.0 773 774This release has been tracked in our [roadmap 775project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 776v32.0. The following user visible changes have been made: 777 778### Increased PCI Segment Limit 779 780The maximum number of PCI segments that can be used is now 96 (up from 16). 781 782### API Changes 783 784* The VmmPingResponse now includes the PID as well as the build details. 785 (#5348) 786 787### Notable Bug Fixes 788 789* Ignore and warn TAP FDs sent via the HTTP request body (#5350) 790* Properly preserve and close valid FDs for TAP devices (#5373) 791* Only use `KVM_ARM_VCPU_PMU_V3` if available (#5360) 792* Only touch the tty flags if it's being used (#5343) 793* Fix seccomp filter lists for vhost-user devices (#5361) 794* The number of vCPUs is capped at the hypervisor maximum (#5357) 795* Fixes for TTY reset (#5414) 796* CPU topology fixes on MSHV (#5325) 797* Seccomp fixes for older distributions (#5397) 798 799### Contributors 800 801Many thanks to everyone who has contributed to our release: 802 803* Alyssa Ross <hi@alyssa.is> 804* Anatol Belski <anbelski@linux.microsoft.com> 805* Bo Chen <chen.bo@intel.com> 806* Hao Xu <howeyxu@tencent.com> 807* Muminul Islam <muislam@microsoft.com> 808* Omer Faruk Bayram <omer.faruk@sartura.hr> 809* Rafael Mendonca <rafaelmendsr@gmail.com> 810* Rob Bradford <rbradford@rivosinc.com> 811* Ruslan Mstoi <ruslan.mstoi@intel.com> 812* Smit Gardhariya <gardhariya.smit@gmail.com> 813* Wei Liu <liuwe@microsoft.com> 814 815# v31.1 816 817This is a bug fix release. The following issues have been addressed: 818 819* Ignore and warn TAP FDs sent via the HTTP request body (#5350) 820* Properly preserve and close valid FDs for TAP devices (#5373) 821* Only use `KVM_ARM_VCPU_PMU_V3` if available (#5360) 822* Only touch the tty flags if it's being used (#5343) 823* Fix seccomp filter lists for vhost-user devices (#5361) 824 825# v31.0 826 827This release has been tracked in our [roadmap 828project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 829v31.0. The following user visible changes have been made: 830 831### Update to Latest `acpi_tables` 832 833Adapted to the latest [acpi_tables](https://github.com/rust-vmm/acpi_tables). 834There has been significant API changes in the crate. 835 836### Update Reference Kernel to 6.2 837 838Updated the recommended guest kernel version from 6.1.6 to 6.2. 839 840### Improvements on Console `SIGWINCH` Handler 841 842A separate thread had been created to capture the `SIGWINCH` signal and resize 843the guest console. Now the thread is skipped if the console is not resizable. 844 845Two completely different code paths existed for handling console resizing, one 846for `tty` and the other for `pty`. That makes the understanding of the console 847handling code unnecessarily complicated. Now the code paths are unified. Both 848`tty` and `pty` are supported in single `SIGWINCH` handler. And the new handler 849can works with kernel versions earlier than v5.5. 850 851### Remove Directory Support from `MemoryZoneConfig::file` 852 853Setting a directory to `MemoryZoneConfig::file` is no longer supported. 854 855Before this change, user can set a directory to `file` of the `--memory-zone` 856option. In that case, a temporary file will be created as the backing file for 857the `mmap(2)` operation. This functionality has been unnecessary since we had 858the native support for hugepages and allocating anonymous shared memory. 859 860### Documentation Improvements 861 862* Various improvements in API document 863* Improvements in Doc comments 864* Updated Slack channel information in README 865 866### Notable Bug Fixes 867 868* Fixed the offset setting while removing the entire mapping of `vhost-user` FS 869 client. 870* Fixed the `ShutdownVmm` and `Shutdown` commands to call the correct API 871 endpoint. 872 873### Contributors 874 875Many thanks to everyone who has contributed to our release: 876 877* Alyssa Ross <hi@alyssa.is> 878* Bo Chen <chen.bo@intel.com> 879* Daniel Farina <daniel@fdr.io> 880* Dom <peng6662001@163.com> 881* Hao Xu <howeyxu@tencent.com> 882* Muminul Islam <muislam@microsoft.com> 883* Omer Faruk Bayram <omer.faruk@sartura.hr> 884* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 885* Rob Bradford <rbradford@rivosinc.com> 886* Ruslan Mstoi <ruslan.mstoi@intel.com> 887* Smit Gardhariya <gardhariya.smit@gmail.com> 888* Yang <ailin.yang@intel.com> 889* Yong He <alexyonghe@tencent.com> 890 891# v30.0 892 893This release has been tracked in our [roadmap 894project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 895v30.0. The following user visible changes have been made: 896 897### Command Line Changes for Reduced Binary Size 898 899The `clap` crate was replaced by the `argh` crate to create our command 900line, which reduced our release binary size from 3.6MB to 3.3MB. There 901were several syntax changes: 902 903* All `--option=value` commands now are `--option value`. 904* The `--disk DISK1 DISK2` command now is `--disk DISK1 --disk DISK2`. 905* The `-vvv` command now is `-v -v -v` 906 907### Basic vfio-user Server Support 908 909Our `vfio-user` crate is extended to provide basic server side support 910with an example of gpio vfio-user device. This crate now is moved to [its 911own repository](https://github.com/rust-vmm/vfio-user) under the 912`rust-vmm` organization. 913 914### Heap Profiling Support 915 916A new building target is added for profiling purposes with examples of 917heap profiling using `dhat` gated by the `dhat-heap` feature. 918 919### Documentation Improvements 920 921The documentation on Intel TDX is expanded with details of the building 922and using [TD-Shim](https://github.com/confidential-containers/td-shim), 923references to [TDX Tools](https://github.com/intel/tdx-tools), and 924version information of guest/host kernel/TDVF/TDShim being tested. Also, 925a new 'heap profiling' documentation is added with improvements on the 926existing 'profiling' documentation. 927 928### Notable Bug Fixes 929 930* Close FDs for TAP devices that are provided to VM (#5199, #5206) 931* Set vcpu thread status properly and signal `exit_evt` upon thread exit (#5211) 932* Populate CPUID leaf 0x4000_0010 (TSC frequency) (#5178, #5179) 933* Inform the TPM guest driver upon failed TPM requests on the host (#5151) 934* Bug fix to OpenAPI specification file (#5186) 935 936### Contributors 937 938Many thanks to everyone who has contributed to our release: 939 940* Anatol Belski <anbelski@linux.microsoft.com> 941* Anirudh Rayabharam <anrayabh@linux.microsoft.com> 942* Bo Chen <chen.bo@intel.com> 943* Jinank Jain <jinankjain@microsoft.com> 944* Kaihang Zhang <kaihang.zhang@smartx.com> 945* Michael Zhao <michael.zhao@arm.com> 946* Muminul Islam <muislam@microsoft.com> 947* Philipp Schuster <philipp.schuster@cyberus-technology.de> 948* Praveen K Paladugu <prapal@linux.microsoft.com> 949* Ravi kumar Veeramally <ravikumar.veeramally@intel.com> 950* Rob Bradford <robert.bradford@intel.com> 951* Ruslan Mstoi <ruslan.mstoi@intel.com> 952* Sebastien Boeuf <sebastien.boeuf@intel.com> 953* Wei Liu <liuwe@microsoft.com> 954* Yong He <alexyonghe@tencent.com> 955* Yu Li <liyu.yukiteru@bytedance.com> 956 957# v28.2 958This is a bug fix release. The following issues have been addressed: 959 960* Fix QCOW2 refcount table size (#5034) 961* Fix unpause support on MSHV in dual binary (#5037) 962* Threads inside `virtio` devices are now shutdown on reboot (#5095) 963 964# v29.0 965 966This release has been tracked in our [roadmap 967project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 968v29.0. The following user visible changes have been made: 969 970### Release Binary Supports Both MSHV and KVM 971 972On `x86-64` the binary included in releases supports both the KVM and MSHV 973hypervisor with runtime detection to identify the correct hypervisor to use. 974 975### Snapshot/Restore and Live Migration Improvements 976 977Improvements have been made to the data structures used for both live migration 978and snapshot/restore. Unfortunately this has broken compatibility with older 979versions (support for migrating between major versions is not yet officially 980supported but has worked for some versions.) 981 982### Heap Allocation Improvements 983 984Improvements have been made to the volume of heap allocations when running with 985`virtio-block` devices along with a reduction in the peak heap size. 986 987### `ch-remote` Improvements 988 989Support for "pinging" the VMM and shutting the VMM down have been added to 990`ch-remote`. 991 992### `AArch64` Documentation Integration 993 994The documentation for `AArch64` support has been integrated into the main 995README. 996 997### `virtio-block` Counters Enhancement 998 999The counters for the `virtio-block` device has extended to include min/mean/max 1000latency counters. 1001 1002### TCP Offload Control 1003 1004The `virtio-net` device has gained support for controlling the enabling of 1005checksum and offloading. This allows the device to be used in environments 1006where the hardware lacks support for the offloading. 1007 1008### Notable Bug Fixes 1009 1010* Update dependencies including a version of `linux-loader` that addresses an 1011 infinite loop issue ([details](https://github.com/rust-vmm/linux-loader/security/advisories/GHSA-52h2-m2cf-9jh6)) 1012* Fix bugs related to `virtio-net` including an integer overflow issue 1013 (#4924, #4949) 1014* Use host `cpuid` information for L2 cache for older KVM on x86 (#4920) 1015* Memory mapped into the guest is now marked as non-dumpable which prevents large core files (#5016) 1016* Fix QCOW2 refcount table size (#5034) 1017* Fix unpause support on MSHV in dual binary (#5037) 1018* Threads inside `virtio` devices are now shutdown on reboot (#5095) 1019 1020### Removals 1021 1022No functionality has been removed in this release. 1023 1024### Deprecations 1025 1026* Support for specifying a directory with `MemoryZoneConfig::file` or 1027 `MemoryConfig::file` has been deprecated. This was originally used for 1028 supporting huge pages or shared memory backing which is now natively supported 1029 (#5085) 1030 1031### Contributors 1032 1033Many thanks to everyone who has contributed to our release: 1034 1035* Bo Chen <chen.bo@intel.com> 1036* Claudio Fontana <claudio.fontana@gmail.com> 1037* Hao Xu <howeyxu@tencent.com> 1038* Henry Wang <Henry.Wang@arm.com> 1039* Jinank Jain <jinankjain@microsoft.com> 1040* Michael Zhao <michael.zhao@arm.com> 1041* Muminul Islam <muislam@microsoft.com> 1042* Philipp Schuster <philipp.schuster@cyberus-technology.de> 1043* Rob Bradford <robert.bradford@intel.com> 1044* Sebastien Boeuf <sebastien.boeuf@intel.com> 1045* Shuaiyi Zhang <zhangsy28@lenovo.com> 1046* Wei Liu <liuwe@microsoft.com> 1047* Yong He <alexyonghe@tencent.com> 1048* Yuji Hagiwara <yuuzi41@gmail.com> 1049 1050 1051# v28.1 1052This is a bug fix release. The following issues have been addressed: 1053 1054* Update dependencies including a version of `linux-loader` that 1055addresses an infinite loop issue ([details](https://github.com/rust-vmm/linux-loader/security/advisories/GHSA-52h2-m2cf-9jh6)) 1056* Fix bugs related to `virtio-net` including an integer overflow issue 1057 (#4924, #4949) 1058* Use host `cpuid` information for L2 cache for older KVM on x86 (#4920) 1059* Improve README and documentation 1060 1061# v28.0 1062 1063This release has been tracked in our new [roadmap 1064project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 1065v28.0. 1066 1067### Community Engagement (Reminder) 1068 1069Just a reminder that we have a new mailing list to support broader community 1070discussions. Please consider 1071[subscribing](https://lists.cloudhypervisor.org/g/dev/). We plan to use 1072this to announce a regular meeting for those interested in talking about Cloud 1073Hypervisor development. 1074 1075### Long Term Support (LTS) Release 1076 1077This is the first version of Cloud Hypervisor to be released under the LTS 1078release process. Point releases for bug fixes will be made for the next 18 1079months; live migration and live upgrade will be supported between the point 1080releases of the LTS. 1081 1082### Virtualised TPM Support 1083 1084Support for adding an emulated CRB TPM has been added. This has it's own [TPM 1085documentation](docs/tpm.md). 1086 1087### Transparent Huge Page Support 1088 1089By default, but controllable through `--memory thp=off` if it possible to back 1090the guest memory with Transparent Huge Pages (no file backing/`shared=off`) 1091then this will be used resulting in improved boot performance. 1092 1093### README Quick Start Improved 1094 1095The README has been refreshed with the quick start guide updated to reflect the 1096different firmware options and to recommend the use of pre-built binaries. 1097 1098### Notable Bug Fixes 1099 1100* Inappropriate Copy-on-Write of pinned pages (e.g. VFIO) leading to higher 1101 memory consumption (#4835) 1102* Multiple `virtio` device bug fixes found through fuzzing (#4859, #4799) 1103* Large QCOW files (> 4TiB) are now supported (#4767) 1104* Support for > 31 vCPUS on aarch64 (#4863) 1105* Multiple fixes to OpenAPI specification file (#4720, #4811) 1106* Programming of the MSI-X table has been optimised leading to faster boot on 1107 newer Linux kernels (#4744) 1108* Error on reboot from race to close TAP devices (#4871) 1109* Non-spec compliant virtio-block read-only support (#4888) 1110 1111### Removals 1112 1113The following functionality has been removed: 1114 1115* Support for non-PVH firmware booting has been removed (#4511) 1116* I/O ports used for older versions of firmware have been removed (#3926) 1117* Deprecated API options for kernel/cmdline/initramfs have been removed (#4737) 1118 1119### Contributors 1120 1121Many thanks to everyone who has contributed to our release: 1122 1123* Anatol Belski <anbelski@linux.microsoft.com> 1124* Bo Chen <chen.bo@intel.com> 1125* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1126* Jianyong Wu <jianyong.wu@arm.com> 1127* Jinank Jain <jinankjain@microsoft.com> 1128* Jinrong Liang <cloudliang@tencent.com> 1129* lv.mengzhao <lv.mengzhao@zte.com.cn> 1130* Michael Zhao <michael.zhao@arm.com> 1131* Muminul Islam <muislam@microsoft.com> 1132* Praveen K Paladugu <prapal@linux.microsoft.com> 1133* Rob Bradford <robert.bradford@intel.com> 1134* Sebastien Boeuf <sebastien.boeuf@intel.com> 1135* Wei Liu <liuwe@microsoft.com> 1136 1137# v27.0 1138 1139This release has been tracked in our new [roadmap 1140project](https://github.com/orgs/cloud-hypervisor/projects/6) as iteration 1141v27.0. 1142 1143### Community Engagement 1144 1145A new mailing list has been created to support broader community discussions. 1146Please consider [subscribing](https://lists.cloudhypervisor.org/g/dev/); an 1147announcement of a regular meeting will be announced via this list shortly. 1148 1149### Prebuilt Packages 1150 1151Prebuilt packages are now available. Please see [this 1152document](https://github.com/cloud-hypervisor/obs-packaging/blob/main/README.md) 1153on how to install. These packages also include packages for the different 1154firmware options available. 1155 1156### Network Device MTU Exposed to Guest 1157 1158The MTU for the TAP device associated with a `virtio-net` device is now exposed 1159to the guest. If the user provides a MTU with `--net mtu=..` then that MTU is 1160applied to created TAP interfaces. This functionality is also exposed for 1161`vhost-user-net` devices including those created with the reference backend 1162(#4658, #4676.) 1163 1164### Boot Tracing 1165 1166Support for generating a trace report for the boot time has been added 1167including a script for generating an SVG from that trace (#4659.) 1168 1169### Simplified Build Feature Flags 1170 1171The set of feature flags, for e.g. experimental features, have been simplified: 1172 1173* `msvh` and `kvm` features provide support for those specific hypervisors 1174 (with `kvm` enabled by default), 1175* `tdx` provides support for Intel TDX; and although there is no MSHV support 1176 now it is now possible to compile with the `mshv` feature (#4696,) 1177* `tracing` adds support for boot tracing, 1178* `guest_debug` now covers both support for gdbing a guest (formerly `gdb` 1179 feature) and dumping guest memory. 1180 1181The following feature flags were removed as the functionality was enabled by 1182default: `amx`, `fwdebug`, `cmos` and `common` (#4679, #4632.) 1183 1184### Asynchronous Kernel Loading 1185 1186AArch64 has gained support for loading the guest kernel asynchronously like 1187x86-64. (#4538) 1188 1189### GDB Support for AArch64 1190 1191GDB stub support (accessed through `--gdb` under `guest_debug` feature) is now 1192available on AArch64 as well as as x86-64. 1193 1194### Notable Bug Fixes 1195 1196* This version incorporates a version of `virtio-queue` that addresses an issue 1197 where a rogue guest can potentially DoS the VMM (rust-vmm/vm-virtio#196.) 1198* Improvements around PTY handling for `virtio-console` and serial devices 1199 (#4520, #4533, #4535.) 1200* Improved error handling in virtio devices (#4626, #4605, #4509, #4631, #4697) 1201 1202### Deprecations 1203 1204Deprecated features will be removed in a subsequent release and users should 1205plan to use alternatives. 1206 1207* Booting legacy firmware (compiled without a PVH header) has been deprecated. 1208 All the firmware options (Cloud Hypervisor OVMF and Rust Hypervisor Firmware) 1209 support booting with PVH so support for loading firmware in a legacy mode is no 1210 longer needed. This functionality will be removed in the next release. 1211 1212### Contributors 1213 1214Many thanks to everyone who has contributed to our release: 1215 1216* Anatol Belski <anbelski@linux.microsoft.com> 1217* Bo Chen <chen.bo@intel.com> 1218* James O. D. Hunt <james.o.hunt@intel.com> 1219* Jianyong Wu <jianyong.wu@arm.com> 1220* Markus Napierkowski <markus.napierkowski@cyberus-technology.de> 1221* Michael Zhao <michael.zhao@arm.com> 1222* Nuno Das Neves <nudasnev@microsoft.com> 1223* Rob Bradford <robert.bradford@intel.com> 1224* Sebastien Boeuf <sebastien.boeuf@intel.com> 1225* Smit Gardhariya <sgardhariya@microsoft.com> 1226* Wei Liu <liuwe@microsoft.com> 1227 1228# v26.0 1229 1230This release has been tracked through the [v26.0 1231project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/30). 1232 1233### SMBIOS Improvements via `--platform` 1234 1235`--platform` and the appropriate API structure has gained support for supplying 1236OEM strings (primarily used to communicate metadata to systemd in the guest) 1237(#4319, #4446) and support for specifying the UUID (#4389.) 1238 1239### Unified Binary MSHV and KVM Support 1240 1241Support for both the MSHV and KVM hypervisors can be compiled into the same 1242binary with the detection of the hypervisor to use made at runtime. 1243 1244### Notable Bug Fixes 1245 1246* The prefetchable flag is preserved on BARs for VFIO devices (#4353, #4454) 1247* PCI Express capabilities for functionality we do not support are now filtered 1248 out (#4456) 1249* GDB breakpoint support is more reliable (#4354, #4363) 1250* `SIGINT` and `SIGTERM` signals are now handled before the VM has booted 1251 (#4269, #4293) 1252* Multiple API event loop handling bug fixes (#4309, #4362) 1253* Incorrect assumptions in virtio queue numbering were addressed, allowing 1254 the`virtio-fs` driver in OVMF to be used (#4341, #4314) 1255* VHDX file format header fix (#4291) 1256* The same VFIO device cannot be added twice (#4453, #4463) 1257* SMBIOS tables were being incorrectly generated (#4442) 1258 1259### Deprecations 1260 1261Deprecated features will be removed in a subsequent release and users should 1262plan to use alternatives. 1263 1264* The top-level `kernel` and `initramfs` members on the `VmConfig` have been 1265 moved inside a `PayloadConfig` as the `payload` member. The OpenAPI document 1266 has been updated to reflect the change and the old API members continue to 1267 function and are mapped to the new version. The expectation is that these old 1268 versions will be removed in the v28.0 release. 1269 1270### Removals 1271 1272The following functionality has been removed: 1273 1274* The unused `poll_queue` parameter has been removed from `--disk` and 1275 equivalent. This was residual from the the removal of the `vhost-user-block` 1276 spawning feature (#4402.) 1277 1278### Contributors 1279 1280Many thanks to everyone who has contributed to our release: 1281 1282* Alyssa Ross <hi@alyssa.is> 1283* Anatol Belski <ab@php.net> 1284* Archana Shinde <archana.m.shinde@intel.com> 1285* Bo Chen <chen.bo@intel.com> 1286* lizhaoxin1 <Lxiaoyouling@163.com> 1287* Maximilian Nitsch <maximilian.nitsch@d3tn.com> 1288* Michael Zhao <michael.zhao@arm.com> 1289* Rob Bradford <robert.bradford@intel.com> 1290* Sebastien Boeuf <sebastien.boeuf@intel.com> 1291* Steven Dake <sdake@lambdal.com> 1292* Wei Liu <liuwe@microsoft.com> 1293 1294# v25.0 1295 1296This release has been tracked through the [v25.0 1297project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/29). 1298 1299### `ch-remote` Improvements 1300 1301The `ch-remote` command has gained support for creating the VM from a JSON 1302config and support for booting and deleting the VM from the VMM. 1303 1304### VM "Coredump" Support 1305 1306Under the `guest_debug` feature flag it is now possible to extract the memory 1307of the guest for use in debugging with e.g. the `crash` utility. (#4012) 1308 1309### Notable Bug Fixes 1310 1311* Always restore console mode on exit (#4249, #4248) 1312* Restore vCPUs in numerical order which fixes aarch64 snapshot/restore (#4244) 1313* Don't try and configure `IFF_RUNNING` on TAP devices (#4279) 1314* Propagate configured queue size through to vhost-user backend (#4286) 1315* Always Program vCPU CPUID before running the vCPU to fix running on Linux 1316 5.16 (#4156) 1317* Enable ACPI MADT "Online Capable" flag for hotpluggable vCPUs to fix newer 1318 Linux guest 1319 1320### Removals 1321 1322The following functionality has been removed: 1323 1324* The `mergeable` option from the `virtio-pmem` support has been removed 1325 (#3968) 1326* The `dax` option from the `virtio-fs` support has been removed (#3889) 1327 1328### Contributors 1329 1330Many thanks to everyone who has contributed to our release: 1331 1332* Dylan Bargatze <dbargatz@users.noreply.github.com> 1333* Jinank Jain <jinankjain@microsoft.com> 1334* Michael Zhao <michael.zhao@arm.com> 1335* Rob Bradford <robert.bradford@intel.com> 1336* Sebastien Boeuf <sebastien.boeuf@intel.com> 1337* Wei Liu <liuwe@microsoft.com> 1338* Yi Wang <wang.yi59@zte.com.cn> 1339 1340# v24.0 1341 1342This release has been tracked through the [v24.0 1343project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/28). 1344 1345### Bypass Mode for `virtio-iommu` 1346 1347`virtio-iommu` specification describes how a device can be attached by default 1348to a bypass domain. This feature is particularly helpful for booting a VM with 1349guest software which doesn't support `virtio-iommu` but still need to access 1350the device. Now that Cloud Hypervisor supports this feature, it can boot a VM 1351with Rust Hypervisor Firmware or OVMF even if the `virtio-block` device exposing 1352the disk image is placed behind a virtual IOMMU. 1353 1354### Ensure Identifiers Uniqueness 1355 1356Multiple checks have been added to the code to prevent devices with identical 1357identifiers from being created, and therefore avoid unexpected behaviors at boot 1358or whenever a device was hot plugged into the VM. 1359 1360### Sparse Mmap support 1361 1362Sparse mmap support has been added to both VFIO and vfio-user devices. This 1363allows the device regions that are not fully mappable to be partially mapped. 1364And the more a device region can be mapped into the guest address space, the 1365fewer VM exits will be generated when this device is accessed. This directly 1366impacts the performance related to this device. 1367 1368### Expose Platform Serial Number 1369 1370A new `serial_number` option has been added to `--platform`, allowing a user to 1371set a specific serial number for the platform. This number is exposed to the 1372guest through the SMBIOS. 1373 1374### Notable Bug Fixes 1375 1376* Fix loading RAW firmware (#4072) 1377* Reject compressed QCOW images (#4055) 1378* Reject virtio-mem resize if device is not activated (#4003) 1379* Fix potential mmap leaks from VFIO/vfio-user MMIO regions (#4069) 1380* Fix algorithm finding HOB memory resources (#3983) 1381 1382### Notable Improvements 1383 1384* Refactor interrupt handling (#4083) 1385* Load kernel asynchronously (#4022) 1386* Only create ACPI memory manager DSDT when resizable (#4013) 1387 1388### Deprecations 1389 1390Deprecated features will be removed in a subsequent release and users should 1391plan to use alternatives 1392 1393* The `mergeable` option from the `virtio-pmem` support has been deprecated 1394 (#3968) 1395* The `dax` option from the `virtio-fs` support has been deprecated (#3889) 1396 1397### New on the Website 1398 1399A new blog post [Achieving Bare Metal Performance Within a Virtual 1400Machine](https://www.cloudhypervisor.org/blog/achieving-bare-metal-performance-within-a-virtual-machine) 1401has been added to the Cloud Hypervisor website. 1402 1403### Contributors 1404 1405Many thanks to everyone who has contributed to our release: 1406 1407* Anatol Belski <anbelski@linux.microsoft.com> 1408* Bo Chen <chen.bo@intel.com> 1409* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1410* LiHui <andrewli@kubesphere.io> 1411* Maksym Pavlenko <pavlenko.maksym@gmail.com> 1412* Rob Bradford <robert.bradford@intel.com> 1413* Sebastien Boeuf <sebastien.boeuf@intel.com> 1414* Steven Dake <steven.dake@gmail.com> 1415* Vincent Batts <vbatts@hashbangbash.com> 1416* Wei Liu <liuwe@microsoft.com> 1417 1418# v23.1 1419 1420This is a bug fix release. The following issues have been addressed: 1421 1422* Add some missing seccomp rules 1423* Remove `virtio-fs` filesystem entries from config on removal 1424* Do not delete API socket on API server start (#4026) 1425* Reject `virtio-mem` resize if the guest doesn't activate the device 1426* Fix OpenAPI naming of I/O throttling knobs 1427 1428# v23.0 1429 1430This release has been tracked through the [v23.0 1431project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/27). 1432 1433### vDPA Support 1434 1435A vDPA device has a datapath that complies with the virtio specification but 1436with a vendor specific control path. The addition of `--vdpa` and the REST API 1437equivalent allows the use of these devices with Cloud Hypervisor. 1438 1439### Updated OS Support list 1440 1441The list of officially supported and tested OS versions has been updated to 1442include Ubuntu "jammy" 22.04 and EOLed versions removed. 1443 1444### `AArch64` Memory Map Improvements 1445 1446The memory map when running on `AArch64` has been improved for the handling of 1447the UEFI region which means that the booted guest OS now has full access to its 1448allocated RAM. (#3938) 1449 1450### `AMX` Support 1451 1452Under a compile time gate of `amx` it is possible compile in support for the 1453`AMX` instruction set extension for guest use. This also requires runtime 1454enabling with `--cpu features=amx`. 1455 1456### Notable Bug Fixes 1457 1458* Generate error when incorrect HTTP method used for some API endpoints (#3887) 1459* CMOS based reset is now available to support rebooting on "jammy" (#3914) 1460* ACPI tables are not produced for memory hotplug when running with 1461 `virtio-mem` (#3883) 1462* `virtio-iommu` backed PCI segments are now comprehensively placed behind the 1463 vIOMMU (#3870) 1464* Seccomp rules have been extended for `virtio-fs` to support direct access 1465 (#3848) 1466 1467### Deprecations 1468 1469Deprecated features will be removed in a subsequent release and users should 1470plan to use alternatives 1471 1472* The `mergeable` option from the `virtio-pmem` support has been deprecated 1473 (#3968) 1474* The `dax` option from the `virtio-fs` support has been deprecated (#3889) 1475 1476### Contributors 1477 1478Many thanks to everyone who has contributed to our release: 1479 1480* Bo Chen <chen.bo@intel.com> 1481* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1482* Henry Wang <Henry.Wang@arm.com> 1483* Jianyong Wu <jianyong.wu@arm.com> 1484* LiHui <andrewli@kubesphere.io> 1485* Michael Zhao <michael.zhao@arm.com> 1486* Rob Bradford <robert.bradford@intel.com> 1487* Sebastien Boeuf <sebastien.boeuf@intel.com> 1488* Wei Liu <liuwe@microsoft.com> 1489* William Douglas <william.douglas@intel.com> 1490* Yi Wang <wang.yi59@zte.com.cn> 1491 1492# v22.1 1493 1494This is a bug fix release. The following issues have been addressed: 1495 1496* VFIO ioctl reordering to fix MSI on AMD platforms (#3827) 1497* Fix `virtio-net` control queue (#3829) 1498 1499# v22.0 1500 1501This release has been tracked through the [v22.0 1502project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/25). 1503 1504### GDB Debug Stub Support 1505 1506Cloud Hypervisor can now be used as debug target with GDB. This is controlled 1507by the `gdb` compile time feature and details of how to use it can be found in 1508the [gdb 1509documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/gdb.md). 1510 1511### `virtio-iommu` Backed Segments 1512 1513In order to facilitate hotplug devices that require being behind an IOMMU (e.g. 1514QAT) there is a new option `--platform iommu_segments=<list_of_segments>` that 1515will place all the specified segments behind the IOMMU. 1516 1517### Before Boot Configuration Changes 1518 1519It is now possible to change the VM configuration (e.g. add or remove devices, 1520resize) before the VM is booted. 1521 1522### `virtio-balloon` Free Page Reporting 1523 1524If `--balloon free_page_reporting=on` is used then the guest can report pages 1525that is it not using to the VMM. The VMM will then notify the host OS that 1526those pages are no longer in use and can be freed. This can result in improved 1527memory density. 1528 1529### Support for Direct Kernel Booting with TDX 1530 1531Through the use of `TD-Shim` lightweight firmware it is now possible to 1532directly boot into the kernel with TDX. The [TDX 1533documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/intel_tdx.md#tdshim) 1534has been updated for this usage. 1535 1536### PMU Support for AArch64 1537 1538A PMU is now available on AArch64 for guest performance profiling. This will be 1539exposed automatically if available from the host. 1540 1541### Documentation Under CC-BY-4.0 License 1542 1543The documentation is now licensed under the "Creative Commons Attribution 4.0 1544International" license which is aligned with the project charter under the 1545Linux Foundation. 1546 1547### Deprecation of "Classic" `virtiofsd` 1548 1549The use of the Rust based [virtiofsd](https://gitlab.com/virtio-fs/virtiofsd) 1550is now recommended and we are no longer testing against the C based "classic" 1551version. 1552 1553### Notable Bug Fixes 1554 1555* Can now be used on kernels without `AF_INET` support (#3785) 1556* `virtio-balloon` size is now validated against guest RAM size (#3689) 1557* Ensure that I/O related KVM VM Exits are correctly handled (#3677) 1558* Multiple TAP file descriptors can be used for `virtio-net` device hotplug (#3607) 1559* Minor API improvements and fixes (#3756, #3766, #3647, #3578) 1560* Fix sporadic seccomp violation from glibc memory freeing (#3610, #3609) 1561* Fix Windows 11 on AArch64 due to wider MSI-X register accesses (#3714, #3720) 1562* Ensure `vhost-user` features are correct across migration (#3737) 1563* Improved vCPU topology on AArch64 (#3735, #3733) 1564 1565### Contributors 1566 1567Many thanks to everyone who has contributed to our release: 1568 1569* Akira Moroo <retrage01@gmail.com> 1570* Barret Rhoden <brho@google.com> 1571* Bo Chen <chen.bo@intel.com> 1572* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1573* Feng Ye <yefeng@smartx.com> 1574* Henry Wang <Henry.Wang@arm.com> 1575* Jianyong Wu <jianyong.wu@arm.com> 1576* lizhaoxin1 <Lxiaoyouling@163.com> 1577* Michael Zhao <michael.zhao@arm.com> 1578* Rob Bradford <robert.bradford@intel.com> 1579* Sebastien Boeuf <sebastien.boeuf@intel.com> 1580* Wei Liu <liuwe@microsoft.com> 1581 1582# v21.0 1583 1584This release has been tracked through the [v21.0 1585project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/24). 1586 1587### Efficient Local Live Migration (for Live Upgrade) 1588 1589In order to support fast live upgrade of the VMM an optimised path has been 1590added in which the memory for the VM is not compared from source to 1591destination. This is activated by passing `--local` to the `ch-remote 1592send-migration` command. This means that the live upgrade can complete in the 1593order of 50ms vs 3s. (#3566) 1594 1595### Recommended Kernel is Now 5.15 1596 1597Due to an issue in the `virtio-net` code in 5.14 the recommended Linux kernel 1598is now 5.15. (#3530) 1599 1600### Notable Bug fixes 1601 1602* Multiple fixes were made to the OpenAPI YAML file to match the implementation (#3555,#3562) 1603* Avoid live migration deadlock when triggered during the kernel boot (#3585) 1604* Support live migration within firmware (#3586) 1605* Validate the `virtio-net` descriptor chain (#3548) 1606* `direct=on` (`O_DIRECT`) can now be used with a guest that makes unaligned accesses (e.g. firmware) (#3587) 1607 1608### Contributors 1609 1610Many thanks to everyone who has contributed to our release: 1611 1612* Anatol Belski <anbelski@linux.microsoft.com> 1613* Barret Rhoden <brho@google.com> 1614* Bo Chen <chen.bo@intel.com> 1615* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1616* Henry Wang <Henry.Wang@arm.com> 1617* Liang Zhou <zhoul110@chinatelecom.cn> 1618* Michael Zhao <michael.zhao@arm.com> 1619* Muhammad Falak R Wani <falakreyaz@gmail.com> 1620* Muminul Islam <muislam@microsoft.com> 1621* Rob Bradford <robert.bradford@intel.com> 1622* Sebastien Boeuf <sebastien.boeuf@intel.com> 1623* Wei Liu <liuwe@microsoft.com> 1624* Ziye Yang <ziye.yang@intel.com> 1625 1626# v20.2 1627 1628This is a bug fix release. The following issues have been addressed: 1629 1630* Don't error out when setting up the SIGWINCH handler (for console resize) 1631 when this fails due to older kernel (#3456) 1632* Seccomp rules were refined to remove syscalls that are now unused 1633* Fix reboot on older host kernels when SIGWINCH handler was not initialised 1634 (#3496) 1635* Fix virtio-vsock blocking issue (#3497) 1636 1637# v20.1 1638 1639This is a bug fix release. The following issues have been addressed: 1640 1641* Networking performance regression with `virtio-net` (#3450) 1642* Limit file descriptors sent in `vfio-user` support (#3401) 1643* Fully advertise PCI MMIO config regions in ACPI tables (#3432) 1644* Set the TSS and KVM identity maps so they don't overlap with firmware RAM 1645* Correctly update the `DeviceTree` on restore 1646 1647# v20.0 1648 1649This release has been tracked through the [v20.0 1650project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/23). 1651 1652### Multiple PCI segments support 1653 1654Cloud Hypervisor is no longer limited to 31 PCI devices. For both `x86_64` and 1655`aarch64` architectures, it is now possible to create up to 16 PCI segments, 1656increasing the total amount of supported PCI devices to 496. 1657 1658### CPU pinning 1659 1660For each vCPU, the user can define a limited set of host CPUs on which it is 1661allowed to run. This can be useful when assigning a 1:1 mapping between host and 1662guest resources, or when running a VM on a specific NUMA node. 1663 1664### Improved VFIO support 1665 1666Based on VFIO region capabilities, all regions can be memory mapped, limiting 1667the amount of triggered VM exits, and therefore increasing the performance of 1668the passthrough device. 1669 1670### Safer code 1671 1672Several sections containing unsafe Rust code have been replaced with safe 1673alternatives, and multiple comments have been added to clarify why the remaining 1674unsafe sections are safe to use. 1675 1676### Extended documentation 1677 1678The documentation related to VFIO has been updated while some new documents have 1679been introduced to cover the usage of `--cpus` parameter as well as how to run 1680Cloud Hypervisor on Intel TDX. 1681 1682### Notable bug fixes 1683 1684* Naturally align PCI BARs on relocation (#3244) 1685* Fix panic in SIGWINCH listener thread when no seccomp filter set (#3338) 1686* Use the tty raw mode implementation from libc (#3344) 1687* Fix the emulation of register D for CMOS/RTC device (#3393) 1688 1689### Contributors 1690 1691Many thanks to everyone who has contributed to our release: 1692 1693* Alyssa Ross <hi@alyssa.is> 1694* Bo Chen <chen.bo@intel.com> 1695* Fabiano Fidêncio <fabiano.fidencio@intel.com> 1696* Michael Zhao <michael.zhao@arm.com> 1697* Muminul Islam <muislam@microsoft.com> 1698* Rob Bradford <robert.bradford@intel.com> 1699* Sebastien Boeuf <sebastien.boeuf@intel.com> 1700* Wei Liu <liuwe@microsoft.com> 1701* Willen Yang <willenyang@gmail.com> 1702* William Douglas <william.douglas@intel.com> 1703* Ziye Yang <ziye.yang@intel.com> 1704 1705# v19.0 1706 1707This release has been tracked through the [v19.0 1708project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/22). 1709 1710### Improved PTY handling for serial and `virtio-console` 1711 1712The PTY support for serial has been enhanced with improved buffering when the 1713the PTY is not yet connected to. Using `virtio-console` with PTY now results in 1714the console being resized if the PTY window is also resized. 1715 1716### PCI boot time optimisations 1717 1718Multiple optimisations have been made to the PCI handling resulting in 1719significant improvements in the boot time of the guest. 1720 1721### Improved TDX support 1722 1723When using the latest TDVF firmware the ACPI tables created by the VMM are now 1724exposed via the firmware to the guest. 1725 1726### Live migration enhancements 1727 1728Live migration support has been enhanced to support migration with `virtio-mem` 1729based memory hotplug and the `virtio-balloon` device now supports live 1730migration. 1731 1732### `virtio-mem` support with `vfio-user` 1733 1734The use of `vfio-user` userspaces devices can now be used in conjunction with 1735`virtio-mem` based memory hotplug and unplug. 1736 1737### AArch64 for `virtio-iommu` 1738 1739A paravirtualised IOMMU can now be used on the AArch64 platform. 1740 1741### Notable bug fixes 1742 1743* ACPI hotplugged memory is correctly restored after a live migration or 1744 snapshot/restore (#3165) 1745* Multiple devices from the same IOMMU group can be passed through via VFIO 1746 (#3078 #3113) 1747* Live migration with large blocks of memory was buggy due to an in issue in 1748 the underlying crate (#3157) 1749 1750### Contributors 1751 1752Many thanks to everyone who has contributed to our release: 1753 1754* Alyssa Ross <hi@alyssa.is> 1755* Bo Chen <chen.bo@intel.com> 1756* Henry Wang <Henry.Wang@arm.com> 1757* Hui Zhu <teawater@antfin.com> 1758* Jianyong Wu <jianyong.wu@arm.com> 1759* Li Yu <liyu.yukiteru@bytedance.com> 1760* Michael Zhao <michael.zhao@arm.com> 1761* Muminul Islam <muislam@microsoft.com> 1762* Rob Bradford <robert.bradford@intel.com> 1763* Sebastien Boeuf <sebastien.boeuf@intel.com> 1764* Wei Liu <liuwe@microsoft.com> 1765* William Douglas <william.douglas@intel.com> 1766* Yu Li <liyu.yukiteru@bytedance.com> 1767 1768# v18.0 1769 1770This release has been tracked through the [v18.0 1771project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/21). 1772 1773### Experimental User Device (`vfio-user`) support 1774 1775Experimental support for running PCI devices in userspace via `vfio-user` 1776has been included. This allows the use of the SPDK NVMe `vfio-user` controller 1777with Cloud Hypervisor. This is enabled by `--user-device` on the command line. 1778 1779### Migration support for `vhost-user` devices 1780 1781Devices exposed into the VM via `vhost-user` can now be migrated using the live 1782migration support. This requires support from the backend however the commonly 1783used DPDK `vhost-user` backend does support this. 1784 1785### VHDX disk image support 1786 1787Images using the VHDX disk image format can now be used with Cloud Hypervisor. 1788 1789### Device pass through on MSHV hypervisor 1790 1791When running on the MSHV hypervisor it is possible to pass through devices from 1792the host through to the guest (e.g with `--device`) 1793 1794### AArch64 for support `virtio-mem` 1795 1796The reference Linux kernel we recommend for using with Cloud Hypervisor now supports `virtio-mem` on AArch64. 1797 1798### Live migration on MSHV hypervisor 1799 1800Live migration is now supported when running on the MSHV hypervisor including 1801efficient tracking of dirty pages. 1802 1803### AArch64 CPU topology support 1804 1805The CPU topology (as configured through `--cpu topology=`) can now be 1806configured on AArch64 platforms and is conveyed through either ACPI or device 1807tree. 1808 1809### Power button support on AArch64 1810 1811Use of the ACPI power button (e.g `ch-remote --api-socket=<API socket> power-button`) 1812is now supported when running on AArch64. 1813 1814### Notable bug fixes 1815 1816* Using two PTY outputs e.g. `--serial pty --console pty` now works correctly (#3012) 1817* TTY input is now always sent to the correct destination (#3005) 1818* The boot is no longer blocked when using a unattached PTY on the serial console (#3004) 1819* Live migration is now supported on AArch64 (#3049) 1820* Ensure signal handlers are run on the correct thread (#3069) 1821 1822### Contributors 1823 1824Many thanks to everyone who has contributed to our release: 1825 1826* Alyssa Ross <hi@alyssa.is> 1827* Anatol Belski <anbelski@linux.microsoft.com> 1828* Arafatms <arafatms@outlook.com> 1829* Bo Chen <chen.bo@intel.com> 1830* Fazla Mehrab <akm.fazla.mehrab@vt.edu> 1831* Henry Wang <Henry.Wang@arm.com> 1832* Jianyong Wu <jianyong.wu@arm.com> 1833* Jiaqi Gao <jiaqi.gao@intel.com> 1834* Markus Theil <markus.theil@tu-ilmenau.de> 1835* Muminul Islam <muislam@microsoft.com> 1836* Rob Bradford <robert.bradford@intel.com> 1837* Sebastien Boeuf <sebastien.boeuf@intel.com> 1838* Wei Liu <liuwe@microsoft.com> 1839* Yu Li <liyu.yukiteru@bytedance.com> 1840 1841# v17.0 1842 1843This release has been tracked through the [v17.0 1844project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20). 1845 1846### ARM64 NUMA support using ACPI 1847 1848The support for ACPI on ARM64 has been enhanced to include support for 1849specifying a NUMA configuration using the existing control options. 1850 1851### `Seccomp` support for MSHV backend 1852 1853The `seccomp` rules have now been extended to support running against the MSHV 1854hypervisor backend. 1855 1856### Hotplug of `macvtap` devices 1857 1858Hotplug of `macvtap` devices is now supported with the file descriptor for the 1859network device if opened by the user and passed to the VMM. The `ch-remote` 1860tool supports this functionality when adding a network device. 1861 1862### Improved SGX support 1863 1864The SGX support has been updated to match the latest Linux kernel support and 1865now supports SGX provisioning and associating EPC sections to NUMA nodes. 1866 1867### Inflight tracking for `vhost-user` devices 1868 1869Support for handling inflight tracking of I/O requests has been added to the 1870`vhost-user` devices allowing recovery after device reconnection. 1871 1872### Notable bug fixes 1873 1874* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821). 1875* The VMM side of `vhost-user` devices no longer advertise the 1876 `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM 1877(#2833). 1878* On ARM64 VMs can be created with more than 16 vCPUs (#2763). 1879 1880### Contributors 1881 1882Many thanks to everyone who has contributed to our release: 1883 1884* Anatol Belski <anbelski@linux.microsoft.com> 1885* Arafatms <arafatms@outlook.com> 1886* Bo Chen <chen.bo@intel.com> 1887* Fei Li <lifei.shirley@bytedance.com> 1888* Henry Wang <Henry.Wang@arm.com> 1889* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com> 1890* Jianyong Wu <jianyong.wu@arm.com> 1891* Li Hangjing <lihangjing@bytedance.com> 1892* Michael Zhao <michael.zhao@arm.com> 1893* Muminul Islam <muislam@microsoft.com> 1894* Rob Bradford <robert.bradford@intel.com> 1895* Sebastien Boeuf <sebastien.boeuf@intel.com> 1896* Wei Liu <liuwe@microsoft.com> 1897* Yukiteru <wfly1998@sina.com> 1898 1899# v16.0 1900 1901This release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19). 1902 1903### Improved live migration support 1904 1905The 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](docs/live_migration.md) for more details. 1906 1907### Improved `vhost-user` support 1908 1909When 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. 1910 1911### ARM64 ACPI and UEFI support 1912 1913Cloud 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. 1914 1915### Notable bug fixes 1916 1917* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578). 1918* 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). 1919* The KVM clock is now correctly handled during live migration / snapshot & restore. 1920 1921### Removed functionality 1922 1923The following formerly deprecated features have been removed: 1924 1925* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage` 1926 binaries has been deprecated. When using direct boot users should configure 1927 their kernel with `CONFIG_PVH=y`. 1928 1929### Contributors 1930 1931Many thanks to everyone who has contributed to our release including some new faces. 1932 1933* Anatol Belski <anbelski@linux.microsoft.com> 1934* Bo Chen <chen.bo@intel.com> 1935* Dayu Liu <liu.dayu@zte.com.cn> 1936* Henry Wang <Henry.Wang@arm.com> 1937* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com> 1938* Jianyong Wu <jianyong.wu@arm.com> 1939* Michael Zhao <michael.zhao@arm.com> 1940* Mikko Ylinen <mikko.ylinen@intel.com> 1941* Muminul Islam <muislam@microsoft.com> 1942* Ren Lei <ren.lei4@zte.com.cn> 1943* Rob Bradford <robert.bradford@intel.com> 1944* Sebastien Boeuf <sebastien.boeuf@intel.com> 1945* Wei Liu <liuwe@microsoft.com> 1946* Yi Wang <wang.yi59@zte.com.cn> 1947 1948# v15.0 1949 1950This release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18). 1951 1952Highlights for `cloud-hypervisor` version v15.0 include: 1953 1954### Version numbering and stability guarantees 1955 1956This release is the first in a new version numbering scheme to represent that 1957we believe Cloud Hypervisor is maturing and entering a period of stability. 1958With this new release we are beginning our new stability guarantees: 1959 1960* The API (including command line options) will not be removed or changed in a 1961 breaking way without a minimum of 2 releases notice. Where possible warnings 1962 will be given about the use of deprecated functionality and the deprecations 1963 will be documented in the release notes. 1964* Point releases will be made between individual releases where there are 1965 substantial bug fixes or security issues that need to be fixed. 1966 1967Currently the following items are **not** guaranteed across updates: 1968 1969* Snapshot/restore is not supported across different versions 1970* Live migration is not supported across different versions 1971* The following features are considered experimental and may change 1972 substantially between releases: TDX, SGX. 1973 1974### Network device rate limiting 1975 1976Building on our existing support for rate limiting block activity the network 1977device also now supports rate limiting. Full details of the controls are in the 1978[IO throttling documentation.](docs/io_throttling.md) 1979 1980### Support for runtime control of `virtio-net` guest offload 1981 1982The guest is now able to change the offload settings for the `virtio-net` 1983device. As well as providing a useful control this mitigates an issue in the 1984Linux kernel where the guest will attempt to reprogram the offload settings 1985even if they are not advertised as configurable (#2528). 1986 1987### `--api-socket` supports file descriptor parameter 1988 1989The `--api-socket` can now take an `fd=` parameter to specify an existing file 1990descriptor to use. This is particularly beneficial for frameworks that need to 1991programmatically control Cloud Hypervisor. 1992 1993### Bug fixes 1994 1995* A workaround has been put in place to mitigate a Linux kernel issues that 1996 results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277). 1997* PCI BARs are now correctly aligned removing the need for the guest to 1998 reprogram them (#1797,#1798) 1999* Handle TAP interface not being writable within virtio-net (due to the buffer 2000 exhaustion on the host) (#2517) 2001* The recommended Linux kernel is now v5.12.0 as it contains a fix that 2002 prevents snapshot & restore working (#2535) 2003 2004### Deprecations 2005 2006Deprecated features will be removed in a subsequent release and users should plan to use alternatives 2007 2008* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage` 2009 binaries has been deprecated. When using direct boot users should configure 2010 their kernel with `CONFIG_PVH=y`. Will be removed in v16.0. 2011 2012### Contributors 2013 2014Many thanks to everyone who has contributed to our release including some new faces. 2015 2016* Alyssa Ross <hi@alyssa.is> 2017* Anatol Belski <anbelski@linux.microsoft.com> 2018* Bo Chen <chen.bo@intel.com> 2019* Gaelan Steele <gbs@canishe.com> 2020* Jianyong Wu <jianyong.wu@arm.com> 2021* Michael Zhao <michael.zhao@arm.com> 2022* Muminul Islam <muislam@microsoft.com> 2023* Rob Bradford <robert.bradford@intel.com> 2024* Sebastien Boeuf <sebastien.boeuf@intel.com> 2025* Wei Liu <liuwe@microsoft.com> 2026* William Douglas <william.douglas@intel.com> 2027 2028# v0.14.1 2029 2030Bug fix release branched off the v0.14.0 release. The following bugs were fixed 2031in this release: 2032 2033* CPU hotplug on Windows failed due to misreported CPU state information and 2034 the lack of HyperV CPUID bit enabled (#2437, #2449, #2436) 2035* A seccomp rule was missing that was triggered on CPU unplug (#2455) 2036* A bounds check in VIRTIO queue validation was erroneously generating 2037 DescriptorChainTooShort errors in certain circumstances (#2450, #2424) 2038 2039# v0.14.0 2040 2041This release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17). 2042 2043Highlights for `cloud-hypervisor` version 0.14.0 include: 2044 2045### Structured event monitoring 2046 2047A new option was added to the VMM `--event-monitor` which reports structured 2048events (JSON) over a file or file descriptor at key events in the lifecycle of 2049the VM. The list of events is limited at the moment but will be further 2050extended over subsequent releases. The events exposed form part of the Cloud 2051Hypervisor API surface. 2052 2053### MSHV improvements 2054 2055Basic support has been added for running Windows guests atop the MSHV 2056hypervisor as an alternative to KVM and further improvements have been made to 2057the MSHV support. 2058 2059### Improved aarch64 platform 2060 2061The aarch64 platform has been enhanced with more devices exposed to the running 2062VM including an enhanced serial UART. 2063 2064### Updated hotplug documentation 2065 2066The documentation for the hotplug support has been updated to reflect the use 2067of the `ch-remote` tool and to include details of `virtio-mem` based hotplug as 2068well as documenting hotplug of paravirtualised and VFIO devices. 2069 2070### PTY control for serial and `virtio-console` 2071 2072The `--serial` and `--console` parameters can now direct the console to a PTY 2073allowing programmatic control of the console from another process through the 2074PTY subsystem. 2075 2076### Block device rate limiting 2077 2078The block device performance can now be constrained as part of the VM 2079configuration allowing rate limiting. Full details of the controls are in the 2080[IO throttling documentation.](docs/io_throttling.md) 2081 2082 2083### Deprecations 2084 2085Deprecated features will be removed in a subsequent release and users should plan to use alternatives 2086 2087* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage` 2088 binaries has been deprecated. When using direct boot users should configure 2089 their kernel with `CONFIG_PVH=y`. 2090 2091 2092### Contributors 2093 2094Many thanks to everyone who has contributed to our 0.14.0 release including 2095some new faces. 2096 2097Bo Chen <chen.bo@intel.com> 2098Henry Wang <Henry.Wang@arm.com> 2099Iggy Jackson <iggy@theiggy.com> 2100Jiachen Zhang <zhangjiachen.jaycee@bytedance.com> 2101Michael Zhao <michael.zhao@arm.com> 2102Muminul Islam <muislam@microsoft.com> 2103Penny Zheng <Penny.Zheng@arm.com> 2104Rob Bradford <robert.bradford@intel.com> 2105Sebastien Boeuf <sebastien.boeuf@intel.com> 2106Vineeth Pillai <viremana@linux.microsoft.com> 2107Wei Liu <liuwe@microsoft.com> 2108William Douglas <william.r.douglas@gmail.com> 2109Zide Chen <zide.chen@intel.com> 2110 2111# v0.13.0 2112 2113This release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16). 2114 2115Highlights for `cloud-hypervisor` version 0.13.0 include: 2116 2117### Wider VFIO device support 2118 2119It is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI 2120devices that do not support MSI or MSI-X and instead rely on INTx interrupts. 2121Most notably this widens the support to most NVIDIA cards with the proprietary 2122drivers. 2123 2124### Improved huge page support 2125 2126Through the addition of `hugepage_size` on `--memory` it is now possible to 2127specify the desired size of the huge pages used when allocating the guest 2128memory. The user is required to ensure they have sufficient pages of the 2129desired size in their pool. 2130 2131### MACvTAP support 2132 2133It is now possible to provide file descriptors using the `fd` parameter to 2134`--net` which point at TAP devices that have already been opened by the user. 2135This aids integration with `libvirt` but also permits the use of MACvTAP 2136support. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md). 2137 2138### VHD disk image support 2139 2140It is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw 2141disk image with Cloud Hypervisor. 2142 2143### Improved Virtio device threading 2144 2145Device threads are now derived from the main VMM thread which allows more 2146restrictive seccomp filters to be applied to them. The threads also have a 2147predictable name derived from the device id. 2148 2149### Clean shutdown support via synthetic power button 2150 2151It is now possible to request that the guest VM shut itself down by triggering 2152a synthetic ACPI power button press from the VMM. If the guest is listening for 2153such an event (e.g. using systemd) then it will process the event and cleanly 2154shut down. This functionality is exposed through the HTTP API and can be 2155triggered via `ch-remote --api-socket=<API socket> power-button`. 2156 2157### Contributors 2158 2159Many thanks to everyone who has contributed to our 0.13.0 release including 2160some new faces. 2161 2162* Bo Chen <chen.bo@intel.com> 2163* Mikko Ylinen <mikko.ylinen@intel.com> 2164* Muminul Islam <muislam@microsoft.com> 2165* Rob Bradford <robert.bradford@intel.com> 2166* Samuel Ortiz <sameo@linux.intel.com> 2167* Sebastien Boeuf <sebastien.boeuf@intel.com> 2168* Vineeth Pillai <viremana@linux.microsoft.com> 2169* Wei Liu <liuwe@microsoft.com> 2170* William Douglas <william.r.douglas@gmail.com> 2171* Xie Yongji <xieyongji@bytedance.com> 2172 2173# v0.12.0 2174 2175This release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15). 2176 2177Highlights for `cloud-hypervisor` version 0.12.0 include: 2178 2179### ARM64 enhancements 2180 2181The use of `--watchdog` is now fully supported as is the ability to reboot the 2182VM from within the guest when running Cloud Hypervisor on an ARM64 system. 2183 2184### Removal of `vhost-user-net` and `vhost-user-block` self spawning 2185 2186In order to use `vhost-user-net` or `vhost-user-block` backends the user is now 2187responsible for starting the backend and providing the socket for the VMM to 2188use. This functionality was deprecated in the last release and how now been 2189removed. 2190 2191### Migration of `vhost-user-fs` backend 2192 2193The `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is 2194instead hosted in [it's own 2195repository](https://gitlab.com/virtio-fs/virtiofsd-rs) 2196 2197### Enhanced "info" API 2198 2199The `vm.info` HTTP API endpoint has been extended to include the details of the 2200devices used by the VM including any VFIO devices used. 2201 2202### Contributors 2203 2204Many thanks to everyone who has contributed to our 0.12.0 release: 2205 2206* Anatol Belski <anbelski@linux.microsoft.com> 2207* Julio Montes <julio.montes@intel.com> 2208* Michael Zhao <michael.zhao@arm.com> 2209* Muminul Islam <muislam@microsoft.com> 2210* Rob Bradford <robert.bradford@intel.com> 2211* Samuel Ortiz <sameo@linux.intel.com> 2212* Wei Liu <liuwe@microsoft.com> 2213 2214# v0.11.0 2215 2216This release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14). 2217 2218Highlights for `cloud-hypervisor` version 0.11.0 include: 2219 2220### `io_uring` support by default for `virtio-block` 2221 2222Provided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will 2223be used for a significantly higher performance block device. 2224 2225### Windows Guest Support 2226 2227This is the first release where we officially support Windows running as a 2228guest. Full details of how to setup the image and run Cloud Hypervisor with a 2229Windows guest can be found in the dedicated [Windows 2230documentation](docs/windows.md). 2231 2232### `vhost-user` "Self Spawning" Deprecation 2233 2234Automatically spawning a `vhost-user-net` or `vhost-user-block` backend is now 2235deprecated. Users of this functionality will receive a warning and should make 2236adjustments. The functionality will be removed in the next release. 2237 2238### `virtio-mmio` Removal 2239 2240Support for using the `virtio-mmio` transport, rather than using PCI, has been 2241removed. This has been to simplify the code and significantly 2242reduce the testing burden of the project. 2243 2244### Snapshot/Restore support for ARM64 2245 2246When running on the ARM64 architecture snapshot and restore has now been 2247implemented. 2248 2249### Improved Linux Boot Time 2250 2251The time to boot the Linux kernel has been significantly improved by the 2252identifying some areas of delays around PCI bus probing, IOAPIC programming and 2253MPTABLE issues. Full details can be seen in #1728. 2254 2255### `SIGTERM/SIGINT` Interrupt Signal Handling 2256 2257When the VMM process receives the `SIGTERM` or `SIGINT` signals then it will 2258trigger the VMM process to cleanly deallocate resources before exiting. The 2259guest VM will not be cleanly shutdown but the VMM process will clean up its 2260resources. 2261 2262### Default Log Level Changed 2263 2264The default logging level was changed to include warnings which should make it 2265easier to see potential issues. New [logging 2266documentation](docs/logging) was also added. 2267 2268### New `--balloon` Parameter Added 2269 2270Control of the setup of `virtio-balloon` has been moved from `--memory` to its 2271own dedicated parameter. This makes it easier to add more balloon specific 2272controls without overloading `--memory`. 2273 2274### Experimental `virtio-watchdog` Support 2275 2276Support for using a new `virtio-watchdog` has been added which can be used to 2277have the VMM reboot the guest if the guest userspace fails to ping the 2278watchdog. This is enabled with `--watchdog` and requires kernel support. 2279 2280### Notable Bug Fixes 2281 2282* MTRR bit was missing from CPUID advertised to guest 2283* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170) 2284* CPU identification string is now exposed to the guest 2285* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as 2286 read only so avoids excessive VM exits (#1795) 2287* PCI device hotplug after an unplug was fixed (#1802) 2288* When using the ACPI method to resize the guest memory the full reserved size 2289 can be used (#1803) 2290* Snapshot and restore followed by a second snapshot and restore now works 2291 correctly 2292* Snapshot and restore of VMs with more than 2GiB in one region now work 2293 correctly 2294 2295### Contributors 2296 2297Many thanks to everyone who has contributed to our 0.11.0 release including some new faces. 2298 2299* Anatol Belski <anbelski@linux.microsoft.com> 2300* Bo Chen <chen.bo@intel.com> 2301* Daniel Verkamp <dverkamp@chromium.org> 2302* Henry Wang <Henry.Wang@arm.com> 2303* Hui Zhu <teawater@antfin.com> 2304* Jiangbo Wu <jiangbo.wu@intel.com> 2305* Josh Soref <jsoref@users.noreply.github.com> 2306* Julio Montes <julio.montes@intel.com> 2307* Michael Zhao <michael.zhao@arm.com> 2308* Muminul Islam <muislam@microsoft.com> 2309* pierwill <19642016+pierwill@users.noreply.github.com> 2310* Praveen Paladugu <prapal@microsoft.com> 2311* Rob Bradford <robert.bradford@intel.com> 2312* Sebastien Boeuf <sebastien.boeuf@intel.com> 2313* Wei Liu <liuwe@microsoft.com> 2314 2315 2316# v0.10.0 2317 2318This release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13). 2319 2320Highlights for `cloud-hypervisor` version 0.10.0 include: 2321 2322### `virtio-block` Support for Multiple Descriptors 2323 2324Some `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers. 2325 2326### Memory Zones 2327 2328Support has been added for fine grained control of memory allocation for the guest. This includes controlling the backing of sections of guest memory, assigning to specific host NUMA nodes and assigning memory and vCPUs to specific memory nodes inside the guest. Full details of this can be found in the [memory documentation](docs/memory.md). 2329 2330### `Seccomp` Sandbox Improvements 2331 2332All the remaining threads and devices are now isolated within their own `seccomp` filters. This provides a layer of sandboxing and enhances the security model of `cloud-hypervisor`. 2333 2334### Preliminary KVM HyperV Emulation Control 2335 2336A new option (`kvm_hyperv`) has been added to `--cpus` to provide an option to toggle on KVM's HyperV emulation support. This enables progress towards booting Windows without adding extra emulated devices. 2337 2338### Notable Bug Fixes 2339 2340- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596) 2341- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564) 2342- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593) 2343- `--version` shows the version for released binaries (#1669) 2344- Errors generated by worker threads for `virtio` devices are now printed out (#1551) 2345 2346### Contributors 2347 2348Many thanks to everyone who has contributed to our 0.10.0 release including some new faces. 2349 2350* Alyssa Ross <hi@alyssa.is> 2351* Amey Narkhede <ameynarkhede02@gmail.com> 2352* Anatol Belski <ab@php.net> 2353* Bo Chen <chen.bo@intel.com> 2354* Hui Zhu <teawater@antfin.com> 2355* Michael Zhao <michael.zhao@arm.com> 2356* Muminul Islam <muislam@microsoft.com> 2357* Rob Bradford <robert.bradford@intel.com> 2358* Samuel Ortiz <sameo@linux.intel.com> 2359* Sebastien Boeuf <sebastien.boeuf@intel.com> 2360* Wei Liu <liuwe@microsoft.com> 2361 2362# v0.9.0 2363 2364This release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12). 2365 2366Highlights for `cloud-hypervisor` version 0.9.0 include: 2367 2368### `io_uring` Based Block Device Support 2369 2370If the `io_uring` feature is enabled and the host kernel supports it then `io_uring` will be used for block devices. This results a very significant performance improvement. 2371 2372### Block and Network Device Statistics 2373 2374Statistics for activity of the `virtio` network and block devices is now exposed through a new `vm.counters` HTTP API entry point. These take the form of simple counters which can be used to observe the activity of the VM. 2375 2376### HTTP API Responses 2377 2378The HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF. 2379 2380### CPU Topology 2381 2382A `topology` parameter has been added to `--cpus` which allows the configuration of the guest CPU topology allowing the user to specify the numbers of sockets, packages per socket, cores per package and threads per core. 2383 2384### Release Build Optimization 2385 2386Our release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size. 2387 2388### Hypervisor Abstraction 2389 2390A new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`. 2391 2392### Snapshot/Restore Improvements 2393 2394Multiple improvements have been made to the VM snapshot/restore support that was added in the last release. This includes persisting more vCPU state and in particular preserving the guest paravirtualized clock in order to avoid vCPU hangs inside the guest when running with multiple vCPUs. 2395 2396### Virtio Memory Ballooning Support 2397 2398A `virtio-balloon` device has been added, controlled through the `resize` control, which allows the reclamation of host memory by resizing a memory balloon inside the guest. 2399 2400### Enhancements to ARM64 Support 2401 2402The ARM64 support introduced in the last release has been further enhanced with support for using PCI for exposing devices into the guest as well as multiple bug fixes. It also now supports using an initramfs when booting. 2403 2404### Intel SGX Support 2405 2406The guest can now use Intel SGX if the host supports it. Details can be found in the dedicated [SGX documentation](docs/intel_sgx.md). 2407 2408### `Seccomp` Sandbox Improvements 2409 2410The most frequently used virtio devices are now isolated with their own `seccomp` filters. It is also now possible to pass `--seccomp=log` which result in the logging of requests that would have otherwise been denied to further aid development. 2411 2412### Notable Bug Fixes 2413 2414* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes. 2415* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338) 2416* A workaround is now in place for when KVM reports MSRs available MSRs that are in fact unreadable preventing snapshot/restore from working correctly (#1543). 2417* `virtio-mmio` based devices are now more widely tested (#275). 2418* Multiple issues have been fixed with virtio device configuration (#1217) 2419* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521) 2420 2421### Contributors 2422 2423Many thanks to everyone who has contributed to our 0.9.0 release including some new faces. 2424 2425* Anatol Belski <ab@php.net> 2426* Bo Chen <chen.bo@intel.com> 2427* Dr. David Alan Gilbert <dgilbert@redhat.com> 2428* Henry Wang <Henry.Wang@arm.com> 2429* Howard Zhang <howard.zhang@arm.com> 2430* Hui Zhu <teawater@antfin.com> 2431* Jianyong Wu <jianyong.wu@arm.com> 2432* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 2433* LiYa'nan <oliverliyn@gmail.com> 2434* Michael Zhao <michael.zhao@arm.com> 2435* Muminul Islam <muislam@microsoft.com> 2436* Praveen Paladugu <prapal@microsoft.com> 2437* Ricardo Koller <ricarkol@gmail.com> 2438* Rob Bradford <robert.bradford@intel.com> 2439* Samuel Ortiz <sameo@linux.intel.com> 2440* Sebastien Boeuf <sebastien.boeuf@intel.com> 2441* Stefano Garzarella <sgarzare@redhat.com> 2442* Wei Liu <liuwe@microsoft.com> 2443 2444 2445# v0.8.0 2446 2447This release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10). 2448 2449Highlights for `cloud-hypervisor` version 0.8.0 include: 2450 2451### Experimental Snapshot and Restore Support 2452 2453This release includes the first version of the snapshot and restore feature. 2454This allows a VM to be paused and then subsequently snapshotted. At a later 2455point that snapshot may be restored into a new running VM identical to the 2456original VM at the point it was paused. 2457 2458This feature can be used for offline migration from one VM host to another, to 2459allow the upgrading or rebooting of the host machine transparently to the guest 2460or for templating the VM. This is an experimental feature and cannot be used on 2461a VM using passthrough (VFIO) devices. Issues with SMP have also been observed 2462(#1176). 2463 2464### Experimental ARM64 Support 2465 2466Included in this release is experimental support for running on ARM64. 2467Currently only `virtio-mmio` devices and a serial port are supported. Full 2468details can be found in the [ARM64 documentation](docs/arm64.md). 2469 2470### Support for Using 5-level Paging in Guests 2471 2472If the host supports it the guest is now enabled for 5-level paging (aka LA57). 2473This works when booting the Linux kernel with a vmlinux, bzImage or firmware 2474based boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not 2475work due to current limitations in the PVH boot process. 2476 2477### Virtio Device Interrupt Suppression for Network Devices 2478 2479With `virtio-net` and `vhost-user-net` devices the guest can suppress 2480interrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This 2481can lead to an improvement in performance by reducing the number of interrupts 2482the guest must service. 2483 2484### `vhost_user_fs` Improvements 2485 2486The implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`. 2487 2488 2489### Notable Bug Fixes 2490 2491* VMs that have not yet been booted can now be deleted (#1110). 2492* By creating the `tap` device ahead of creating the VM it is not required to 2493 run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273). 2494* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to 2495 the specification and synchronizes to the underlying filesystem as required 2496 based on guest feature negotiation. This avoids potential data loss (#399, 2497 #1216). 2498* When booting with a large number of vCPUs then the ACPI table would be 2499 overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the 2500 `MPTABLE` will no longer be generated (#1132). 2501* Shutting down VMs that have been paused is now supported (#816). 2502* Created socket files are deleted on shutdown (#1083). 2503* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds 2504 (#751). 2505 2506### Command Line and API Changes 2507 2508This is non exhaustive list of HTTP API and command line changes: 2509 2510* All user visible socket parameters are now consistently called `socket` 2511 rather than `sock` in some cases. 2512* The `ch-remote` tool now shows any error message generated by the VMM 2513* The `wce` parameter has been removed from `--disk` as the feature is always 2514 offered for negotiation. 2515* `--net` has gained a `host_mac` option that allows the setting of the MAC 2516 address for the `tap` device on the host. 2517 2518### Contributors 2519 2520Many thanks to everyone who has contributed to our 0.8.0 release including some new faces. 2521 2522* Anatol Belski <ab@php.net> 2523* Arron Wang <arron.wang@intel.com> 2524* Bo Chen <chen.bo@intel.com> 2525* Dr. David Alan Gilbert <dgilbert@redhat.com> 2526* Henry Wang <Henry.Wang@arm.com> 2527* Hui Zhu <teawater@antfin.com> 2528* LiYa'nan <oliverliyn@gmail.com> 2529* Michael Zhao <michael.zhao@arm.com> 2530* Rob Bradford <robert.bradford@intel.com> 2531* Samuel Ortiz <sameo@linux.intel.com> 2532* Sebastien Boeuf <sebastien.boeuf@intel.com> 2533* Sergio Lopez <slp@redhat.com> 2534 2535# v0.7.0 2536 2537This release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 2538 2539Highlights for `cloud-hypervisor` version 0.7.0 include: 2540 2541### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug 2542 2543Further to our effort to support modifying a running guest we now support 2544hotplug and unplug of the following virtio backed devices: block, network, 2545pmem, virtio-fs and vsock. This functionality is available on the (default) PCI 2546based transport and is exposed through the HTTP API. The `ch-remote` utility 2547provides a CLI for adding or removing these device types after the VM has 2548booted. User can use the `id` parameter on the devices to choose names for 2549devices to ease their removal. 2550 2551### Alternative `libc` Support 2552 2553Cloud Hypervisor can now be compiled with the `musl` C library and this release 2554contains a static binary compiled using that toolchain. 2555 2556### Multithreaded Multi Queued `vhost-user` Backends 2557 2558The `vhost-user` backends for network and block support that are shipped by 2559Cloud Hypervisor have been enhanced to support multiple threads and queues to 2560improve throughput. These backends are used automatically if `vhost_user=true` 2561is passed when the devices are created. 2562 2563### Initial RamFS Support 2564 2565By passing the `--initramfs` command line option the user can specify a file to 2566be loaded into the guest memory to be used as the kernel initial filesystem. 2567This is usually used to allow the loading of drivers needed to be able to 2568access the real root filesystem but it can also be used standalone for a very 2569minimal image. 2570 2571### Alternative Memory Hotplug: `virtio-mem` 2572 2573As well as supporting ACPI based hotplug Cloud Hypervisor now supports using 2574the `virtio-mem` hotplug alternative. This can be controlled by the 2575`hotplug_method` parameter on the `--memory` command line option. It currently 2576requires kernel patches to be able to support it. 2577 2578### `Seccomp` Sandboxing 2579 2580Cloud Hypervisor now has support for restricting the system calls that the 2581process can use via the `seccomp` security API. This on by default and is 2582controlled by the `--seccomp` command line option. 2583 2584### Updated Distribution Support 2585 2586With the release of Ubuntu 20.04 we have added that to the list of supported 2587distributions and is part of our regular testing programme. 2588 2589### Command Line and API Changes 2590 2591This is non exhaustive list of HTTP API and command line changes 2592 2593* New `id` fields added for devices to allow them to be named to ease removal. 2594 If no name is specified the VMM chooses one. 2595* Use `--memory`'s `shared` and `hugepages` controls for determining backing 2596 memory instead of providing a path. 2597* The `--vsock` parameter only takes one device as the Linux kernel only 2598 supports a single Vsock device. The REST API has removed the vector for this 2599 option and replaced it with a single optional field. 2600* There is enhanced validation of the command line and API provided 2601 configurations to ensure that the provided options are compatible e.g. that 2602 shared memory is in use if any attempt is made to used a `vhost-user` backed 2603 device. 2604* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and 2605 `add-vsock` subcommands. For removal `remove-device` is used. The REST API 2606 has appropriate new HTTP endpoints too. 2607* Specifying a `size` with `--pmem` is no longer required and instead the size 2608 will be obtained from the file. A `discard_writes` option has also been added 2609 to provide the equivalent of a read-only file. 2610* The parameters to `--block-backend` have been changed to more closely align 2611 with those used by `--disk`. 2612 2613### Contributors 2614 2615Many thanks to everyone who has contributed to our 0.7.0 release including some new faces. 2616 2617* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 2618* Bo Chen <chen.bo@intel.com> 2619* Cathy Zhang <cathy.zhang@intel.com> 2620* Damjan Georgievski <gdamjan@gmail.com> 2621* Dean Sheather <dean@coder.com> 2622* Eryu Guan <eguan@linux.alibaba.com> 2623* Hui Zhu <teawater@antfin.com> 2624* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 2625* Martin Xu <martin.xu@intel.com> 2626* Muminul Islam <muislam@microsoft.com> 2627* Rob Bradford <robert.bradford@intel.com> 2628* Samuel Ortiz <sameo@linux.intel.com> 2629* Sebastien Boeuf <sebastien.boeuf@intel.com> 2630* Sergio Lopez <slp@redhat.com> 2631* Yang Zhong <yang.zhong@intel.com> 2632* Yi Sun <yi.y.sun@linux.intel.com> 2633 2634# v0.6.0 2635 2636This release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 2637 2638Highlights for `cloud-hypervisor` version 0.6.0 include: 2639 2640### Directly Assigned Devices Hotplug 2641 2642We continued our efforts around supporting dynamically changing the guest 2643resources. After adding support for CPU and memory hotplug, Cloud Hypervisor 2644now supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`) 2645devices into an already running guest. This closes the features gap for 2646providing a complete Kata Containers workloads support with Cloud Hypervisor. 2647 2648### Shared Filesystem Improvements 2649 2650We enhanced our shared filesystem support through many `virtio-fs` improvements. 2651By adding support for DAX, parallel processing of multiple requests, `FS_IO`, 2652`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we 2653improved our filesystem sharing performance, but also made it more stable and 2654compatible with other `virtio-fs` implementations. 2655 2656### Block and Networking IO Self Offloading 2657 2658When choosing to offload the paravirtualized block and networking I/O to an 2659external process (through the `vhost-user` protocol), Cloud Hypervisor now 2660automatically spawns its default `vhost-user-blk` and `vhost-user-net` backends 2661into their own, separate processes. 2662This provides a seamless paravirtualized I/O user experience for those who want 2663to run their guest I/O into separate executions contexts. 2664 2665### Command Line Interface 2666 2667More and more Cloud Hypervisor services are exposed through the 2668[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only 2669accessible via relatively cumbersome HTTP calls. In order to abstract 2670those calls into a more user friendly tool, we created a Cloud Hypervisor 2671Command Line Interface (CLI) called `ch-remote`. The `ch-remote` binary 2672is created with each build and available e.g. at 2673`cloud-hypervisor/target/debug/ch-remote` when doing a debug build. 2674 2675Please check `ch-remote --help` for a complete description of all available 2676commands. 2677 2678### PVH Boot 2679 2680In addition to the traditional Linux boot protocol, Cloud Hypervisor now 2681supports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html). 2682 2683### Contributors 2684 2685With the 0.6.0 release, we are welcoming a few new contributors. Many thanks 2686to them and to everyone that contributed to this release: 2687 2688* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 2689* Arron Wang <arron.wang@intel.com> 2690* Bin Liu <liubin0329@gmail.com> 2691* Bo Chen <chen.bo@intel.com> 2692* Cathy Zhang <cathy.zhang@intel.com> 2693* Eryu Guan <eguan@linux.alibaba.com> 2694* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 2695* Liu Bo <bo.liu@linux.alibaba.com> 2696* Qiu Wenbo <qiuwenbo@phytium.com.cn> 2697* Rob Bradford <robert.bradford@intel.com> 2698* Samuel Ortiz <sameo@linux.intel.com> 2699* Sebastien Boeuf <sebastien.boeuf@intel.com> 2700* Sergio Lopez <slp@redhat.com> 2701 2702# v0.5.1 2703 2704This is a bugfix release branched off v0.5.0. It contains the following fixes: 2705 2706* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez 2707* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf 2708* Fixed error reporting for resize command - Samuel Ortiz 2709* Double reboot workaround (#783) - Rob Bradford 2710* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford 2711 2712# v0.5.0 2713 2714This release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6). 2715 2716Highlights for `cloud-hypervisor` version 0.5.0 include: 2717 2718### Virtual Machine Dynamic Resizing 2719 2720With 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and 2721memory hot plug as well. This allows to dynamically resize Cloud Hypervisor 2722guests which is needed for e.g. Kubernetes related use cases. 2723The memory hot plug implementation is based on the same framework as the CPU hot 2724plug/unplug one, i.e. hardware-reduced ACPI notifications to the guest. 2725 2726Next on our VM resizing roadmap is the PCI devices hotplug feature. 2727 2728### Multi-Queue, Multi-Threaded Paravirtualization 2729 2730We enhanced our virtio networking and block support by having both devices use 2731multiple I/O queues handled by multiple threads. This improves our default 2732paravirtualized networking and block devices throughput. 2733 2734### New Interrupt Management Framework 2735 2736We improved our interrupt management implementation by introducing an Interrupt 2737Manager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device) 2738crates discussions. This move made the code significantly cleaner, and allowed 2739us to remove several KVM related dependencies from crates like the PCI and 2740virtio ones. 2741 2742### Development Tools 2743 2744In order to provide a better developer experience, we worked on improving our 2745build, development and testing tools. 2746Somehow similar to the excellent 2747[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool), 2748we now provide a [dev_cli script](scripts/dev_cli.sh). 2749 2750With this new tool, our users and contributors will be able to build and test 2751Cloud Hypervisor through a containerized environment. 2752 2753### Kata Containers Integration 2754 2755We spent some significant time and efforts debugging and fixing our integration 2756with the [Kata Containers](https://github.com/kata-containers) project. Cloud 2757Hypervisor is now a fully supported Kata Containers hypervisor, and is 2758integrated into the project's CI. 2759 2760### Contributors 2761 2762Many thanks to everyone that contributed to the 0.5.0 release: 2763 2764* Bo Chen <chen.bo@intel.com> 2765* Cathy Zhang <cathy.zhang@intel.com> 2766* Qiu Wenbo <qiuwenbo@phytium.com.cn> 2767* Rob Bradford <robert.bradford@intel.com> 2768* Samuel Ortiz <sameo@linux.intel.com> 2769* Sebastien Boeuf <sebastien.boeuf@intel.com> 2770* Sergio Lopez <slp@redhat.com> 2771* Yang Zhong <yang.zhong@intel.com> 2772 2773# v0.4.0 2774 2775This release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4). 2776 2777Highlights for `cloud-hypervisor` version 0.4.0 include: 2778 2779### Dynamic virtual CPUs addition 2780 2781As a way to vertically scale Cloud Hypervisor guests, we now support dynamically 2782adding virtual CPUs to the guests, a mechanism also known as CPU hot plug. 2783Through hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs 2784to an already running guest and the high level operations for that process are 2785documented [here](docs/hotplug.md) 2786 2787During the next release cycles we are planning to extend Cloud Hypervisor 2788hot plug framework to other resources, namely PCI devices and memory. 2789 2790### Programmatic firmware tables generation 2791 2792As part of the CPU hot plug feature enablement, and as a requirement for hot 2793plugging other resources like devices or RAM, we added support for 2794programmatically generating the needed ACPI tables. Through a dedicated 2795`acpi-tables` crate, we now have a flexible and clean way of generating those 2796tables based on the VMM device model and topology. 2797 2798### Filesystem and block devices vhost-user backends 2799 2800Our objective of running all Cloud Hypervisor paravirtualized I/O to a 2801vhost-user based framework is getting closer as we've added Rust based 2802implementations for vhost-user-blk and virtiofs backends. Together with the 2803vhost-user-net backend that came with the 0.3.0 release, this will form the 2804default Cloud Hypervisor I/O architecture. 2805 2806### Guest pause and resume 2807 2808As an initial requirement for enabling live migration, we added support for 2809pausing and resuming any VMM components. As an intermediate step towards live 2810migration, the upcoming guest snapshotting feature will be based on the pause 2811and resume capabilities. 2812 2813### Userspace IOAPIC by default 2814 2815As a way to simplify our device manager implementation, but also in order to 2816stay away from privileged rings as often as possible, any device that relies on 2817pin based interrupts will be using the userspace IOAPIC implementation by 2818default. 2819 2820### PCI BAR reprogramming 2821 2822In order to allow for a more flexible device model, and also support guests 2823that would want to move PCI devices, we added support for PCI devices BAR 2824reprogramming. 2825 2826### New `cloud-hypervisor` organization 2827 2828As we wanted to be more flexible on how we manage the Cloud Hypervisor project, 2829we decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor). 2830Together with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 2831project, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux) 2832and [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 2833repositories. We may also use it to host any rust-vmm that we'd need to 2834temporarily fork. 2835Thanks to GitHub's seamless repository redirections, the move is completely 2836transparent to all Cloud Hypervisor contributors, users and followers. 2837 2838### Contributors 2839 2840Many thanks to everyone that contributed to the 0.4.0 release: 2841 2842* Cathy Zhang <cathy.zhang@intel.com> 2843* Emin Ghuliev <drmint80@gmail.com> 2844* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 2845* Qiu Wenbo <qiuwenbo@phytium.com.cn> 2846* Rob Bradford <robert.bradford@intel.com> 2847* Samuel Ortiz <sameo@linux.intel.com> 2848* Sebastien Boeuf <sebastien.boeuf@intel.com> 2849* Sergio Lopez <slp@redhat.com> 2850* Wu Zongyong <wuzongyong@linux.alibaba.com> 2851 2852# v0.3.0 2853 2854This release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3). 2855 2856Highlights for `cloud-hypervisor` version 0.3.0 include: 2857 2858### Block device offloading 2859 2860We continue to work on offloading paravirtualized I/O to external processes, 2861and we added support for 2862[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends. 2863This enables `cloud-hypervisor` users to plug a `vhost-user` based block device 2864like [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage 2865backend. 2866 2867### Network device backend 2868 2869The previous release provided support for 2870[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we 2871also provide a TAP based vhost-user-net backend, implemented in Rust. Together 2872with the vhost-user-net device implementation, this will eventually become the 2873Cloud Hypervisor default paravirtualized networking architecture. 2874 2875### Virtual sockets 2876 2877In order to more efficiently and securely communicate between host and guest, 2878we added an hybrid implementation of the 2879[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address 2880family over virtio. Credits go to the 2881[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md) 2882project as our implementation is a copy of theirs. 2883 2884### HTTP based API 2885 2886In anticipation of the need to support asynchronous operations to Cloud 2887Hypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP 2888based API to the VMM. The API will be more extensively documented during the 2889next release cycle. 2890 2891### Memory mapped virtio transport 2892 2893In order to support potential PCI-free use cases, we added support for the 2894[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002) 2895transport layer. This will allow us to support simple, minimal guest 2896configurations that do not require a PCI bus emulation. 2897 2898### Paravirtualized IOMMU 2899 2900As we want to improve our nested guests support, we added support for exposing 2901a [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows 2902for a safer nested virtio and directly assigned devices support. 2903 2904To add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor 2905users to be able to specify if devices had to be handled through this virtual 2906IOMMU or not. In particular, the `--disk` option now expects disk paths to be 2907prefixed with a `path=` string, and supports an optional `iommu=[on|off]` 2908setting. 2909 2910### Ubuntu 19.10 2911 2912With the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware), 2913we can now support the latest 2914[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images. 2915 2916### Large memory guests 2917 2918After simplifying and changing our guest address space handling, we can now 2919support guests with large amount of memory (more than 64GB). 2920 2921# v0.2.0 2922 2923This release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2). 2924 2925Highlights for `cloud-hypervisor` version 0.2.0 include: 2926 2927### Network device offloading 2928 2929As part of our general effort to offload paravirtualized I/O to external 2930processes, we added support for 2931[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This 2932enables `cloud-hypervisor` users to plug a `vhost-user` based networking device 2933(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend. 2934 2935### Minimal hardware-reduced ACPI 2936 2937In order to properly implement and guest reset and shutdown, we implemented 2938a minimal version of the hardware-reduced ACPI specification. Together with 2939a tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to 2940cleanly reboot and shutdown. 2941 2942The ACPI implementation is a `cloud-hypervisor` build time option that is 2943enabled by default. 2944 2945### Debug I/O port 2946 2947Based on the Firecracker idea of using a dedicated I/O port to measure guest 2948boot times, we added support for logging guest events through the 2949[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html) 2950PC debug port. This allows, among other things, for granular guest boot time 2951measurements. See our [debug port documentation](docs/debug-port.md) for more 2952details. 2953 2954### Improved direct device assignment 2955 2956We fixed a major performance issue with our initial VFIO implementation: When 2957enabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads 2958were (in many cases) not cached. After correctly tagging the guest memory from 2959`cloud-hypervisor` we're now able to reach the expected performance from 2960directly assigned devices. 2961 2962### Improved shared filesystem 2963 2964We added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt) 2965support to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system. 2966This provides better shared filesystem IO performance with a smaller guest 2967memory footprint. 2968 2969### Ubuntu bionic based CI 2970 2971Thanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 2972improvements, we are now able to boot Ubuntu bionic images. We added those to 2973our CI pipeline. 2974 2975# v0.1.0 2976 2977This release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1). 2978 2979Highlights for `cloud-hypervisor` version 0.1.0 include: 2980 2981### Shared filesystem 2982 2983We added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file 2984system, allowing for an efficient and reliable way of sharing a filesystem 2985between the host and the `cloud-hypervisor` guest. 2986 2987See our [filesystem sharing](docs/fs.md) documentation for more details on how 2988to use virtio-fs with `cloud-hypervisor`. 2989 2990### Initial direct device assignment support 2991 2992VFIO (Virtual Function I/O) is a kernel framework that exposes direct device 2993access to userspace. `cloud-hypervisor` uses VFIO to directly assign host 2994physical devices into its guest. 2995 2996See our [VFIO](docs/vfio.md) documentation for more detail on how to directly 2997assign host devices to `cloud-hypervisor` guests. 2998 2999### Userspace IOAPIC 3000 3001`cloud-hypervisor` supports a so-called split IRQ chip implementation by 3002implementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC). 3003By moving part of the IRQ chip implementation from kernel space to user space, 3004the IRQ chip emulation does not always run in a fully privileged mode. 3005 3006### Virtual persistent memory 3007 3008The `virtio-pmem` implementation emulates a virtual persistent memory device 3009that `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device 3010allows to bypass the guest page cache and improve the guest memory footprint. 3011 3012### Linux kernel bzImage 3013 3014The `cloud-hypervisor` linux kernel loader now supports direct kernel boot from 3015`bzImage` kernel images, which is usually the format that Linux distributions 3016use to ship their kernels. For example, this allows for booting from the host 3017distribution kernel image. 3018 3019### Console over virtio 3020 3021`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although 3022using this device as a guest console can potentially cut some early boot 3023messages, it can reduce the guest boot time and provides a complete console 3024implementation. 3025 3026The `virtio-console` device is enabled by default for the guest console. 3027Switching back to the legacy serial port is done by selecting 3028`--serial tty --console off` from the command line. 3029 3030### Unit testing 3031 3032We now run all unit tests from all our crates directly from our CI. 3033 3034### Integration tests parallelization 3035 3036The CI cycle run time has been significantly reduced by refactoring our 3037integration tests; allowing them to all be run in parallel. 3038