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