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