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