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