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