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