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