xref: /cloud-hypervisor/release-notes.md (revision 30a01277655bf943a5ccdab67d9d398b0335d669)
1*30a01277SRob Bradford- [v15.0](#v150)
2*30a01277SRob Bradford    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
3*30a01277SRob Bradford    - [Network device rate limiting](#network-device-rate-limiting)
4*30a01277SRob Bradford    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
5*30a01277SRob Bradford    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
6*30a01277SRob Bradford    - [Bug fixes](#bug-fixes)
7*30a01277SRob Bradford    - [Deprecations](#deprecations)
8*30a01277SRob Bradford    - [Contributors](#contributors)
9*30a01277SRob Bradford- [v0.14.1](#v0141)
1040c63dcfSRob Bradford- [v0.14.0](#v0140)
1140c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
1240c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
1340c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
1440c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
1540c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
1640c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
17*30a01277SRob Bradford    - [Deprecations](#deprecations-1)
18*30a01277SRob Bradford    - [Contributors](#contributors-1)
19f58b6f84SRob Bradford- [v0.13.0](#v0130)
20f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
2140c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
22f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
23f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
24f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
25f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
26*30a01277SRob Bradford    - [Contributors](#contributors-2)
27d42b5084SRob Bradford- [v0.12.0](#v0120)
28d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
29d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
30d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
31d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
32*30a01277SRob Bradford    - [Contributors](#contributors-3)
337dcd3affSRob Bradford- [v0.11.0](#v0110)
347dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
357dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
367dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
377dcd3affSRob Bradford    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
387dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
397dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
407dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
417dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
427dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
437dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
447dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes)
45*30a01277SRob Bradford    - [Contributors](#contributors-4)
46198bd551SRob Bradford- [v0.10.0](#v0100)
47198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
48198bd551SRob Bradford    - [Memory Zones](#memory-zones)
49198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
50198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
517dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-1)
52*30a01277SRob Bradford    - [Contributors](#contributors-5)
53d714cf81SRob Bradford- [v0.9.0](#v090)
54d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
55d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
56d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
57d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
58d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
59d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
60d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
61d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
62d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
63d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
64198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
657dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-2)
66*30a01277SRob Bradford    - [Contributors](#contributors-6)
67d714cf81SRob Bradford- [v0.8.0](#v080)
68d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
69d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
70d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
71d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
72d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
737dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-3)
74d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
75*30a01277SRob Bradford    - [Contributors](#contributors-7)
7696be8229SRob Bradford- [v0.7.0](#v070)
7796be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
7896be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
7996be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
8096be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
8196be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
8296be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
8396be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
8452b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
85*30a01277SRob Bradford    - [Contributors](#contributors-8)
8603cb26ccSSamuel Ortiz- [v0.6.0](#v060)
8703cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
8803cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
8903cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
9003cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
9103cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
92*30a01277SRob Bradford    - [Contributors](#contributors-9)
9394f2fc33SRob Bradford- [v0.5.1](#v051)
942f395e60SSamuel Ortiz- [v0.5.0](#v050)
9594f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
9694f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
9794f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
9894f2fc33SRob Bradford    - [Development Tools](#development-tools)
9994f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
100*30a01277SRob Bradford    - [Contributors](#contributors-10)
101cec884e8SSamuel Ortiz- [v0.4.0](#v040)
10294f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
10394f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
10494f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
10594f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
10694f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
10794f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
10894f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
109*30a01277SRob Bradford    - [Contributors](#contributors-11)
1108e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
11194f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
11294f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
11394f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
11494f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
11594f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
11694f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
11794f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
11894f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1197688e6e2SSamuel Ortiz- [v0.2.0](#v020)
12094f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
12194f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
12294f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
12394f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
12494f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
12594f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1267688e6e2SSamuel Ortiz- [v0.1.0](#v010)
12794f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
12894f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
12994f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
13094f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
13194f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
13294f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
13394f2fc33SRob Bradford    - [Unit testing](#unit-testing)
13494f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
13594f2fc33SRob Bradford
136*30a01277SRob Bradford# v15.0
137*30a01277SRob Bradford
138*30a01277SRob BradfordThis release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
139*30a01277SRob Bradford
140*30a01277SRob BradfordHighlights for `cloud-hypervisor` version v15.0 include:
141*30a01277SRob Bradford
142*30a01277SRob Bradford### Version numbering and stability guarantees
143*30a01277SRob Bradford
144*30a01277SRob BradfordThis release is the first in a new version numbering scheme to represent that
145*30a01277SRob Bradfordwe believe Cloud Hypervisor is maturing and entering a period of stability.
146*30a01277SRob BradfordWith this new release we are beginning our new stability guarantees:
147*30a01277SRob Bradford
148*30a01277SRob Bradford* The API (including command line options) will not be removed or changed in a
149*30a01277SRob Bradford  breaking way without a minimum of 2 releases notice. Where possible warnings
150*30a01277SRob Bradford  will be given about the use of deprecated functionality and the deprecations
151*30a01277SRob Bradford  will be documented in the release notes.
152*30a01277SRob Bradford* Point releases will be made between individual releases where there are
153*30a01277SRob Bradford  substantial bug fixes or security issues that need to be fixed.
154*30a01277SRob Bradford
155*30a01277SRob BradfordCurrently the following items are **not** guaranteed across updates:
156*30a01277SRob Bradford
157*30a01277SRob Bradford* Snapshot/restore is not supported across different versions
158*30a01277SRob Bradford* Live migration is not supported across different versions
159*30a01277SRob Bradford* The following features are considered experimental and may change
160*30a01277SRob Bradford  substantially between releases: TDX, SGX.
161*30a01277SRob Bradford
162*30a01277SRob Bradford### Network device rate limiting
163*30a01277SRob Bradford
164*30a01277SRob BradfordBuilding on our existing support for rate limiting block activity the network
165*30a01277SRob Bradforddevice also now supports rate limiting. Full details of the controls are in the
166*30a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
167*30a01277SRob Bradford
168*30a01277SRob Bradford### Support for runtime control of `virtio-net` guest offload
169*30a01277SRob Bradford
170*30a01277SRob BradfordThe guest is now able to change the offload settings for the `virtio-net`
171*30a01277SRob Bradforddevice. As well as providing a useful control this mitigates an issue in the
172*30a01277SRob BradfordLinux kernel where the guest will attempt to reprogram the offload settings
173*30a01277SRob Bradfordeven if they are not advertised as configurable (#2528).
174*30a01277SRob Bradford
175*30a01277SRob Bradford### `--api-socket` supports file descriptor parameter
176*30a01277SRob Bradford
177*30a01277SRob BradfordThe `--api-socket` can now take an `fd=` parameter to specify an existing file
178*30a01277SRob Bradforddescriptor to use. This is particularly beneficial for frameworks that need to
179*30a01277SRob Bradfordprogrammatically control Cloud Hypervisor.
180*30a01277SRob Bradford
181*30a01277SRob Bradford### Bug fixes
182*30a01277SRob Bradford
183*30a01277SRob Bradford* A workaround has been put in place to mitigate a Linux kernel issues that
184*30a01277SRob Bradford  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
185*30a01277SRob Bradford* PCI BARs are now correctly aligned removing the need for the guest to
186*30a01277SRob Bradford  reprogram them (#1797,#1798)
187*30a01277SRob Bradford* Handle TAP interface not being writable within virtio-net (due to the buffer
188*30a01277SRob Bradford  exhaustion on the host) (#2517)
189*30a01277SRob Bradford* The recommended Linux kernel is now v5.12.0 as it contains a fix that
190*30a01277SRob Bradford  prevents snapshot & restore working (#2535)
191*30a01277SRob Bradford
192*30a01277SRob Bradford### Deprecations
193*30a01277SRob Bradford
194*30a01277SRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
195*30a01277SRob Bradford
196*30a01277SRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
197*30a01277SRob Bradford  binaries has been deprecated. When using direct boot users should configure
198*30a01277SRob Bradford  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
199*30a01277SRob Bradford
200*30a01277SRob Bradford### Contributors
201*30a01277SRob Bradford
202*30a01277SRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
203*30a01277SRob Bradford
204*30a01277SRob Bradford* Alyssa Ross <hi@alyssa.is>
205*30a01277SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
206*30a01277SRob Bradford* Bo Chen <chen.bo@intel.com>
207*30a01277SRob Bradford* Gaelan Steele <gbs@canishe.com>
208*30a01277SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
209*30a01277SRob Bradford* Michael Zhao <michael.zhao@arm.com>
210*30a01277SRob Bradford* Muminul Islam <muislam@microsoft.com>
211*30a01277SRob Bradford* Rob Bradford <robert.bradford@intel.com>
212*30a01277SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
213*30a01277SRob Bradford* Wei Liu <liuwe@microsoft.com>
214*30a01277SRob Bradford* William Douglas <william.douglas@intel.com>
215*30a01277SRob Bradford
216*30a01277SRob Bradford# v0.14.1
217*30a01277SRob Bradford
218*30a01277SRob BradfordBug fix release branched off the v0.14.0 release. The following bugs were fixed
219*30a01277SRob Bradfordin this release:
220*30a01277SRob Bradford
221*30a01277SRob Bradford* CPU hotplug on Windows failed due to misreported CPU state information and
222*30a01277SRob Bradford  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
223*30a01277SRob Bradford* A seccomp rule was missing that was triggered on CPU unplug (#2455)
224*30a01277SRob Bradford* A bounds check in VIRTIO queue validation was erroneously generating
225*30a01277SRob Bradford  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
226*30a01277SRob Bradford
22740c63dcfSRob Bradford# v0.14.0
22840c63dcfSRob Bradford
22940c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
23040c63dcfSRob Bradford
23140c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
23240c63dcfSRob Bradford
23340c63dcfSRob Bradford### Structured event monitoring
23440c63dcfSRob Bradford
23540c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
23640c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
23740c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
23840c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
23940c63dcfSRob BradfordHypervisor API surface.
24040c63dcfSRob Bradford
24140c63dcfSRob Bradford### MSHV improvements
24240c63dcfSRob Bradford
24340c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
24440c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
24540c63dcfSRob Bradfordthe MSHV support.
24640c63dcfSRob Bradford
24740c63dcfSRob Bradford### Improved aarch64 platform
24840c63dcfSRob Bradford
24940c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
25040c63dcfSRob BradfordVM including an enhanced serial UART.
25140c63dcfSRob Bradford
25240c63dcfSRob Bradford### Updated hotplug documentation
25340c63dcfSRob Bradford
25440c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
25540c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
25640c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
25740c63dcfSRob Bradford
25840c63dcfSRob Bradford### PTY control for serial and `virtio-console`
25940c63dcfSRob Bradford
26040c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
26140c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
26240c63dcfSRob BradfordPTY subsystem.
26340c63dcfSRob Bradford
26440c63dcfSRob Bradford### Block device rate limiting
26540c63dcfSRob Bradford
26640c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
26740c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
268*30a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
26940c63dcfSRob Bradford
27040c63dcfSRob Bradford
27140c63dcfSRob Bradford### Deprecations
27240c63dcfSRob Bradford
27340c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
27440c63dcfSRob Bradford
27540c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
27640c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
27740c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
27840c63dcfSRob Bradford
27940c63dcfSRob Bradford
28040c63dcfSRob Bradford### Contributors
28140c63dcfSRob Bradford
28240c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
28340c63dcfSRob Bradfordsome new faces.
28440c63dcfSRob Bradford
28540c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
28640c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
28740c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
28840c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
28940c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
29040c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
29140c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
29240c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
29340c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
29440c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
29540c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
29640c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
29740c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
29840c63dcfSRob Bradford
299f58b6f84SRob Bradford# v0.13.0
300f58b6f84SRob Bradford
301f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
302f58b6f84SRob Bradford
303f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
304f58b6f84SRob Bradford
305f58b6f84SRob Bradford### Wider VFIO device support
306f58b6f84SRob Bradford
307f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
308f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
309f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
310f58b6f84SRob Bradforddrivers.
311f58b6f84SRob Bradford
31240c63dcfSRob Bradford### Improved huge page support
313f58b6f84SRob Bradford
314f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
315f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
316f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
317f58b6f84SRob Bradforddesired size in their pool.
318f58b6f84SRob Bradford
319f58b6f84SRob Bradford### MACvTAP support
320f58b6f84SRob Bradford
321f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
322f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
323f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
324f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
325f58b6f84SRob Bradford
326f58b6f84SRob Bradford### VHD disk image support
327f58b6f84SRob Bradford
328f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
329f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
330f58b6f84SRob Bradford
331f58b6f84SRob Bradford### Improved Virtio device threading
332f58b6f84SRob Bradford
333f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
334f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
335f58b6f84SRob Bradfordpredictable name derived from the device id.
336f58b6f84SRob Bradford
337f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
338f58b6f84SRob Bradford
339f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
340f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
341f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
342f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
343f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
344f58b6f84SRob Bradford
345f58b6f84SRob Bradford### Contributors
346f58b6f84SRob Bradford
347f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
348f58b6f84SRob Bradfordsome new faces.
349f58b6f84SRob Bradford
350f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
351f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
352f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
353f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
354f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
355f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
356f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
357f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
358f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
359f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
360f58b6f84SRob Bradford
361d42b5084SRob Bradford# v0.12.0
362d42b5084SRob Bradford
363d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
364d42b5084SRob Bradford
365d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
366d42b5084SRob Bradford
367d42b5084SRob Bradford### ARM64 enhancements
368d42b5084SRob Bradford
369d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
370d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
371d42b5084SRob Bradford
372d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
373d42b5084SRob Bradford
374d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
375d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
376d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
377d42b5084SRob Bradfordremoved.
378d42b5084SRob Bradford
379d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
380d42b5084SRob Bradford
381d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
382d42b5084SRob Bradfordinstead hosted in [it's own
383d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
384d42b5084SRob Bradford
385d42b5084SRob Bradford### Enhanced "info" API
386d42b5084SRob Bradford
387d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
388d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
389d42b5084SRob Bradford
390d42b5084SRob Bradford### Contributors
391d42b5084SRob Bradford
392d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
393d42b5084SRob Bradford
394d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
395d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
396d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
397d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
398d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
399d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
400d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
401d42b5084SRob Bradford
4027dcd3affSRob Bradford# v0.11.0
4037dcd3affSRob Bradford
4047dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
4057dcd3affSRob Bradford
4067dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
4077dcd3affSRob Bradford
4087dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
4097dcd3affSRob Bradford
4107dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
4117dcd3affSRob Bradfordbe used for a significantly higher performance block device.
4127dcd3affSRob Bradford
4137dcd3affSRob Bradford### Windows Guest Support
4147dcd3affSRob Bradford
4157dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
4167dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
4177dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
4187dcd3affSRob Bradforddocumentation](docs/windows.md).
4197dcd3affSRob Bradford
4207dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
4217dcd3affSRob Bradford
4227dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
4237dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
4247dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
4257dcd3affSRob Bradford
4267dcd3affSRob Bradford### `virtio-mmmio` Removal
4277dcd3affSRob Bradford
4287dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
4297dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
4307dcd3affSRob Bradfordreduce the testing burden of the project.
4317dcd3affSRob Bradford
4327dcd3affSRob Bradford### Snapshot/Restore support for ARM64
4337dcd3affSRob Bradford
4347dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
4357dcd3affSRob Bradfordimplemented.
4367dcd3affSRob Bradford
4377dcd3affSRob Bradford### Improved Linux Boot Time
4387dcd3affSRob Bradford
4397dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
4407dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
4417dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
4427dcd3affSRob Bradford
4437dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
4447dcd3affSRob Bradford
4457dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
4467dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
4477dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
4487dcd3affSRob Bradfordresources.
4497dcd3affSRob Bradford
4507dcd3affSRob Bradford### Default Log Level Changed
4517dcd3affSRob Bradford
4527dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
4537dcd3affSRob Bradfordeasier to see potential issues. New [logging
4547dcd3affSRob Bradforddocumentation](docs/logging) was also added.
4557dcd3affSRob Bradford
4567dcd3affSRob Bradford### New `--balloon` Parameter Added
4577dcd3affSRob Bradford
4587dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
4597dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
4607dcd3affSRob Bradfordcontrols without overloading `--memory`.
4617dcd3affSRob Bradford
4627dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
4637dcd3affSRob Bradford
4647dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
4657dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
4667dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
4677dcd3affSRob Bradford
4687dcd3affSRob Bradford### Notable Bug Fixes
4697dcd3affSRob Bradford
4707dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
4717dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
4727dcd3affSRob Bradford* CPU identification string is now exposed to the guest
4737dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
4747dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
4757dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
4767dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
4777dcd3affSRob Bradford  can be used (#1803)
4787dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
4797dcd3affSRob Bradford  correctly
4807dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
4817dcd3affSRob Bradford  correctly
4827dcd3affSRob Bradford
4837dcd3affSRob Bradford### Contributors
4847dcd3affSRob Bradford
4857dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
4867dcd3affSRob Bradford
4877dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
4887dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
4897dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
4907dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
4917dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
4927dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
4937dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
4947dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
4957dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
4967dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
4977dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
4987dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
4997dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
5007dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
5017dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
5027dcd3affSRob Bradford
5037dcd3affSRob Bradford
504198bd551SRob Bradford# v0.10.0
505198bd551SRob Bradford
506198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
507198bd551SRob Bradford
508198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
509198bd551SRob Bradford
510198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
511198bd551SRob Bradford
512198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
513198bd551SRob Bradford
514198bd551SRob Bradford### Memory Zones
515198bd551SRob Bradford
516198bd551SRob 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).
517198bd551SRob Bradford
518198bd551SRob Bradford### `Seccomp` Sandbox Improvements
519198bd551SRob Bradford
520198bd551SRob 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`.
521198bd551SRob Bradford
522198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
523198bd551SRob Bradford
524198bd551SRob 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.
525198bd551SRob Bradford
526198bd551SRob Bradford### Notable Bug Fixes
527198bd551SRob Bradford
528198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
529198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
530198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
531198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
532198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
533198bd551SRob Bradford
534198bd551SRob Bradford### Contributors
535198bd551SRob Bradford
536198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
537198bd551SRob Bradford
538198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
539198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
540198bd551SRob Bradford* Anatol Belski <ab@php.net>
541198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
542198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
543198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
544198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
545198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
546198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
547198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
548198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
549198bd551SRob Bradford
550d714cf81SRob Bradford# v0.9.0
551d714cf81SRob Bradford
552d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
553d714cf81SRob Bradford
554d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
555d714cf81SRob Bradford
556d714cf81SRob Bradford### `io_uring` Based Block Device Support
557d714cf81SRob Bradford
558d714cf81SRob 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.
559d714cf81SRob Bradford
560d714cf81SRob Bradford### Block and Network Device Statistics
561d714cf81SRob Bradford
562d714cf81SRob 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.
563d714cf81SRob Bradford
564d714cf81SRob Bradford### HTTP API Responses
565d714cf81SRob Bradford
566d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
567d714cf81SRob Bradford
568d714cf81SRob Bradford### CPU Topology
569d714cf81SRob Bradford
570d714cf81SRob 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.
571d714cf81SRob Bradford
572d714cf81SRob Bradford### Release Build Optimization
573d714cf81SRob Bradford
574d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
575d714cf81SRob Bradford
576d714cf81SRob Bradford### Hypervisor Abstraction
577d714cf81SRob Bradford
578d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
579d714cf81SRob Bradford
580d714cf81SRob Bradford### Snapshot/Restore Improvements
581d714cf81SRob Bradford
582d714cf81SRob 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.
583d714cf81SRob Bradford
584d714cf81SRob Bradford### Virtio Memory Ballooning Support
585d714cf81SRob Bradford
586d714cf81SRob 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.
587d714cf81SRob Bradford
588d714cf81SRob Bradford### Enhancements to ARM64 Support
589d714cf81SRob Bradford
590d714cf81SRob 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.
591d714cf81SRob Bradford
592d714cf81SRob Bradford### Intel SGX Support
593d714cf81SRob Bradford
594d714cf81SRob 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).
595d714cf81SRob Bradford
596d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
597d714cf81SRob Bradford
598d714cf81SRob 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.
599d714cf81SRob Bradford
600d714cf81SRob Bradford### Notable Bug Fixes
601d714cf81SRob Bradford
602d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
603d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
604d714cf81SRob 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).
605d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
606d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
607d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
608d714cf81SRob Bradford
609d714cf81SRob Bradford### Contributors
610d714cf81SRob Bradford
611d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
612d714cf81SRob Bradford
613d714cf81SRob Bradford* Anatol Belski <ab@php.net>
614d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
615d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
616d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
617d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
618d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
619d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
620d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
621d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
622d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
623d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
624d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
625d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
626d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
627d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
628d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
629d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
630d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
631d714cf81SRob Bradford
632d714cf81SRob Bradford
63352b83969SRob Bradford# v0.8.0
63452b83969SRob Bradford
63552b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
63652b83969SRob Bradford
63752b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
63852b83969SRob Bradford
63952b83969SRob Bradford### Experimental Snapshot and Restore Support
64052b83969SRob Bradford
64152b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
64252b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
64352b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
64452b83969SRob Bradfordoriginal VM at the point it was paused.
64552b83969SRob Bradford
64652b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
64752b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
64852b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
64952b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
65052b83969SRob Bradford(#1176).
65152b83969SRob Bradford
65252b83969SRob Bradford### Experimental ARM64 Support
65352b83969SRob Bradford
65452b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
65552b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
65652b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
65752b83969SRob Bradford
65852b83969SRob Bradford### Support for Using 5-level Paging in Guests
65952b83969SRob Bradford
66052b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
66152b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
66252b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
66352b83969SRob Bradfordwork due to current limitations in the PVH boot process.
66452b83969SRob Bradford
66552b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
66652b83969SRob Bradford
66752b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
66852b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
66952b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
67052b83969SRob Bradfordthe guest must service.
67152b83969SRob Bradford
67252b83969SRob Bradford### `vhost_user_fs` Improvements
67352b83969SRob Bradford
67452b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
67552b83969SRob Bradford
67652b83969SRob Bradford
67752b83969SRob Bradford### Notable Bug Fixes
67852b83969SRob Bradford
67952b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
68052b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
68152b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
68252b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
68352b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
68452b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
68552b83969SRob Bradford  #1216).
68652b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
68752b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
68852b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
68952b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
69052b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
69152b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
69252b83969SRob Bradford  (#751).
69352b83969SRob Bradford
69452b83969SRob Bradford### Command Line and API Changes
69552b83969SRob Bradford
69652b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
69752b83969SRob Bradford
69852b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
69952b83969SRob Bradford  rather than `sock` in some cases.
70052b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
70152b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
70252b83969SRob Bradford  offered for negotiation.
70352b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
70452b83969SRob Bradford  address for the `tap` device on the host.
70552b83969SRob Bradford
70652b83969SRob Bradford### Contributors
70752b83969SRob Bradford
70852b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
70952b83969SRob Bradford
71052b83969SRob Bradford* Anatol Belski <ab@php.net>
71152b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
71252b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
71352b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
71452b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
71552b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
71652b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
71752b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
71852b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
71952b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
72052b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
72152b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
72252b83969SRob Bradford
72396be8229SRob Bradford# v0.7.0
72496be8229SRob Bradford
72596be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
72696be8229SRob Bradford
72796be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
72896be8229SRob Bradford
72996be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
73096be8229SRob Bradford
73196be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
73296be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
73396be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
7345c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
73596be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
73696be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
73796be8229SRob Bradforddevices to ease their removal.
73896be8229SRob Bradford
73996be8229SRob Bradford### Alternative `libc` Support
74096be8229SRob Bradford
74196be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
74296be8229SRob Bradfordcontains a static binary compiled using that toolchain.
74396be8229SRob Bradford
74496be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
74596be8229SRob Bradford
74696be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
74796be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
74896be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
74996be8229SRob Bradfordis passed when the devices are created.
75096be8229SRob Bradford
75196be8229SRob Bradford### Initial RamFS Support
75296be8229SRob Bradford
75396be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
75496be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
75596be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
75696be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
75796be8229SRob Bradfordminimal image.
75896be8229SRob Bradford
75996be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
76096be8229SRob Bradford
76196be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
76296be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
76396be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
76496be8229SRob Bradfordrequires kernel patches to be able to support it.
76596be8229SRob Bradford
76696be8229SRob Bradford### `Seccomp` Sandboxing
76796be8229SRob Bradford
76896be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
76996be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
77096be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
77196be8229SRob Bradford
77296be8229SRob Bradford### Updated Distribution Support
77396be8229SRob Bradford
77496be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
77596be8229SRob Bradforddistributions and is part of our regular testing programme.
77696be8229SRob Bradford
77796be8229SRob Bradford### Command Line and API Changes
77896be8229SRob Bradford
77996be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
78096be8229SRob Bradford
78196be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
78296be8229SRob Bradford  If no name is specified the VMM chooses one.
78396be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
78496be8229SRob Bradford  memory instead of providing a path.
78596be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
78696be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
78796be8229SRob Bradford  option and replaced it with a single optional field.
78896be8229SRob Bradford* There is enhanced validation of the command line and API provided
78996be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
79096be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
79196be8229SRob Bradford  device.
79296be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
79396be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
79496be8229SRob Bradford  has appropriate new HTTP endpoints too.
79596be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
79696be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
79796be8229SRob Bradford  to provide the equivalent of a read-only file.
79896be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
79996be8229SRob Bradford  with those used by `--disk`.
80096be8229SRob Bradford
80196be8229SRob Bradford### Contributors
80296be8229SRob Bradford
80396be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
80496be8229SRob Bradford
80596be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
80696be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
80796be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
80896be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
80996be8229SRob Bradford* Dean Sheather <dean@coder.com>
81096be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
81196be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
81296be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
81396be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
81496be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
81596be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
81696be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
81796be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
81896be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
81996be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
82096be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
82196be8229SRob Bradford
82203cb26ccSSamuel Ortiz# v0.6.0
82303cb26ccSSamuel Ortiz
82403cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
82503cb26ccSSamuel Ortiz
82603cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
82703cb26ccSSamuel Ortiz
82803cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
82903cb26ccSSamuel Ortiz
83003cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
83103cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
83203cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
83303cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
83403cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
83503cb26ccSSamuel Ortiz
83603cb26ccSSamuel Ortiz### Shared Filesystem Improvements
83703cb26ccSSamuel Ortiz
83803cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
83903cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
84003cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
84103cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
84203cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
84303cb26ccSSamuel Ortiz
84403cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
84503cb26ccSSamuel Ortiz
84603cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
84703cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
84803cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
84903cb26ccSSamuel Ortizinto their own, separate processes.
8505c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
85103cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
85203cb26ccSSamuel Ortiz
85303cb26ccSSamuel Ortiz### Command Line Interface
85403cb26ccSSamuel Ortiz
85503cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
85637a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
85737a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
85837a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
85937a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
86037a2c13aSAlyssa Rossis created with each build and available e.g. at
86103cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
86203cb26ccSSamuel Ortiz
86303cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
86403cb26ccSSamuel Ortizcommands.
86503cb26ccSSamuel Ortiz
86603cb26ccSSamuel Ortiz### PVH Boot
86703cb26ccSSamuel Ortiz
86803cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
86903cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
87003cb26ccSSamuel Ortiz
87103cb26ccSSamuel Ortiz### Contributors
87203cb26ccSSamuel Ortiz
87303cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
87403cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
87503cb26ccSSamuel Ortiz
87603cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
87703cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
87803cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
87903cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
88003cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
88103cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
88203cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
88303cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
88403cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
88503cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
88603cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
88703cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
88803cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
88903cb26ccSSamuel Ortiz
89094f2fc33SRob Bradford# v0.5.1
89194f2fc33SRob Bradford
89294f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
89394f2fc33SRob Bradford
89494f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
89594f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
89694f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
89794f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
89894f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
8998e8a7b6dSSamuel Ortiz
9002f395e60SSamuel Ortiz# v0.5.0
9012f395e60SSamuel Ortiz
9022f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
9032f395e60SSamuel Ortiz
9042f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
9052f395e60SSamuel Ortiz
9062f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
9072f395e60SSamuel Ortiz
9082f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
9092f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
9102f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
9112f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
9122f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
9132f395e60SSamuel Ortiz
9142f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
9152f395e60SSamuel Ortiz
9162f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
9172f395e60SSamuel Ortiz
9182f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
9192f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
9202f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
9212f395e60SSamuel Ortiz
9222f395e60SSamuel Ortiz### New Interrupt Management Framework
9232f395e60SSamuel Ortiz
9242f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
9252f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
9262f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
9272f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
9282f395e60SSamuel Ortizvirtio ones.
9292f395e60SSamuel Ortiz
9302f395e60SSamuel Ortiz### Development Tools
9312f395e60SSamuel Ortiz
9322f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
9332f395e60SSamuel Ortizbuild, development and testing tools.
9342f395e60SSamuel OrtizSomehow similar to the excellent
9352f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
93637a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
9372f395e60SSamuel Ortiz
9382f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
9392f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
9402f395e60SSamuel Ortiz
9412f395e60SSamuel Ortiz### Kata Containers Integration
9422f395e60SSamuel Ortiz
9432f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
9442f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
9452f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
9462f395e60SSamuel Ortizintegrated into the project's CI.
9472f395e60SSamuel Ortiz
9482f395e60SSamuel Ortiz### Contributors
9492f395e60SSamuel Ortiz
9502f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
9512f395e60SSamuel Ortiz
9522f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
9532f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
9542f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
9552f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
9562f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
9572f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
9582f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
9592f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
9602f395e60SSamuel Ortiz
961cec884e8SSamuel Ortiz# v0.4.0
962cec884e8SSamuel Ortiz
963cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
964cec884e8SSamuel Ortiz
965cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
966cec884e8SSamuel Ortiz
967cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
968cec884e8SSamuel Ortiz
969cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
970cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
971cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
972cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
97337a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
974cec884e8SSamuel Ortiz
975cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
976cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
977cec884e8SSamuel Ortiz
978cec884e8SSamuel Ortiz### Programmatic firmware tables generation
979cec884e8SSamuel Ortiz
980cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
981cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
982cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
983cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
984cec884e8SSamuel Ortiztables based on the VMM device model and topology.
985cec884e8SSamuel Ortiz
986cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
987cec884e8SSamuel Ortiz
988cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
989cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
990cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
991cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
992cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
993cec884e8SSamuel Ortiz
994cec884e8SSamuel Ortiz### Guest pause and resume
995cec884e8SSamuel Ortiz
9965c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
997cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
998cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
999cec884e8SSamuel Ortizand resume capabilities.
1000cec884e8SSamuel Ortiz
1001cec884e8SSamuel Ortiz### Userspace IOAPIC by default
1002cec884e8SSamuel Ortiz
1003cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
1004cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
1005cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
1006cec884e8SSamuel Ortizdefault.
1007cec884e8SSamuel Ortiz
1008cec884e8SSamuel Ortiz### PCI BAR reprogramming
1009cec884e8SSamuel Ortiz
1010cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
1011cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
1012cec884e8SSamuel Ortizreprogramming.
1013cec884e8SSamuel Ortiz
1014cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
1015cec884e8SSamuel Ortiz
1016cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1017cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1018cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1019cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1020cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1021cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
1022cec884e8SSamuel Ortiztemporarily fork.
1023cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
1024cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
1025cec884e8SSamuel Ortiz
1026cec884e8SSamuel Ortiz### Contributors
1027cec884e8SSamuel Ortiz
1028cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
1029cec884e8SSamuel Ortiz
1030cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
1031cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
1032cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1033cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1034cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
1035cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
1036cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
1037cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
1038cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
1039cec884e8SSamuel Ortiz
10408e8a7b6dSSamuel Ortiz# v0.3.0
10418e8a7b6dSSamuel Ortiz
10428ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
10438e8a7b6dSSamuel Ortiz
10448e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
10458e8a7b6dSSamuel Ortiz
10468e8a7b6dSSamuel Ortiz### Block device offloading
10478e8a7b6dSSamuel Ortiz
10488e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
10498e8a7b6dSSamuel Ortizand we added support for
10508e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
10518e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
10528e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
10538e8a7b6dSSamuel Ortizbackend.
10548e8a7b6dSSamuel Ortiz
10558e8a7b6dSSamuel Ortiz### Network device backend
10568e8a7b6dSSamuel Ortiz
10578e8a7b6dSSamuel OrtizThe previous release provided support for
10588e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
10598e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
10608e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
10618e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
10628e8a7b6dSSamuel Ortiz
10638e8a7b6dSSamuel Ortiz### Virtual sockets
10648e8a7b6dSSamuel Ortiz
10658e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
10668e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
10678e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
10688e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
10698e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
10708e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
10718e8a7b6dSSamuel Ortiz
10728e8a7b6dSSamuel Ortiz### HTTP based API
10738e8a7b6dSSamuel Ortiz
10748e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
10758e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
10768e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
10778e8a7b6dSSamuel Ortiznext release cycle.
10788e8a7b6dSSamuel Ortiz
10798e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
10808e8a7b6dSSamuel Ortiz
10818e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
10828e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
10838e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
10848e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
10858e8a7b6dSSamuel Ortiz
10868e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
10878e8a7b6dSSamuel Ortiz
10888e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
108937a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
109037a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
10918e8a7b6dSSamuel Ortiz
10928e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
10938e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
10948e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
10958e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
10968e8a7b6dSSamuel Ortizsetting.
10978e8a7b6dSSamuel Ortiz
10988e8a7b6dSSamuel Ortiz### Ubuntu 19.10
10998e8a7b6dSSamuel Ortiz
11008ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
11018e8a7b6dSSamuel Ortizwe can now support the latest
11028e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
11038e8a7b6dSSamuel Ortiz
11048e8a7b6dSSamuel Ortiz### Large memory guests
11058e8a7b6dSSamuel Ortiz
11068e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
11078e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
11087688e6e2SSamuel Ortiz
1109d784ac29SSamuel Ortiz# v0.2.0
1110d784ac29SSamuel Ortiz
11118ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1112d784ac29SSamuel Ortiz
1113d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1114d784ac29SSamuel Ortiz
1115d784ac29SSamuel Ortiz### Network device offloading
1116d784ac29SSamuel Ortiz
1117d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1118d784ac29SSamuel Ortizprocesses, we added support for
1119d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1120d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1121d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1122d784ac29SSamuel Ortiz
1123d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1124d784ac29SSamuel Ortiz
1125d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1126d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1127d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1128d784ac29SSamuel Ortizcleanly reboot and shutdown.
1129d784ac29SSamuel Ortiz
1130d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1131d784ac29SSamuel Ortizenabled by default.
1132d784ac29SSamuel Ortiz
1133d784ac29SSamuel Ortiz### Debug I/O port
1134d784ac29SSamuel Ortiz
1135d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1136d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1137d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1138d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
113937a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
114037a2c13aSAlyssa Rossdetails.
1141d784ac29SSamuel Ortiz
1142d784ac29SSamuel Ortiz### Improved direct device assignment
1143d784ac29SSamuel Ortiz
1144d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1145d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1146d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1147d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1148d784ac29SSamuel Ortizdirectly assigned devices.
1149d784ac29SSamuel Ortiz
1150d784ac29SSamuel Ortiz### Improved shared filesystem
1151d784ac29SSamuel Ortiz
1152d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1153d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1154d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1155d784ac29SSamuel Ortizmemory footprint.
1156d784ac29SSamuel Ortiz
1157d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1158d784ac29SSamuel Ortiz
11598ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1160d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1161d784ac29SSamuel Ortizour CI pipeline.
1162d784ac29SSamuel Ortiz
116393b77530SSamuel Ortiz# v0.1.0
116493b77530SSamuel Ortiz
11658ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
116693b77530SSamuel Ortiz
116793b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
116893b77530SSamuel Ortiz
116993b77530SSamuel Ortiz### Shared filesystem
117093b77530SSamuel Ortiz
117193b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
117293b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
117393b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
117493b77530SSamuel Ortiz
117537a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
117637a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
117793b77530SSamuel Ortiz
117893b77530SSamuel Ortiz### Initial direct device assignment support
117993b77530SSamuel Ortiz
118093b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
118193b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
118293b77530SSamuel Ortizphysical devices into its guest.
118393b77530SSamuel Ortiz
118437a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
118537a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
118693b77530SSamuel Ortiz
118793b77530SSamuel Ortiz### Userspace IOAPIC
118893b77530SSamuel Ortiz
118993b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
119093b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
119193b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
119293b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
119393b77530SSamuel Ortiz
119493b77530SSamuel Ortiz### Virtual persistent memory
119593b77530SSamuel Ortiz
119693b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
119793b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
119893b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
119993b77530SSamuel Ortiz
120093b77530SSamuel Ortiz### Linux kernel bzImage
120193b77530SSamuel Ortiz
120293b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
120393b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
120493b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
120593b77530SSamuel Ortizdistribution kernel image.
120693b77530SSamuel Ortiz
120793b77530SSamuel Ortiz### Console over virtio
120893b77530SSamuel Ortiz
120993b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
121093b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
121193b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
121293b77530SSamuel Ortizimplementation.
121393b77530SSamuel Ortiz
121493b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
121593b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
121693b77530SSamuel Ortiz`--serial tty --console off` from the command line.
121793b77530SSamuel Ortiz
121893b77530SSamuel Ortiz### Unit testing
121993b77530SSamuel Ortiz
122093b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
122193b77530SSamuel Ortiz
122293b77530SSamuel Ortiz### Integration tests parallelization
122393b77530SSamuel Ortiz
122493b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
122593b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1226