xref: /cloud-hypervisor/release-notes.md (revision 7fc0776aac192b4fdde9597e2e75bf6415a5371f)
1*7fc0776aSSebastien Boeuf- [v20.0](#v200)
2*7fc0776aSSebastien Boeuf    - [Multiple PCI segments support](#multiple-pci-segments-support)
3*7fc0776aSSebastien Boeuf    - [CPU pinning](#cpu-pinning)
4*7fc0776aSSebastien Boeuf    - [Improved VFIO support](#improved-vfio-support)
5*7fc0776aSSebastien Boeuf    - [Safer code](#safer-code)
6*7fc0776aSSebastien Boeuf    - [Extended documentation](#extended-documentation)
7*7fc0776aSSebastien Boeuf    - [Notable bug fixes](#notable-bug-fixes)
8*7fc0776aSSebastien Boeuf    - [Contributors](#contributors)
9d00eb4aaSRob Bradford- [v19.0](#v190)
10d00eb4aaSRob Bradford    - [Improved PTY handling for serial and `virtio-console`](#improved-pty-handling-for-serial-and-virtio-console)
11d00eb4aaSRob Bradford    - [PCI boot time optimisations](#pci-boot-time-optimisations)
12d00eb4aaSRob Bradford    - [Improved TDX support](#improved-tdx-support)
13d00eb4aaSRob Bradford    - [Live migration enhancements](#live-migration-enhancements)
14d00eb4aaSRob Bradford    - [`virtio-mem` support with `vfio-user`](#virtio-mem-support-with-vfio-user)
15d00eb4aaSRob Bradford    - [AArch64 for `virtio-iommu`](#aarch64-for-virtio-iommu)
16*7fc0776aSSebastien Boeuf    - [Notable bug fixes](#notable-bug-fixes-1)
17*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-1)
182c4f8d22SRob Bradford- [v18.0](#v180)
192c4f8d22SRob Bradford    - [Experimental User Device (`vfio-user`) support](#experimental-user-device-vfio-user-support)
202c4f8d22SRob Bradford    - [Migration support for `vhost-user` devices](#migration-support-for-vhost-user-devices)
212c4f8d22SRob Bradford    - [VHDX disk image support](#vhdx-disk-image-support)
222c4f8d22SRob Bradford    - [Device pass through on MSHV hypervisor](#device-pass-through-on-mshv-hypervisor)
232c4f8d22SRob Bradford    - [AArch64 for support `virtio-mem`](#aarch64-for-support-virtio-mem)
242c4f8d22SRob Bradford    - [Live migration on MSHV hypervisor](#live-migration-on-mshv-hypervisor)
252c4f8d22SRob Bradford    - [AArch64 CPU topology support](#aarch64-cpu-topology-support)
262c4f8d22SRob Bradford    - [Power button support on AArch64](#power-button-support-on-aarch64)
27*7fc0776aSSebastien Boeuf    - [Notable bug fixes](#notable-bug-fixes-2)
28*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-2)
29e6db5999SRob Bradford- [v17.0](#v170)
30e6db5999SRob Bradford    - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi)
31e6db5999SRob Bradford    - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend)
32e6db5999SRob Bradford    - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices)
33e6db5999SRob Bradford    - [Improved SGX support](#improved-sgx-support)
34e6db5999SRob Bradford    - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices)
35*7fc0776aSSebastien Boeuf    - [Notable bug fixes](#notable-bug-fixes-3)
36*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-3)
375ed8e01fSRob Bradford- [v16.0](#v160)
385ed8e01fSRob Bradford    - [Improved live migration support](#improved-live-migration-support)
395ed8e01fSRob Bradford    - [Improved `vhost-user` support](#improved-vhost-user-support)
405ed8e01fSRob Bradford    - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support)
41*7fc0776aSSebastien Boeuf    - [Notable bug fixes](#notable-bug-fixes-4)
425ed8e01fSRob Bradford    - [Removed functionality](#removed-functionality)
43*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-4)
4430a01277SRob Bradford- [v15.0](#v150)
4530a01277SRob Bradford    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
4630a01277SRob Bradford    - [Network device rate limiting](#network-device-rate-limiting)
4730a01277SRob Bradford    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
4830a01277SRob Bradford    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
4930a01277SRob Bradford    - [Bug fixes](#bug-fixes)
5030a01277SRob Bradford    - [Deprecations](#deprecations)
51*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-5)
5230a01277SRob Bradford- [v0.14.1](#v0141)
5340c63dcfSRob Bradford- [v0.14.0](#v0140)
5440c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
5540c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
5640c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
5740c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
5840c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
5940c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
6030a01277SRob Bradford    - [Deprecations](#deprecations-1)
61*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-6)
62f58b6f84SRob Bradford- [v0.13.0](#v0130)
63f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
6440c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
65f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
66f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
67f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
68f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
69*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-7)
70d42b5084SRob Bradford- [v0.12.0](#v0120)
71d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
72d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
73d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
74d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
75*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-8)
767dcd3affSRob Bradford- [v0.11.0](#v0110)
777dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
787dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
797dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
80d00eb4aaSRob Bradford    - [`virtio-mmio` Removal](#virtio-mmio-removal)
817dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
827dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
837dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
847dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
857dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
867dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
87*7fc0776aSSebastien Boeuf    - [Notable Bug Fixes](#notable-bug-fixes-5)
88*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-9)
89198bd551SRob Bradford- [v0.10.0](#v0100)
90198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
91198bd551SRob Bradford    - [Memory Zones](#memory-zones)
92198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
93198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
94*7fc0776aSSebastien Boeuf    - [Notable Bug Fixes](#notable-bug-fixes-6)
95*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-10)
96d714cf81SRob Bradford- [v0.9.0](#v090)
97d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
98d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
99d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
100d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
101d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
102d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
103d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
104d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
105d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
106d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
107198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
108*7fc0776aSSebastien Boeuf    - [Notable Bug Fixes](#notable-bug-fixes-7)
109*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-11)
110d714cf81SRob Bradford- [v0.8.0](#v080)
111d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
112d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
113d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
114d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
115d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
116*7fc0776aSSebastien Boeuf    - [Notable Bug Fixes](#notable-bug-fixes-8)
117d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
118*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-12)
11996be8229SRob Bradford- [v0.7.0](#v070)
12096be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
12196be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
12296be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
12396be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
12496be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
12596be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
12696be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
12752b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
128*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-13)
12903cb26ccSSamuel Ortiz- [v0.6.0](#v060)
13003cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
13103cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
13203cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
13303cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
13403cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
135*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-14)
13694f2fc33SRob Bradford- [v0.5.1](#v051)
1372f395e60SSamuel Ortiz- [v0.5.0](#v050)
13894f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
13994f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
14094f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
14194f2fc33SRob Bradford    - [Development Tools](#development-tools)
14294f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
143*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-15)
144cec884e8SSamuel Ortiz- [v0.4.0](#v040)
14594f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
14694f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
14794f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
14894f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
14994f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
15094f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
15194f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
152*7fc0776aSSebastien Boeuf    - [Contributors](#contributors-16)
1538e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
15494f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
15594f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
15694f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
15794f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
15894f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
15994f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
16094f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
16194f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1627688e6e2SSamuel Ortiz- [v0.2.0](#v020)
16394f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
16494f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
16594f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
16694f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
16794f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
16894f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1697688e6e2SSamuel Ortiz- [v0.1.0](#v010)
17094f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
17194f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
17294f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
17394f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
17494f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
17594f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
17694f2fc33SRob Bradford    - [Unit testing](#unit-testing)
17794f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
17894f2fc33SRob Bradford
179*7fc0776aSSebastien Boeuf# v20.0
180*7fc0776aSSebastien Boeuf
181*7fc0776aSSebastien BoeufThis release has been tracked through the [v20.0
182*7fc0776aSSebastien Boeufproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/23).
183*7fc0776aSSebastien Boeuf
184*7fc0776aSSebastien Boeuf### Multiple PCI segments support
185*7fc0776aSSebastien Boeuf
186*7fc0776aSSebastien BoeufCloud Hypervisor is no longer limited to 31 PCI devices. For both `x86_64` and
187*7fc0776aSSebastien Boeuf`aarch64` architectures, it is now possible to create up to 16 PCI segments,
188*7fc0776aSSebastien Boeufincreasing the total amount of supported PCI devices to 496.
189*7fc0776aSSebastien Boeuf
190*7fc0776aSSebastien Boeuf### CPU pinning
191*7fc0776aSSebastien Boeuf
192*7fc0776aSSebastien BoeufFor each vCPU, the user can define a limited set of host CPUs on which it is
193*7fc0776aSSebastien Boeufallowed to run. This can be useful when assigning a 1:1 mapping between host and
194*7fc0776aSSebastien Boeufguest resources, or when running a VM on a specific NUMA node.
195*7fc0776aSSebastien Boeuf
196*7fc0776aSSebastien Boeuf### Improved VFIO support
197*7fc0776aSSebastien Boeuf
198*7fc0776aSSebastien BoeufBased on VFIO region capabilities, all regions can be memory mapped, limiting
199*7fc0776aSSebastien Boeufthe amount of triggered VM exits, and therefore increasing the performance of
200*7fc0776aSSebastien Boeufthe passthrough device.
201*7fc0776aSSebastien Boeuf
202*7fc0776aSSebastien Boeuf### Safer code
203*7fc0776aSSebastien Boeuf
204*7fc0776aSSebastien BoeufSeveral sections containing unsafe Rust code have been replaced with safe
205*7fc0776aSSebastien Boeufalternatives, and multiple comments have been added to clarify why the remaining
206*7fc0776aSSebastien Boeufunsafe sections are safe to use.
207*7fc0776aSSebastien Boeuf
208*7fc0776aSSebastien Boeuf### Extended documentation
209*7fc0776aSSebastien Boeuf
210*7fc0776aSSebastien BoeufThe documentation related to VFIO has been updated while some new documents have
211*7fc0776aSSebastien Boeufbeen introduced to cover the usage of `--cpus` parameter as well as how to run
212*7fc0776aSSebastien BoeufCloud Hypervisor on Intel TDX.
213*7fc0776aSSebastien Boeuf
214*7fc0776aSSebastien Boeuf### Notable bug fixes
215*7fc0776aSSebastien Boeuf
216*7fc0776aSSebastien Boeuf* Naturally align PCI BARs on relocation (#3244)
217*7fc0776aSSebastien Boeuf* Fix panic in SIGWINCH listener thread when no seccomp filter set (#3338)
218*7fc0776aSSebastien Boeuf* Use the tty raw mode implementation from libc (#3344)
219*7fc0776aSSebastien Boeuf* Fix the emulation of register D for CMOS/RTC device (#3393)
220*7fc0776aSSebastien Boeuf
221*7fc0776aSSebastien Boeuf### Contributors
222*7fc0776aSSebastien Boeuf
223*7fc0776aSSebastien BoeufMany thanks to everyone who has contributed to our release:
224*7fc0776aSSebastien Boeuf
225*7fc0776aSSebastien Boeuf* Alyssa Ross <hi@alyssa.is>
226*7fc0776aSSebastien Boeuf* Bo Chen <chen.bo@intel.com>
227*7fc0776aSSebastien Boeuf* Fabiano Fidêncio <fabiano.fidencio@intel.com>
228*7fc0776aSSebastien Boeuf* Michael Zhao <michael.zhao@arm.com>
229*7fc0776aSSebastien Boeuf* Muminul Islam <muislam@microsoft.com>
230*7fc0776aSSebastien Boeuf* Rob Bradford <robert.bradford@intel.com>
231*7fc0776aSSebastien Boeuf* Sebastien Boeuf <sebastien.boeuf@intel.com>
232*7fc0776aSSebastien Boeuf* Wei Liu <liuwe@microsoft.com>
233*7fc0776aSSebastien Boeuf* Willen Yang <willenyang@gmail.com>
234*7fc0776aSSebastien Boeuf* William Douglas <william.douglas@intel.com>
235*7fc0776aSSebastien Boeuf* Ziye Yang <ziye.yang@intel.com>
236*7fc0776aSSebastien Boeuf
237d00eb4aaSRob Bradford# v19.0
238d00eb4aaSRob Bradford
239d00eb4aaSRob BradfordThis release has been tracked through the [v19.0
240d00eb4aaSRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/22).
241d00eb4aaSRob Bradford
242d00eb4aaSRob Bradford### Improved PTY handling for serial and `virtio-console`
243d00eb4aaSRob Bradford
244d00eb4aaSRob BradfordThe PTY support for serial has been enhanced with improved buffering when the
245d00eb4aaSRob Bradfordthe PTY is not yet connected to. Using `virtio-console` with PTY now results in
246d00eb4aaSRob Bradfordthe console being resized if the PTY window is also resized.
247d00eb4aaSRob Bradford
248d00eb4aaSRob Bradford### PCI boot time optimisations
249d00eb4aaSRob Bradford
250d00eb4aaSRob BradfordMultiple optimisations have been made to the PCI handling resulting in
251d00eb4aaSRob Bradfordsignificant improvements in the boot time of the guest.
252d00eb4aaSRob Bradford
253d00eb4aaSRob Bradford### Improved TDX support
254d00eb4aaSRob Bradford
255d00eb4aaSRob BradfordWhen using the latest TDVF firmware the ACPI tables created by the VMM are now
256d00eb4aaSRob Bradfordexposed via the firmware to the guest.
257d00eb4aaSRob Bradford
258d00eb4aaSRob Bradford### Live migration enhancements
259d00eb4aaSRob Bradford
260d00eb4aaSRob BradfordLive migration support has been enhanced to support migration with `virtio-mem`
261d00eb4aaSRob Bradfordbased memory hotplug and the `virtio-balloon` device now supports live
262d00eb4aaSRob Bradfordmigration.
263d00eb4aaSRob Bradford
264d00eb4aaSRob Bradford### `virtio-mem` support with `vfio-user`
265d00eb4aaSRob Bradford
266d00eb4aaSRob BradfordThe use of `vfio-user` userspaces devices can now be used in conjunction with
267d00eb4aaSRob Bradford`virtio-mem` based memory hotplug and unplug.
268d00eb4aaSRob Bradford
269d00eb4aaSRob Bradford### AArch64 for `virtio-iommu`
270d00eb4aaSRob Bradford
271d00eb4aaSRob BradfordA paravirtualised IOMMU can now be used on the AArch64 platform.
272d00eb4aaSRob Bradford
273d00eb4aaSRob Bradford### Notable bug fixes
274d00eb4aaSRob Bradford
275d00eb4aaSRob Bradford* ACPI hotplugged memory is correctly restored after a live migration or
276d00eb4aaSRob Bradford  snapshot/restore (#3165)
277d00eb4aaSRob Bradford* Multiple devices from the same IOMMU group can be passed through via VFIO
278d00eb4aaSRob Bradford  (#3078 #3113)
279d00eb4aaSRob Bradford* Live migration with large blocks of memory was buggy due to an in issue in
280d00eb4aaSRob Bradford  the underlying crate (#3157)
281d00eb4aaSRob Bradford
282d00eb4aaSRob Bradford### Contributors
283d00eb4aaSRob Bradford
284d00eb4aaSRob BradfordMany thanks to everyone who has contributed to our release:
285d00eb4aaSRob Bradford
286d00eb4aaSRob Bradford* Alyssa Ross <hi@alyssa.is>
287d00eb4aaSRob Bradford* Bo Chen <chen.bo@intel.com>
288d00eb4aaSRob Bradford* Henry Wang <Henry.Wang@arm.com>
289d00eb4aaSRob Bradford* Hui Zhu <teawater@antfin.com>
290d00eb4aaSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
291d00eb4aaSRob Bradford* Li Yu <liyu.yukiteru@bytedance.com>
292d00eb4aaSRob Bradford* Michael Zhao <michael.zhao@arm.com>
293d00eb4aaSRob Bradford* Muminul Islam <muislam@microsoft.com>
294d00eb4aaSRob Bradford* Rob Bradford <robert.bradford@intel.com>
295d00eb4aaSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
296d00eb4aaSRob Bradford* Wei Liu <liuwe@microsoft.com>
297d00eb4aaSRob Bradford* William Douglas <william.douglas@intel.com>
298d00eb4aaSRob Bradford* Yu Li <liyu.yukiteru@bytedance.com>
299d00eb4aaSRob Bradford
3002c4f8d22SRob Bradford# v18.0
3012c4f8d22SRob Bradford
3022c4f8d22SRob BradfordThis release has been tracked through the [v18.0
3032c4f8d22SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/21).
3042c4f8d22SRob Bradford
3052c4f8d22SRob Bradford### Experimental User Device (`vfio-user`) support
3062c4f8d22SRob Bradford
3072c4f8d22SRob BradfordExperimental support for running PCI devices in userspace via `vfio-user`
3082c4f8d22SRob Bradfordhas been included. This allows the use of the SPDK NVMe `vfio-user` controller
3092c4f8d22SRob Bradfordwith Cloud Hypervisor. This is enabled by `--user-device` on the command line.
3102c4f8d22SRob Bradford
3112c4f8d22SRob Bradford### Migration support for `vhost-user` devices
3122c4f8d22SRob Bradford
3132c4f8d22SRob BradfordDevices exposed into the VM via `vhost-user` can now be migrated using the live
3142c4f8d22SRob Bradfordmigration support. This requires support from the backend however the commonly
3152c4f8d22SRob Bradfordused DPDK `vhost-user` backend does support this.
3162c4f8d22SRob Bradford
3172c4f8d22SRob Bradford### VHDX disk image support
3182c4f8d22SRob Bradford
3192c4f8d22SRob BradfordImages using the VHDX disk image format can now be used with Cloud Hypervisor.
3202c4f8d22SRob Bradford
3212c4f8d22SRob Bradford### Device pass through on MSHV hypervisor
3222c4f8d22SRob Bradford
3232c4f8d22SRob BradfordWhen running on the MSHV hypervisor it is possible to pass through devices from
3242c4f8d22SRob Bradfordthe host through to the guest (e.g with `--device`)
3252c4f8d22SRob Bradford
3262c4f8d22SRob Bradford### AArch64 for support `virtio-mem`
3272c4f8d22SRob Bradford
3282c4f8d22SRob BradfordThe reference Linux kernel we recommend for using with Cloud Hypervisor now supports `virtio-mem` on AArch64.
3292c4f8d22SRob Bradford
3302c4f8d22SRob Bradford### Live migration on MSHV hypervisor
3312c4f8d22SRob Bradford
3322c4f8d22SRob BradfordLive migration is now supported when running on the MSHV hypervisor including
3332c4f8d22SRob Bradfordefficient tracking of dirty pages.
3342c4f8d22SRob Bradford
3352c4f8d22SRob Bradford### AArch64 CPU topology support
3362c4f8d22SRob Bradford
3372c4f8d22SRob BradfordThe CPU topology (as configured through `--cpu topology=`) can now be
3382c4f8d22SRob Bradfordconfigured on AArch64 platforms and is conveyed through either ACPI or device
3392c4f8d22SRob Bradfordtree.
3402c4f8d22SRob Bradford
3412c4f8d22SRob Bradford### Power button support on AArch64
3422c4f8d22SRob Bradford
3432c4f8d22SRob BradfordUse of the ACPI power button (e.g `ch-remote --api-socket=<API socket> power-button`)
3442c4f8d22SRob Bradfordis now supported when running on AArch64.
3452c4f8d22SRob Bradford
3462c4f8d22SRob Bradford### Notable bug fixes
3472c4f8d22SRob Bradford
3482c4f8d22SRob Bradford* Using two PTY outputs e.g. `--serial pty --console pty` now works correctly (#3012)
3492c4f8d22SRob Bradford* TTY input is now always sent to the correct destination (#3005)
3502c4f8d22SRob Bradford* The boot is no longer blocked when using a unattached PTY on the serial console (#3004)
3512c4f8d22SRob Bradford* Live migration is now supported on AArch64 (#3049)
3522c4f8d22SRob Bradford* Ensure signal handlers are run on the correct thread (#3069)
3532c4f8d22SRob Bradford
3542c4f8d22SRob Bradford### Contributors
3552c4f8d22SRob Bradford
3562c4f8d22SRob BradfordMany thanks to everyone who has contributed to our release:
3572c4f8d22SRob Bradford
3582c4f8d22SRob Bradford* Alyssa Ross <hi@alyssa.is>
3592c4f8d22SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
3602c4f8d22SRob Bradford* Arafatms <arafatms@outlook.com>
3612c4f8d22SRob Bradford* Bo Chen <chen.bo@intel.com>
3622c4f8d22SRob Bradford* Fazla Mehrab <akm.fazla.mehrab@vt.edu>
3632c4f8d22SRob Bradford* Henry Wang <Henry.Wang@arm.com>
3642c4f8d22SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
3652c4f8d22SRob Bradford* Jiaqi Gao <jiaqi.gao@intel.com>
3662c4f8d22SRob Bradford* Markus Theil <markus.theil@tu-ilmenau.de>
3672c4f8d22SRob Bradford* Muminul Islam <muislam@microsoft.com>
3682c4f8d22SRob Bradford* Rob Bradford <robert.bradford@intel.com>
3692c4f8d22SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
3702c4f8d22SRob Bradford* Wei Liu <liuwe@microsoft.com>
3712c4f8d22SRob Bradford* Yu Li <liyu.yukiteru@bytedance.com>
372e6db5999SRob Bradford
373e6db5999SRob Bradford# v17.0
374e6db5999SRob Bradford
375e6db5999SRob BradfordThis release has been tracked through the [v17.0
376e6db5999SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20).
377e6db5999SRob Bradford
378e6db5999SRob Bradford### ARM64 NUMA support using ACPI
379e6db5999SRob Bradford
380e6db5999SRob BradfordThe support for ACPI on ARM64 has been enhanced to include support for
381e6db5999SRob Bradfordspecifying a NUMA configuration using the existing control options.
382e6db5999SRob Bradford
383e6db5999SRob Bradford### `Seccomp` support for MSHV backend
384e6db5999SRob Bradford
385e6db5999SRob BradfordThe `seccomp` rules have now been extended to support running against the MSHV
386e6db5999SRob Bradfordhypervisor backend.
387e6db5999SRob Bradford
388e6db5999SRob Bradford### Hotplug of `macvtap` devices
389e6db5999SRob Bradford
390e6db5999SRob BradfordHotplug of `macvtap` devices is now supported with the file descriptor for the
391e6db5999SRob Bradfordnetwork device if opened by the user and passed to the VMM. The `ch-remote`
392e6db5999SRob Bradfordtool supports this functionality when adding a network device.
393e6db5999SRob Bradford
394e6db5999SRob Bradford### Improved SGX support
395e6db5999SRob Bradford
396e6db5999SRob BradfordThe SGX support has been updated to match the latest Linux kernel support and
397e6db5999SRob Bradfordnow supports SGX provisioning and associating EPC sections to NUMA nodes.
398e6db5999SRob Bradford
399e6db5999SRob Bradford### Inflight tracking for `vhost-user` devices
400e6db5999SRob Bradford
401e6db5999SRob BradfordSupport for handling inflight tracking of I/O requests has been added to the
402e6db5999SRob Bradford`vhost-user` devices allowing recovery after device reconnection.
403e6db5999SRob Bradford
404e6db5999SRob Bradford### Notable bug fixes
405e6db5999SRob Bradford
406e6db5999SRob Bradford* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
407e6db5999SRob Bradford* The VMM side of `vhost-user` devices no longer advertise the
408e6db5999SRob Bradford  `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM
409e6db5999SRob Bradford(#2833).
410e6db5999SRob Bradford* On ARM64 VMs can be created with more than 16 vCPUs (#2763).
411e6db5999SRob Bradford
412e6db5999SRob Bradford### Contributors
413e6db5999SRob Bradford
414e6db5999SRob BradfordMany thanks to everyone who has contributed to our release:
415e6db5999SRob Bradford
416e6db5999SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
417e6db5999SRob Bradford* Arafatms <arafatms@outlook.com>
418e6db5999SRob Bradford* Bo Chen <chen.bo@intel.com>
419e6db5999SRob Bradford* Fei Li <lifei.shirley@bytedance.com>
420e6db5999SRob Bradford* Henry Wang <Henry.Wang@arm.com>
421e6db5999SRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
422e6db5999SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
423e6db5999SRob Bradford* Li Hangjing <lihangjing@bytedance.com>
424e6db5999SRob Bradford* Michael Zhao <michael.zhao@arm.com>
425e6db5999SRob Bradford* Muminul Islam <muislam@microsoft.com>
426e6db5999SRob Bradford* Rob Bradford <robert.bradford@intel.com>
427e6db5999SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
428e6db5999SRob Bradford* Wei Liu <liuwe@microsoft.com>
429e6db5999SRob Bradford* Yukiteru <wfly1998@sina.com>
430e6db5999SRob Bradford
4315ed8e01fSRob Bradford# v16.0
4325ed8e01fSRob Bradford
4335ed8e01fSRob BradfordThis release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19).
4345ed8e01fSRob Bradford
4355ed8e01fSRob Bradford### Improved live migration support
4365ed8e01fSRob Bradford
4375ed8e01fSRob BradfordThe 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.
4385ed8e01fSRob Bradford
4395ed8e01fSRob Bradford### Improved `vhost-user` support
4405ed8e01fSRob Bradford
4415ed8e01fSRob BradfordWhen 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.
4425ed8e01fSRob Bradford
4435ed8e01fSRob Bradford### ARM64 ACPI and UEFI support
4445ed8e01fSRob Bradford
4455ed8e01fSRob BradfordCloud 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.
4465ed8e01fSRob Bradford
4475ed8e01fSRob Bradford### Notable bug fixes
4485ed8e01fSRob Bradford
4495ed8e01fSRob Bradford* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
4505ed8e01fSRob Bradford* 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).
4515ed8e01fSRob Bradford* The KVM clock is now correctly handled during live migration / snapshot & restore.
4525ed8e01fSRob Bradford
4535ed8e01fSRob Bradford### Removed functionality
4545ed8e01fSRob Bradford
4555ed8e01fSRob BradfordThe following formerly deprecated features have been removed:
4565ed8e01fSRob Bradford
4575ed8e01fSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
4585ed8e01fSRob Bradford  binaries has been deprecated. When using direct boot users should configure
4595ed8e01fSRob Bradford  their kernel with `CONFIG_PVH=y`.
4605ed8e01fSRob Bradford
4615ed8e01fSRob Bradford### Contributors
4625ed8e01fSRob Bradford
4635ed8e01fSRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
4645ed8e01fSRob Bradford
4655ed8e01fSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
4665ed8e01fSRob Bradford* Bo Chen <chen.bo@intel.com>
4675ed8e01fSRob Bradford* Dayu Liu <liu.dayu@zte.com.cn>
4685ed8e01fSRob Bradford* Henry Wang <Henry.Wang@arm.com>
4695ed8e01fSRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
4705ed8e01fSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
4715ed8e01fSRob Bradford* Michael Zhao <michael.zhao@arm.com>
4725ed8e01fSRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
4735ed8e01fSRob Bradford* Muminul Islam <muislam@microsoft.com>
4745ed8e01fSRob Bradford* Ren Lei <ren.lei4@zte.com.cn>
4755ed8e01fSRob Bradford* Rob Bradford <robert.bradford@intel.com>
4765ed8e01fSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
4775ed8e01fSRob Bradford* Wei Liu <liuwe@microsoft.com>
4785ed8e01fSRob Bradford* Yi Wang <wang.yi59@zte.com.cn>
4795ed8e01fSRob Bradford
48030a01277SRob Bradford# v15.0
48130a01277SRob Bradford
48230a01277SRob BradfordThis release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
48330a01277SRob Bradford
48430a01277SRob BradfordHighlights for `cloud-hypervisor` version v15.0 include:
48530a01277SRob Bradford
48630a01277SRob Bradford### Version numbering and stability guarantees
48730a01277SRob Bradford
48830a01277SRob BradfordThis release is the first in a new version numbering scheme to represent that
48930a01277SRob Bradfordwe believe Cloud Hypervisor is maturing and entering a period of stability.
49030a01277SRob BradfordWith this new release we are beginning our new stability guarantees:
49130a01277SRob Bradford
49230a01277SRob Bradford* The API (including command line options) will not be removed or changed in a
49330a01277SRob Bradford  breaking way without a minimum of 2 releases notice. Where possible warnings
49430a01277SRob Bradford  will be given about the use of deprecated functionality and the deprecations
49530a01277SRob Bradford  will be documented in the release notes.
49630a01277SRob Bradford* Point releases will be made between individual releases where there are
49730a01277SRob Bradford  substantial bug fixes or security issues that need to be fixed.
49830a01277SRob Bradford
49930a01277SRob BradfordCurrently the following items are **not** guaranteed across updates:
50030a01277SRob Bradford
50130a01277SRob Bradford* Snapshot/restore is not supported across different versions
50230a01277SRob Bradford* Live migration is not supported across different versions
50330a01277SRob Bradford* The following features are considered experimental and may change
50430a01277SRob Bradford  substantially between releases: TDX, SGX.
50530a01277SRob Bradford
50630a01277SRob Bradford### Network device rate limiting
50730a01277SRob Bradford
50830a01277SRob BradfordBuilding on our existing support for rate limiting block activity the network
50930a01277SRob Bradforddevice also now supports rate limiting. Full details of the controls are in the
51030a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
51130a01277SRob Bradford
51230a01277SRob Bradford### Support for runtime control of `virtio-net` guest offload
51330a01277SRob Bradford
51430a01277SRob BradfordThe guest is now able to change the offload settings for the `virtio-net`
51530a01277SRob Bradforddevice. As well as providing a useful control this mitigates an issue in the
51630a01277SRob BradfordLinux kernel where the guest will attempt to reprogram the offload settings
51730a01277SRob Bradfordeven if they are not advertised as configurable (#2528).
51830a01277SRob Bradford
51930a01277SRob Bradford### `--api-socket` supports file descriptor parameter
52030a01277SRob Bradford
52130a01277SRob BradfordThe `--api-socket` can now take an `fd=` parameter to specify an existing file
52230a01277SRob Bradforddescriptor to use. This is particularly beneficial for frameworks that need to
52330a01277SRob Bradfordprogrammatically control Cloud Hypervisor.
52430a01277SRob Bradford
52530a01277SRob Bradford### Bug fixes
52630a01277SRob Bradford
52730a01277SRob Bradford* A workaround has been put in place to mitigate a Linux kernel issues that
52830a01277SRob Bradford  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
52930a01277SRob Bradford* PCI BARs are now correctly aligned removing the need for the guest to
53030a01277SRob Bradford  reprogram them (#1797,#1798)
53130a01277SRob Bradford* Handle TAP interface not being writable within virtio-net (due to the buffer
53230a01277SRob Bradford  exhaustion on the host) (#2517)
53330a01277SRob Bradford* The recommended Linux kernel is now v5.12.0 as it contains a fix that
53430a01277SRob Bradford  prevents snapshot & restore working (#2535)
53530a01277SRob Bradford
53630a01277SRob Bradford### Deprecations
53730a01277SRob Bradford
53830a01277SRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
53930a01277SRob Bradford
54030a01277SRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
54130a01277SRob Bradford  binaries has been deprecated. When using direct boot users should configure
54230a01277SRob Bradford  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
54330a01277SRob Bradford
54430a01277SRob Bradford### Contributors
54530a01277SRob Bradford
54630a01277SRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
54730a01277SRob Bradford
54830a01277SRob Bradford* Alyssa Ross <hi@alyssa.is>
54930a01277SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
55030a01277SRob Bradford* Bo Chen <chen.bo@intel.com>
55130a01277SRob Bradford* Gaelan Steele <gbs@canishe.com>
55230a01277SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
55330a01277SRob Bradford* Michael Zhao <michael.zhao@arm.com>
55430a01277SRob Bradford* Muminul Islam <muislam@microsoft.com>
55530a01277SRob Bradford* Rob Bradford <robert.bradford@intel.com>
55630a01277SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
55730a01277SRob Bradford* Wei Liu <liuwe@microsoft.com>
55830a01277SRob Bradford* William Douglas <william.douglas@intel.com>
55930a01277SRob Bradford
56030a01277SRob Bradford# v0.14.1
56130a01277SRob Bradford
56230a01277SRob BradfordBug fix release branched off the v0.14.0 release. The following bugs were fixed
56330a01277SRob Bradfordin this release:
56430a01277SRob Bradford
56530a01277SRob Bradford* CPU hotplug on Windows failed due to misreported CPU state information and
56630a01277SRob Bradford  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
56730a01277SRob Bradford* A seccomp rule was missing that was triggered on CPU unplug (#2455)
56830a01277SRob Bradford* A bounds check in VIRTIO queue validation was erroneously generating
56930a01277SRob Bradford  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
57030a01277SRob Bradford
57140c63dcfSRob Bradford# v0.14.0
57240c63dcfSRob Bradford
57340c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
57440c63dcfSRob Bradford
57540c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
57640c63dcfSRob Bradford
57740c63dcfSRob Bradford### Structured event monitoring
57840c63dcfSRob Bradford
57940c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
58040c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
58140c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
58240c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
58340c63dcfSRob BradfordHypervisor API surface.
58440c63dcfSRob Bradford
58540c63dcfSRob Bradford### MSHV improvements
58640c63dcfSRob Bradford
58740c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
58840c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
58940c63dcfSRob Bradfordthe MSHV support.
59040c63dcfSRob Bradford
59140c63dcfSRob Bradford### Improved aarch64 platform
59240c63dcfSRob Bradford
59340c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
59440c63dcfSRob BradfordVM including an enhanced serial UART.
59540c63dcfSRob Bradford
59640c63dcfSRob Bradford### Updated hotplug documentation
59740c63dcfSRob Bradford
59840c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
59940c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
60040c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
60140c63dcfSRob Bradford
60240c63dcfSRob Bradford### PTY control for serial and `virtio-console`
60340c63dcfSRob Bradford
60440c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
60540c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
60640c63dcfSRob BradfordPTY subsystem.
60740c63dcfSRob Bradford
60840c63dcfSRob Bradford### Block device rate limiting
60940c63dcfSRob Bradford
61040c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
61140c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
61230a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
61340c63dcfSRob Bradford
61440c63dcfSRob Bradford
61540c63dcfSRob Bradford### Deprecations
61640c63dcfSRob Bradford
61740c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
61840c63dcfSRob Bradford
61940c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
62040c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
62140c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
62240c63dcfSRob Bradford
62340c63dcfSRob Bradford
62440c63dcfSRob Bradford### Contributors
62540c63dcfSRob Bradford
62640c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
62740c63dcfSRob Bradfordsome new faces.
62840c63dcfSRob Bradford
62940c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
63040c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
63140c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
63240c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
63340c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
63440c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
63540c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
63640c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
63740c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
63840c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
63940c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
64040c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
64140c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
64240c63dcfSRob Bradford
643f58b6f84SRob Bradford# v0.13.0
644f58b6f84SRob Bradford
645f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
646f58b6f84SRob Bradford
647f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
648f58b6f84SRob Bradford
649f58b6f84SRob Bradford### Wider VFIO device support
650f58b6f84SRob Bradford
651f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
652f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
653f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
654f58b6f84SRob Bradforddrivers.
655f58b6f84SRob Bradford
65640c63dcfSRob Bradford### Improved huge page support
657f58b6f84SRob Bradford
658f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
659f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
660f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
661f58b6f84SRob Bradforddesired size in their pool.
662f58b6f84SRob Bradford
663f58b6f84SRob Bradford### MACvTAP support
664f58b6f84SRob Bradford
665f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
666f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
667f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
668f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
669f58b6f84SRob Bradford
670f58b6f84SRob Bradford### VHD disk image support
671f58b6f84SRob Bradford
672f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
673f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
674f58b6f84SRob Bradford
675f58b6f84SRob Bradford### Improved Virtio device threading
676f58b6f84SRob Bradford
677f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
678f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
679f58b6f84SRob Bradfordpredictable name derived from the device id.
680f58b6f84SRob Bradford
681f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
682f58b6f84SRob Bradford
683f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
684f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
685f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
686f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
687f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
688f58b6f84SRob Bradford
689f58b6f84SRob Bradford### Contributors
690f58b6f84SRob Bradford
691f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
692f58b6f84SRob Bradfordsome new faces.
693f58b6f84SRob Bradford
694f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
695f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
696f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
697f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
698f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
699f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
700f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
701f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
702f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
703f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
704f58b6f84SRob Bradford
705d42b5084SRob Bradford# v0.12.0
706d42b5084SRob Bradford
707d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
708d42b5084SRob Bradford
709d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
710d42b5084SRob Bradford
711d42b5084SRob Bradford### ARM64 enhancements
712d42b5084SRob Bradford
713d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
714d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
715d42b5084SRob Bradford
716d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
717d42b5084SRob Bradford
718d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
719d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
720d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
721d42b5084SRob Bradfordremoved.
722d42b5084SRob Bradford
723d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
724d42b5084SRob Bradford
725d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
726d42b5084SRob Bradfordinstead hosted in [it's own
727d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
728d42b5084SRob Bradford
729d42b5084SRob Bradford### Enhanced "info" API
730d42b5084SRob Bradford
731d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
732d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
733d42b5084SRob Bradford
734d42b5084SRob Bradford### Contributors
735d42b5084SRob Bradford
736d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
737d42b5084SRob Bradford
738d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
739d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
740d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
741d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
742d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
743d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
744d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
745d42b5084SRob Bradford
7467dcd3affSRob Bradford# v0.11.0
7477dcd3affSRob Bradford
7487dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
7497dcd3affSRob Bradford
7507dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
7517dcd3affSRob Bradford
7527dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
7537dcd3affSRob Bradford
7547dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
7557dcd3affSRob Bradfordbe used for a significantly higher performance block device.
7567dcd3affSRob Bradford
7577dcd3affSRob Bradford### Windows Guest Support
7587dcd3affSRob Bradford
7597dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
7607dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
7617dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
7627dcd3affSRob Bradforddocumentation](docs/windows.md).
7637dcd3affSRob Bradford
7647dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
7657dcd3affSRob Bradford
7667dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
7677dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
7687dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
7697dcd3affSRob Bradford
770d00eb4aaSRob Bradford### `virtio-mmio` Removal
7717dcd3affSRob Bradford
7727dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
7737dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
7747dcd3affSRob Bradfordreduce the testing burden of the project.
7757dcd3affSRob Bradford
7767dcd3affSRob Bradford### Snapshot/Restore support for ARM64
7777dcd3affSRob Bradford
7787dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
7797dcd3affSRob Bradfordimplemented.
7807dcd3affSRob Bradford
7817dcd3affSRob Bradford### Improved Linux Boot Time
7827dcd3affSRob Bradford
7837dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
7847dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
7857dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
7867dcd3affSRob Bradford
7877dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
7887dcd3affSRob Bradford
7897dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
7907dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
7917dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
7927dcd3affSRob Bradfordresources.
7937dcd3affSRob Bradford
7947dcd3affSRob Bradford### Default Log Level Changed
7957dcd3affSRob Bradford
7967dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
7977dcd3affSRob Bradfordeasier to see potential issues. New [logging
7987dcd3affSRob Bradforddocumentation](docs/logging) was also added.
7997dcd3affSRob Bradford
8007dcd3affSRob Bradford### New `--balloon` Parameter Added
8017dcd3affSRob Bradford
8027dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
8037dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
8047dcd3affSRob Bradfordcontrols without overloading `--memory`.
8057dcd3affSRob Bradford
8067dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
8077dcd3affSRob Bradford
8087dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
8097dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
8107dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
8117dcd3affSRob Bradford
8127dcd3affSRob Bradford### Notable Bug Fixes
8137dcd3affSRob Bradford
8147dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
8157dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
8167dcd3affSRob Bradford* CPU identification string is now exposed to the guest
8177dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
8187dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
8197dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
8207dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
8217dcd3affSRob Bradford  can be used (#1803)
8227dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
8237dcd3affSRob Bradford  correctly
8247dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
8257dcd3affSRob Bradford  correctly
8267dcd3affSRob Bradford
8277dcd3affSRob Bradford### Contributors
8287dcd3affSRob Bradford
8297dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
8307dcd3affSRob Bradford
8317dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
8327dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
8337dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
8347dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
8357dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
8367dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
8377dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
8387dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
8397dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
8407dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
8417dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
8427dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
8437dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
8447dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
8457dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
8467dcd3affSRob Bradford
8477dcd3affSRob Bradford
848198bd551SRob Bradford# v0.10.0
849198bd551SRob Bradford
850198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
851198bd551SRob Bradford
852198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
853198bd551SRob Bradford
854198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
855198bd551SRob Bradford
856198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
857198bd551SRob Bradford
858198bd551SRob Bradford### Memory Zones
859198bd551SRob Bradford
860198bd551SRob BradfordSupport 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).
861198bd551SRob Bradford
862198bd551SRob Bradford### `Seccomp` Sandbox Improvements
863198bd551SRob Bradford
864198bd551SRob BradfordAll 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`.
865198bd551SRob Bradford
866198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
867198bd551SRob Bradford
868198bd551SRob BradfordA 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.
869198bd551SRob Bradford
870198bd551SRob Bradford### Notable Bug Fixes
871198bd551SRob Bradford
872198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
873198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
874198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
875198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
876198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
877198bd551SRob Bradford
878198bd551SRob Bradford### Contributors
879198bd551SRob Bradford
880198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
881198bd551SRob Bradford
882198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
883198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
884198bd551SRob Bradford* Anatol Belski <ab@php.net>
885198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
886198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
887198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
888198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
889198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
890198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
891198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
892198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
893198bd551SRob Bradford
894d714cf81SRob Bradford# v0.9.0
895d714cf81SRob Bradford
896d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
897d714cf81SRob Bradford
898d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
899d714cf81SRob Bradford
900d714cf81SRob Bradford### `io_uring` Based Block Device Support
901d714cf81SRob Bradford
902d714cf81SRob BradfordIf 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.
903d714cf81SRob Bradford
904d714cf81SRob Bradford### Block and Network Device Statistics
905d714cf81SRob Bradford
906d714cf81SRob BradfordStatistics 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.
907d714cf81SRob Bradford
908d714cf81SRob Bradford### HTTP API Responses
909d714cf81SRob Bradford
910d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
911d714cf81SRob Bradford
912d714cf81SRob Bradford### CPU Topology
913d714cf81SRob Bradford
914d714cf81SRob BradfordA `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.
915d714cf81SRob Bradford
916d714cf81SRob Bradford### Release Build Optimization
917d714cf81SRob Bradford
918d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
919d714cf81SRob Bradford
920d714cf81SRob Bradford### Hypervisor Abstraction
921d714cf81SRob Bradford
922d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
923d714cf81SRob Bradford
924d714cf81SRob Bradford### Snapshot/Restore Improvements
925d714cf81SRob Bradford
926d714cf81SRob BradfordMultiple 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.
927d714cf81SRob Bradford
928d714cf81SRob Bradford### Virtio Memory Ballooning Support
929d714cf81SRob Bradford
930d714cf81SRob BradfordA `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.
931d714cf81SRob Bradford
932d714cf81SRob Bradford### Enhancements to ARM64 Support
933d714cf81SRob Bradford
934d714cf81SRob BradfordThe 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.
935d714cf81SRob Bradford
936d714cf81SRob Bradford### Intel SGX Support
937d714cf81SRob Bradford
938d714cf81SRob BradfordThe guest can now use Intel SGX if the host supports it. Details can be found in the dedicated [SGX documentation](docs/intel_sgx.md).
939d714cf81SRob Bradford
940d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
941d714cf81SRob Bradford
942d714cf81SRob BradfordThe 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.
943d714cf81SRob Bradford
944d714cf81SRob Bradford### Notable Bug Fixes
945d714cf81SRob Bradford
946d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
947d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
948d714cf81SRob Bradford* 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).
949d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
950d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
951d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
952d714cf81SRob Bradford
953d714cf81SRob Bradford### Contributors
954d714cf81SRob Bradford
955d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
956d714cf81SRob Bradford
957d714cf81SRob Bradford* Anatol Belski <ab@php.net>
958d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
959d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
960d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
961d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
962d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
963d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
964d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
965d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
966d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
967d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
968d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
969d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
970d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
971d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
972d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
973d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
974d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
975d714cf81SRob Bradford
976d714cf81SRob Bradford
97752b83969SRob Bradford# v0.8.0
97852b83969SRob Bradford
97952b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
98052b83969SRob Bradford
98152b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
98252b83969SRob Bradford
98352b83969SRob Bradford### Experimental Snapshot and Restore Support
98452b83969SRob Bradford
98552b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
98652b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
98752b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
98852b83969SRob Bradfordoriginal VM at the point it was paused.
98952b83969SRob Bradford
99052b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
99152b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
99252b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
99352b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
99452b83969SRob Bradford(#1176).
99552b83969SRob Bradford
99652b83969SRob Bradford### Experimental ARM64 Support
99752b83969SRob Bradford
99852b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
99952b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
100052b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
100152b83969SRob Bradford
100252b83969SRob Bradford### Support for Using 5-level Paging in Guests
100352b83969SRob Bradford
100452b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
100552b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
100652b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
100752b83969SRob Bradfordwork due to current limitations in the PVH boot process.
100852b83969SRob Bradford
100952b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
101052b83969SRob Bradford
101152b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
101252b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
101352b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
101452b83969SRob Bradfordthe guest must service.
101552b83969SRob Bradford
101652b83969SRob Bradford### `vhost_user_fs` Improvements
101752b83969SRob Bradford
101852b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
101952b83969SRob Bradford
102052b83969SRob Bradford
102152b83969SRob Bradford### Notable Bug Fixes
102252b83969SRob Bradford
102352b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
102452b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
102552b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
102652b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
102752b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
102852b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
102952b83969SRob Bradford  #1216).
103052b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
103152b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
103252b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
103352b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
103452b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
103552b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
103652b83969SRob Bradford  (#751).
103752b83969SRob Bradford
103852b83969SRob Bradford### Command Line and API Changes
103952b83969SRob Bradford
104052b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
104152b83969SRob Bradford
104252b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
104352b83969SRob Bradford  rather than `sock` in some cases.
104452b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
104552b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
104652b83969SRob Bradford  offered for negotiation.
104752b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
104852b83969SRob Bradford  address for the `tap` device on the host.
104952b83969SRob Bradford
105052b83969SRob Bradford### Contributors
105152b83969SRob Bradford
105252b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
105352b83969SRob Bradford
105452b83969SRob Bradford* Anatol Belski <ab@php.net>
105552b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
105652b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
105752b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
105852b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
105952b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
106052b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
106152b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
106252b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
106352b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
106452b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
106552b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
106652b83969SRob Bradford
106796be8229SRob Bradford# v0.7.0
106896be8229SRob Bradford
106996be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
107096be8229SRob Bradford
107196be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
107296be8229SRob Bradford
107396be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
107496be8229SRob Bradford
107596be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
107696be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
107796be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
10785c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
107996be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
108096be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
108196be8229SRob Bradforddevices to ease their removal.
108296be8229SRob Bradford
108396be8229SRob Bradford### Alternative `libc` Support
108496be8229SRob Bradford
108596be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
108696be8229SRob Bradfordcontains a static binary compiled using that toolchain.
108796be8229SRob Bradford
108896be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
108996be8229SRob Bradford
109096be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
109196be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
109296be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
109396be8229SRob Bradfordis passed when the devices are created.
109496be8229SRob Bradford
109596be8229SRob Bradford### Initial RamFS Support
109696be8229SRob Bradford
109796be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
109896be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
109996be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
110096be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
110196be8229SRob Bradfordminimal image.
110296be8229SRob Bradford
110396be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
110496be8229SRob Bradford
110596be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
110696be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
110796be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
110896be8229SRob Bradfordrequires kernel patches to be able to support it.
110996be8229SRob Bradford
111096be8229SRob Bradford### `Seccomp` Sandboxing
111196be8229SRob Bradford
111296be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
111396be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
111496be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
111596be8229SRob Bradford
111696be8229SRob Bradford### Updated Distribution Support
111796be8229SRob Bradford
111896be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
111996be8229SRob Bradforddistributions and is part of our regular testing programme.
112096be8229SRob Bradford
112196be8229SRob Bradford### Command Line and API Changes
112296be8229SRob Bradford
112396be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
112496be8229SRob Bradford
112596be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
112696be8229SRob Bradford  If no name is specified the VMM chooses one.
112796be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
112896be8229SRob Bradford  memory instead of providing a path.
112996be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
113096be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
113196be8229SRob Bradford  option and replaced it with a single optional field.
113296be8229SRob Bradford* There is enhanced validation of the command line and API provided
113396be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
113496be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
113596be8229SRob Bradford  device.
113696be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
113796be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
113896be8229SRob Bradford  has appropriate new HTTP endpoints too.
113996be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
114096be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
114196be8229SRob Bradford  to provide the equivalent of a read-only file.
114296be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
114396be8229SRob Bradford  with those used by `--disk`.
114496be8229SRob Bradford
114596be8229SRob Bradford### Contributors
114696be8229SRob Bradford
114796be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
114896be8229SRob Bradford
114996be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
115096be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
115196be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
115296be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
115396be8229SRob Bradford* Dean Sheather <dean@coder.com>
115496be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
115596be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
115696be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
115796be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
115896be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
115996be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
116096be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
116196be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
116296be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
116396be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
116496be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
116596be8229SRob Bradford
116603cb26ccSSamuel Ortiz# v0.6.0
116703cb26ccSSamuel Ortiz
116803cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
116903cb26ccSSamuel Ortiz
117003cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
117103cb26ccSSamuel Ortiz
117203cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
117303cb26ccSSamuel Ortiz
117403cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
117503cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
117603cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
117703cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
117803cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
117903cb26ccSSamuel Ortiz
118003cb26ccSSamuel Ortiz### Shared Filesystem Improvements
118103cb26ccSSamuel Ortiz
118203cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
118303cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
118403cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
118503cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
118603cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
118703cb26ccSSamuel Ortiz
118803cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
118903cb26ccSSamuel Ortiz
119003cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
119103cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
119203cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
119303cb26ccSSamuel Ortizinto their own, separate processes.
11945c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
119503cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
119603cb26ccSSamuel Ortiz
119703cb26ccSSamuel Ortiz### Command Line Interface
119803cb26ccSSamuel Ortiz
119903cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
120037a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
120137a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
120237a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
120337a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
120437a2c13aSAlyssa Rossis created with each build and available e.g. at
120503cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
120603cb26ccSSamuel Ortiz
120703cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
120803cb26ccSSamuel Ortizcommands.
120903cb26ccSSamuel Ortiz
121003cb26ccSSamuel Ortiz### PVH Boot
121103cb26ccSSamuel Ortiz
121203cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
121303cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
121403cb26ccSSamuel Ortiz
121503cb26ccSSamuel Ortiz### Contributors
121603cb26ccSSamuel Ortiz
121703cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
121803cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
121903cb26ccSSamuel Ortiz
122003cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
122103cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
122203cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
122303cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
122403cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
122503cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
122603cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
122703cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
122803cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
122903cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
123003cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
123103cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
123203cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
123303cb26ccSSamuel Ortiz
123494f2fc33SRob Bradford# v0.5.1
123594f2fc33SRob Bradford
123694f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
123794f2fc33SRob Bradford
123894f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
123994f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
124094f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
124194f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
124294f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
12438e8a7b6dSSamuel Ortiz
12442f395e60SSamuel Ortiz# v0.5.0
12452f395e60SSamuel Ortiz
12462f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
12472f395e60SSamuel Ortiz
12482f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
12492f395e60SSamuel Ortiz
12502f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
12512f395e60SSamuel Ortiz
12522f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
12532f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
12542f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
12552f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
12562f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
12572f395e60SSamuel Ortiz
12582f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
12592f395e60SSamuel Ortiz
12602f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
12612f395e60SSamuel Ortiz
12622f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
12632f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
12642f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
12652f395e60SSamuel Ortiz
12662f395e60SSamuel Ortiz### New Interrupt Management Framework
12672f395e60SSamuel Ortiz
12682f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
12692f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
12702f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
12712f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
12722f395e60SSamuel Ortizvirtio ones.
12732f395e60SSamuel Ortiz
12742f395e60SSamuel Ortiz### Development Tools
12752f395e60SSamuel Ortiz
12762f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
12772f395e60SSamuel Ortizbuild, development and testing tools.
12782f395e60SSamuel OrtizSomehow similar to the excellent
12792f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
128037a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
12812f395e60SSamuel Ortiz
12822f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
12832f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
12842f395e60SSamuel Ortiz
12852f395e60SSamuel Ortiz### Kata Containers Integration
12862f395e60SSamuel Ortiz
12872f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
12882f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
12892f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
12902f395e60SSamuel Ortizintegrated into the project's CI.
12912f395e60SSamuel Ortiz
12922f395e60SSamuel Ortiz### Contributors
12932f395e60SSamuel Ortiz
12942f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
12952f395e60SSamuel Ortiz
12962f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
12972f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
12982f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
12992f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
13002f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
13012f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
13022f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
13032f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
13042f395e60SSamuel Ortiz
1305cec884e8SSamuel Ortiz# v0.4.0
1306cec884e8SSamuel Ortiz
1307cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
1308cec884e8SSamuel Ortiz
1309cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
1310cec884e8SSamuel Ortiz
1311cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
1312cec884e8SSamuel Ortiz
1313e6e58e6dSSebastien BoeufAs a way to vertically scale Cloud Hypervisor guests, we now support dynamically
1314cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
1315cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
1316cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
131737a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
1318cec884e8SSamuel Ortiz
1319cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
1320cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
1321cec884e8SSamuel Ortiz
1322cec884e8SSamuel Ortiz### Programmatic firmware tables generation
1323cec884e8SSamuel Ortiz
1324cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
1325cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
1326cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
1327cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
1328cec884e8SSamuel Ortiztables based on the VMM device model and topology.
1329cec884e8SSamuel Ortiz
1330cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
1331cec884e8SSamuel Ortiz
1332cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
1333cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
1334cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
1335cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
1336cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
1337cec884e8SSamuel Ortiz
1338cec884e8SSamuel Ortiz### Guest pause and resume
1339cec884e8SSamuel Ortiz
13405c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
1341cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
1342cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
1343cec884e8SSamuel Ortizand resume capabilities.
1344cec884e8SSamuel Ortiz
1345cec884e8SSamuel Ortiz### Userspace IOAPIC by default
1346cec884e8SSamuel Ortiz
1347cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
1348cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
1349cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
1350cec884e8SSamuel Ortizdefault.
1351cec884e8SSamuel Ortiz
1352cec884e8SSamuel Ortiz### PCI BAR reprogramming
1353cec884e8SSamuel Ortiz
1354cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
1355cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
1356cec884e8SSamuel Ortizreprogramming.
1357cec884e8SSamuel Ortiz
1358cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
1359cec884e8SSamuel Ortiz
1360cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1361cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1362cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1363cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1364cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1365cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
1366cec884e8SSamuel Ortiztemporarily fork.
1367cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
1368cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
1369cec884e8SSamuel Ortiz
1370cec884e8SSamuel Ortiz### Contributors
1371cec884e8SSamuel Ortiz
1372cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
1373cec884e8SSamuel Ortiz
1374cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
1375cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
1376cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1377cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1378cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
1379cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
1380cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
1381cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
1382cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
1383cec884e8SSamuel Ortiz
13848e8a7b6dSSamuel Ortiz# v0.3.0
13858e8a7b6dSSamuel Ortiz
13868ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
13878e8a7b6dSSamuel Ortiz
13888e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
13898e8a7b6dSSamuel Ortiz
13908e8a7b6dSSamuel Ortiz### Block device offloading
13918e8a7b6dSSamuel Ortiz
13928e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
13938e8a7b6dSSamuel Ortizand we added support for
13948e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
13958e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
13968e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
13978e8a7b6dSSamuel Ortizbackend.
13988e8a7b6dSSamuel Ortiz
13998e8a7b6dSSamuel Ortiz### Network device backend
14008e8a7b6dSSamuel Ortiz
14018e8a7b6dSSamuel OrtizThe previous release provided support for
14028e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
14038e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
14048e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
14058e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
14068e8a7b6dSSamuel Ortiz
14078e8a7b6dSSamuel Ortiz### Virtual sockets
14088e8a7b6dSSamuel Ortiz
14098e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
14108e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
14118e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
14128e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
14138e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
14148e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
14158e8a7b6dSSamuel Ortiz
14168e8a7b6dSSamuel Ortiz### HTTP based API
14178e8a7b6dSSamuel Ortiz
14188e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
14198e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
14208e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
14218e8a7b6dSSamuel Ortiznext release cycle.
14228e8a7b6dSSamuel Ortiz
14238e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
14248e8a7b6dSSamuel Ortiz
14258e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
14268e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
14278e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
14288e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
14298e8a7b6dSSamuel Ortiz
14308e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
14318e8a7b6dSSamuel Ortiz
14328e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
143337a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
143437a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
14358e8a7b6dSSamuel Ortiz
14368e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
14378e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
14388e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
14398e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
14408e8a7b6dSSamuel Ortizsetting.
14418e8a7b6dSSamuel Ortiz
14428e8a7b6dSSamuel Ortiz### Ubuntu 19.10
14438e8a7b6dSSamuel Ortiz
14448ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
14458e8a7b6dSSamuel Ortizwe can now support the latest
14468e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
14478e8a7b6dSSamuel Ortiz
14488e8a7b6dSSamuel Ortiz### Large memory guests
14498e8a7b6dSSamuel Ortiz
14508e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
14518e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
14527688e6e2SSamuel Ortiz
1453d784ac29SSamuel Ortiz# v0.2.0
1454d784ac29SSamuel Ortiz
14558ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1456d784ac29SSamuel Ortiz
1457d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1458d784ac29SSamuel Ortiz
1459d784ac29SSamuel Ortiz### Network device offloading
1460d784ac29SSamuel Ortiz
1461d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1462d784ac29SSamuel Ortizprocesses, we added support for
1463d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1464d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1465d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1466d784ac29SSamuel Ortiz
1467d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1468d784ac29SSamuel Ortiz
1469d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1470d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1471d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1472d784ac29SSamuel Ortizcleanly reboot and shutdown.
1473d784ac29SSamuel Ortiz
1474d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1475d784ac29SSamuel Ortizenabled by default.
1476d784ac29SSamuel Ortiz
1477d784ac29SSamuel Ortiz### Debug I/O port
1478d784ac29SSamuel Ortiz
1479d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1480d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1481d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1482d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
148337a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
148437a2c13aSAlyssa Rossdetails.
1485d784ac29SSamuel Ortiz
1486d784ac29SSamuel Ortiz### Improved direct device assignment
1487d784ac29SSamuel Ortiz
1488d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1489d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1490d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1491d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1492d784ac29SSamuel Ortizdirectly assigned devices.
1493d784ac29SSamuel Ortiz
1494d784ac29SSamuel Ortiz### Improved shared filesystem
1495d784ac29SSamuel Ortiz
1496d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1497d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1498d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1499d784ac29SSamuel Ortizmemory footprint.
1500d784ac29SSamuel Ortiz
1501d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1502d784ac29SSamuel Ortiz
15038ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1504d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1505d784ac29SSamuel Ortizour CI pipeline.
1506d784ac29SSamuel Ortiz
150793b77530SSamuel Ortiz# v0.1.0
150893b77530SSamuel Ortiz
15098ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
151093b77530SSamuel Ortiz
151193b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
151293b77530SSamuel Ortiz
151393b77530SSamuel Ortiz### Shared filesystem
151493b77530SSamuel Ortiz
151593b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
151693b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
151793b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
151893b77530SSamuel Ortiz
151937a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
152037a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
152193b77530SSamuel Ortiz
152293b77530SSamuel Ortiz### Initial direct device assignment support
152393b77530SSamuel Ortiz
152493b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
152593b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
152693b77530SSamuel Ortizphysical devices into its guest.
152793b77530SSamuel Ortiz
152837a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
152937a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
153093b77530SSamuel Ortiz
153193b77530SSamuel Ortiz### Userspace IOAPIC
153293b77530SSamuel Ortiz
153393b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
153493b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
153593b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
153693b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
153793b77530SSamuel Ortiz
153893b77530SSamuel Ortiz### Virtual persistent memory
153993b77530SSamuel Ortiz
154093b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
154193b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
154293b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
154393b77530SSamuel Ortiz
154493b77530SSamuel Ortiz### Linux kernel bzImage
154593b77530SSamuel Ortiz
154693b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
154793b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
154893b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
154993b77530SSamuel Ortizdistribution kernel image.
155093b77530SSamuel Ortiz
155193b77530SSamuel Ortiz### Console over virtio
155293b77530SSamuel Ortiz
155393b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
155493b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
155593b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
155693b77530SSamuel Ortizimplementation.
155793b77530SSamuel Ortiz
155893b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
155993b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
156093b77530SSamuel Ortiz`--serial tty --console off` from the command line.
156193b77530SSamuel Ortiz
156293b77530SSamuel Ortiz### Unit testing
156393b77530SSamuel Ortiz
156493b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
156593b77530SSamuel Ortiz
156693b77530SSamuel Ortiz### Integration tests parallelization
156793b77530SSamuel Ortiz
156893b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
156993b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1570