xref: /cloud-hypervisor/release-notes.md (revision 5f814308d6b19037f2afb3d36fe49b0aa14c0b22)
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