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