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