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