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