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