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