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