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