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