xref: /cloud-hypervisor/release-notes.md (revision 37a2c13a90be4f66a640c140d2ee3ff7076cd465)
140c63dcfSRob Bradford- [v0.14.0](#v0140)
240c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
340c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
440c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
540c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
640c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
740c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
840c63dcfSRob Bradford    - [Deprecations](#deprecations)
940c63dcfSRob Bradford    - [Contributors](#contributors)
10f58b6f84SRob Bradford- [v0.13.0](#v0130)
11f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
1240c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
13f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
14f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
15f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
16f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
1740c63dcfSRob Bradford    - [Contributors](#contributors-1)
18d42b5084SRob Bradford- [v0.12.0](#v0120)
19d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
20d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
21d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
22d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
2340c63dcfSRob Bradford    - [Contributors](#contributors-2)
247dcd3affSRob Bradford- [v0.11.0](#v0110)
257dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
267dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
277dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
287dcd3affSRob Bradford    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
297dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
307dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
317dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
327dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
337dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
347dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
357dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes)
3640c63dcfSRob Bradford    - [Contributors](#contributors-3)
37198bd551SRob Bradford- [v0.10.0](#v0100)
38198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
39198bd551SRob Bradford    - [Memory Zones](#memory-zones)
40198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
41198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
427dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-1)
4340c63dcfSRob Bradford    - [Contributors](#contributors-4)
44d714cf81SRob Bradford- [v0.9.0](#v090)
45d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
46d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
47d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
48d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
49d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
50d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
51d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
52d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
53d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
54d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
55198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
567dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-2)
5740c63dcfSRob Bradford    - [Contributors](#contributors-5)
58d714cf81SRob Bradford- [v0.8.0](#v080)
59d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
60d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
61d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
62d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
63d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
647dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-3)
65d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
6640c63dcfSRob Bradford    - [Contributors](#contributors-6)
6796be8229SRob Bradford- [v0.7.0](#v070)
6896be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
6996be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
7096be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
7196be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
7296be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
7396be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
7496be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
7552b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
7640c63dcfSRob Bradford    - [Contributors](#contributors-7)
7703cb26ccSSamuel Ortiz- [v0.6.0](#v060)
7803cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
7903cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
8003cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
8103cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
8203cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
8340c63dcfSRob Bradford    - [Contributors](#contributors-8)
8494f2fc33SRob Bradford- [v0.5.1](#v051)
852f395e60SSamuel Ortiz- [v0.5.0](#v050)
8694f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
8794f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
8894f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
8994f2fc33SRob Bradford    - [Development Tools](#development-tools)
9094f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
9140c63dcfSRob Bradford    - [Contributors](#contributors-9)
92cec884e8SSamuel Ortiz- [v0.4.0](#v040)
9394f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
9494f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
9594f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
9694f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
9794f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
9894f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
9994f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
10040c63dcfSRob Bradford    - [Contributors](#contributors-10)
1018e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
10294f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
10394f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
10494f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
10594f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
10694f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
10794f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
10894f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
10994f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1107688e6e2SSamuel Ortiz- [v0.2.0](#v020)
11194f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
11294f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
11394f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
11494f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
11594f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
11694f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1177688e6e2SSamuel Ortiz- [v0.1.0](#v010)
11894f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
11994f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
12094f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
12194f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
12294f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
12394f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
12494f2fc33SRob Bradford    - [Unit testing](#unit-testing)
12594f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
12694f2fc33SRob Bradford
12740c63dcfSRob Bradford# v0.14.0
12840c63dcfSRob Bradford
12940c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
13040c63dcfSRob Bradford
13140c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
13240c63dcfSRob Bradford
13340c63dcfSRob Bradford### Structured event monitoring
13440c63dcfSRob Bradford
13540c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
13640c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
13740c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
13840c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
13940c63dcfSRob BradfordHypervisor API surface.
14040c63dcfSRob Bradford
14140c63dcfSRob Bradford### MSHV improvements
14240c63dcfSRob Bradford
14340c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
14440c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
14540c63dcfSRob Bradfordthe MSHV support.
14640c63dcfSRob Bradford
14740c63dcfSRob Bradford### Improved aarch64 platform
14840c63dcfSRob Bradford
14940c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
15040c63dcfSRob BradfordVM including an enhanced serial UART.
15140c63dcfSRob Bradford
15240c63dcfSRob Bradford### Updated hotplug documentation
15340c63dcfSRob Bradford
15440c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
15540c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
15640c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
15740c63dcfSRob Bradford
15840c63dcfSRob Bradford### PTY control for serial and `virtio-console`
15940c63dcfSRob Bradford
16040c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
16140c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
16240c63dcfSRob BradfordPTY subsystem.
16340c63dcfSRob Bradford
16440c63dcfSRob Bradford### Block device rate limiting
16540c63dcfSRob Bradford
16640c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
16740c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
16840c63dcfSRob Bradford[IO throttling doumentation.](docs/io_throttling.md)
16940c63dcfSRob Bradford
17040c63dcfSRob Bradford
17140c63dcfSRob Bradford### Deprecations
17240c63dcfSRob Bradford
17340c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
17440c63dcfSRob Bradford
17540c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
17640c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
17740c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
17840c63dcfSRob Bradford
17940c63dcfSRob Bradford
18040c63dcfSRob Bradford### Contributors
18140c63dcfSRob Bradford
18240c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
18340c63dcfSRob Bradfordsome new faces.
18440c63dcfSRob Bradford
18540c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
18640c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
18740c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
18840c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
18940c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
19040c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
19140c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
19240c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
19340c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
19440c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
19540c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
19640c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
19740c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
19840c63dcfSRob Bradford
199f58b6f84SRob Bradford# v0.13.0
200f58b6f84SRob Bradford
201f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
202f58b6f84SRob Bradford
203f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
204f58b6f84SRob Bradford
205f58b6f84SRob Bradford### Wider VFIO device support
206f58b6f84SRob Bradford
207f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
208f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
209f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
210f58b6f84SRob Bradforddrivers.
211f58b6f84SRob Bradford
21240c63dcfSRob Bradford### Improved huge page support
213f58b6f84SRob Bradford
214f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
215f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
216f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
217f58b6f84SRob Bradforddesired size in their pool.
218f58b6f84SRob Bradford
219f58b6f84SRob Bradford### MACvTAP support
220f58b6f84SRob Bradford
221f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
222f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
223f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
224f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
225f58b6f84SRob Bradford
226f58b6f84SRob Bradford### VHD disk image support
227f58b6f84SRob Bradford
228f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
229f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
230f58b6f84SRob Bradford
231f58b6f84SRob Bradford### Improved Virtio device threading
232f58b6f84SRob Bradford
233f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
234f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
235f58b6f84SRob Bradfordpredictable name derived from the device id.
236f58b6f84SRob Bradford
237f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
238f58b6f84SRob Bradford
239f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
240f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
241f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
242f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
243f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
244f58b6f84SRob Bradford
245f58b6f84SRob Bradford### Contributors
246f58b6f84SRob Bradford
247f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
248f58b6f84SRob Bradfordsome new faces.
249f58b6f84SRob Bradford
250f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
251f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
252f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
253f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
254f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
255f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
256f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
257f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
258f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
259f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
260f58b6f84SRob Bradford
261d42b5084SRob Bradford# v0.12.0
262d42b5084SRob Bradford
263d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
264d42b5084SRob Bradford
265d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
266d42b5084SRob Bradford
267d42b5084SRob Bradford### ARM64 enhancements
268d42b5084SRob Bradford
269d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
270d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
271d42b5084SRob Bradford
272d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
273d42b5084SRob Bradford
274d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
275d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
276d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
277d42b5084SRob Bradfordremoved.
278d42b5084SRob Bradford
279d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
280d42b5084SRob Bradford
281d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
282d42b5084SRob Bradfordinstead hosted in [it's own
283d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
284d42b5084SRob Bradford
285d42b5084SRob Bradford### Enhanced "info" API
286d42b5084SRob Bradford
287d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
288d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
289d42b5084SRob Bradford
290d42b5084SRob Bradford### Contributors
291d42b5084SRob Bradford
292d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
293d42b5084SRob Bradford
294d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
295d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
296d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
297d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
298d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
299d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
300d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
301d42b5084SRob Bradford
3027dcd3affSRob Bradford# v0.11.0
3037dcd3affSRob Bradford
3047dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
3057dcd3affSRob Bradford
3067dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
3077dcd3affSRob Bradford
3087dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
3097dcd3affSRob Bradford
3107dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
3117dcd3affSRob Bradfordbe used for a significantly higher performance block device.
3127dcd3affSRob Bradford
3137dcd3affSRob Bradford### Windows Guest Support
3147dcd3affSRob Bradford
3157dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
3167dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
3177dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
3187dcd3affSRob Bradforddocumentation](docs/windows.md).
3197dcd3affSRob Bradford
3207dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
3217dcd3affSRob Bradford
3227dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
3237dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
3247dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
3257dcd3affSRob Bradford
3267dcd3affSRob Bradford### `virtio-mmmio` Removal
3277dcd3affSRob Bradford
3287dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
3297dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
3307dcd3affSRob Bradfordreduce the testing burden of the project.
3317dcd3affSRob Bradford
3327dcd3affSRob Bradford### Snapshot/Restore support for ARM64
3337dcd3affSRob Bradford
3347dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
3357dcd3affSRob Bradfordimplemented.
3367dcd3affSRob Bradford
3377dcd3affSRob Bradford### Improved Linux Boot Time
3387dcd3affSRob Bradford
3397dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
3407dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
3417dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
3427dcd3affSRob Bradford
3437dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
3447dcd3affSRob Bradford
3457dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
3467dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
3477dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
3487dcd3affSRob Bradfordresources.
3497dcd3affSRob Bradford
3507dcd3affSRob Bradford### Default Log Level Changed
3517dcd3affSRob Bradford
3527dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
3537dcd3affSRob Bradfordeasier to see potential issues. New [logging
3547dcd3affSRob Bradforddocumentation](docs/logging) was also added.
3557dcd3affSRob Bradford
3567dcd3affSRob Bradford### New `--balloon` Parameter Added
3577dcd3affSRob Bradford
3587dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
3597dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
3607dcd3affSRob Bradfordcontrols without overloading `--memory`.
3617dcd3affSRob Bradford
3627dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
3637dcd3affSRob Bradford
3647dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
3657dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
3667dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
3677dcd3affSRob Bradford
3687dcd3affSRob Bradford### Notable Bug Fixes
3697dcd3affSRob Bradford
3707dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
3717dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
3727dcd3affSRob Bradford* CPU identification string is now exposed to the guest
3737dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
3747dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
3757dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
3767dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
3777dcd3affSRob Bradford  can be used (#1803)
3787dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
3797dcd3affSRob Bradford  correctly
3807dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
3817dcd3affSRob Bradford  correctly
3827dcd3affSRob Bradford
3837dcd3affSRob Bradford### Contributors
3847dcd3affSRob Bradford
3857dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
3867dcd3affSRob Bradford
3877dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
3887dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
3897dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
3907dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
3917dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
3927dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
3937dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
3947dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
3957dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
3967dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
3977dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
3987dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
3997dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
4007dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
4017dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
4027dcd3affSRob Bradford
4037dcd3affSRob Bradford
404198bd551SRob Bradford# v0.10.0
405198bd551SRob Bradford
406198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
407198bd551SRob Bradford
408198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
409198bd551SRob Bradford
410198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
411198bd551SRob Bradford
412198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
413198bd551SRob Bradford
414198bd551SRob Bradford### Memory Zones
415198bd551SRob Bradford
416198bd551SRob 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).
417198bd551SRob Bradford
418198bd551SRob Bradford### `Seccomp` Sandbox Improvements
419198bd551SRob Bradford
420198bd551SRob 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`.
421198bd551SRob Bradford
422198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
423198bd551SRob Bradford
424198bd551SRob 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.
425198bd551SRob Bradford
426198bd551SRob Bradford### Notable Bug Fixes
427198bd551SRob Bradford
428198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
429198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
430198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
431198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
432198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
433198bd551SRob Bradford
434198bd551SRob Bradford### Contributors
435198bd551SRob Bradford
436198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
437198bd551SRob Bradford
438198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
439198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
440198bd551SRob Bradford* Anatol Belski <ab@php.net>
441198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
442198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
443198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
444198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
445198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
446198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
447198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
448198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
449198bd551SRob Bradford
450d714cf81SRob Bradford# v0.9.0
451d714cf81SRob Bradford
452d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
453d714cf81SRob Bradford
454d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
455d714cf81SRob Bradford
456d714cf81SRob Bradford### `io_uring` Based Block Device Support
457d714cf81SRob Bradford
458d714cf81SRob 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.
459d714cf81SRob Bradford
460d714cf81SRob Bradford### Block and Network Device Statistics
461d714cf81SRob Bradford
462d714cf81SRob 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.
463d714cf81SRob Bradford
464d714cf81SRob Bradford### HTTP API Responses
465d714cf81SRob Bradford
466d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
467d714cf81SRob Bradford
468d714cf81SRob Bradford### CPU Topology
469d714cf81SRob Bradford
470d714cf81SRob 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.
471d714cf81SRob Bradford
472d714cf81SRob Bradford### Release Build Optimization
473d714cf81SRob Bradford
474d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
475d714cf81SRob Bradford
476d714cf81SRob Bradford### Hypervisor Abstraction
477d714cf81SRob Bradford
478d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
479d714cf81SRob Bradford
480d714cf81SRob Bradford### Snapshot/Restore Improvements
481d714cf81SRob Bradford
482d714cf81SRob 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.
483d714cf81SRob Bradford
484d714cf81SRob Bradford### Virtio Memory Ballooning Support
485d714cf81SRob Bradford
486d714cf81SRob 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.
487d714cf81SRob Bradford
488d714cf81SRob Bradford### Enhancements to ARM64 Support
489d714cf81SRob Bradford
490d714cf81SRob 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.
491d714cf81SRob Bradford
492d714cf81SRob Bradford### Intel SGX Support
493d714cf81SRob Bradford
494d714cf81SRob 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).
495d714cf81SRob Bradford
496d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
497d714cf81SRob Bradford
498d714cf81SRob 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.
499d714cf81SRob Bradford
500d714cf81SRob Bradford### Notable Bug Fixes
501d714cf81SRob Bradford
502d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
503d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
504d714cf81SRob 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).
505d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
506d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
507d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
508d714cf81SRob Bradford
509d714cf81SRob Bradford### Contributors
510d714cf81SRob Bradford
511d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
512d714cf81SRob Bradford
513d714cf81SRob Bradford* Anatol Belski <ab@php.net>
514d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
515d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
516d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
517d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
518d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
519d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
520d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
521d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
522d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
523d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
524d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
525d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
526d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
527d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
528d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
529d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
530d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
531d714cf81SRob Bradford
532d714cf81SRob Bradford
53352b83969SRob Bradford# v0.8.0
53452b83969SRob Bradford
53552b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
53652b83969SRob Bradford
53752b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
53852b83969SRob Bradford
53952b83969SRob Bradford### Experimental Snapshot and Restore Support
54052b83969SRob Bradford
54152b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
54252b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
54352b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
54452b83969SRob Bradfordoriginal VM at the point it was paused.
54552b83969SRob Bradford
54652b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
54752b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
54852b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
54952b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
55052b83969SRob Bradford(#1176).
55152b83969SRob Bradford
55252b83969SRob Bradford### Experimental ARM64 Support
55352b83969SRob Bradford
55452b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
55552b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
55652b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
55752b83969SRob Bradford
55852b83969SRob Bradford### Support for Using 5-level Paging in Guests
55952b83969SRob Bradford
56052b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
56152b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
56252b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
56352b83969SRob Bradfordwork due to current limitations in the PVH boot process.
56452b83969SRob Bradford
56552b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
56652b83969SRob Bradford
56752b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
56852b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
56952b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
57052b83969SRob Bradfordthe guest must service.
57152b83969SRob Bradford
57252b83969SRob Bradford### `vhost_user_fs` Improvements
57352b83969SRob Bradford
57452b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
57552b83969SRob Bradford
57652b83969SRob Bradford
57752b83969SRob Bradford### Notable Bug Fixes
57852b83969SRob Bradford
57952b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
58052b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
58152b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
58252b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
58352b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
58452b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
58552b83969SRob Bradford  #1216).
58652b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
58752b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
58852b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
58952b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
59052b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
59152b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
59252b83969SRob Bradford  (#751).
59352b83969SRob Bradford
59452b83969SRob Bradford### Command Line and API Changes
59552b83969SRob Bradford
59652b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
59752b83969SRob Bradford
59852b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
59952b83969SRob Bradford  rather than `sock` in some cases.
60052b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
60152b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
60252b83969SRob Bradford  offered for negotiation.
60352b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
60452b83969SRob Bradford  address for the `tap` device on the host.
60552b83969SRob Bradford
60652b83969SRob Bradford### Contributors
60752b83969SRob Bradford
60852b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
60952b83969SRob Bradford
61052b83969SRob Bradford* Anatol Belski <ab@php.net>
61152b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
61252b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
61352b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
61452b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
61552b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
61652b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
61752b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
61852b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
61952b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
62052b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
62152b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
62252b83969SRob Bradford
62396be8229SRob Bradford# v0.7.0
62496be8229SRob Bradford
62596be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
62696be8229SRob Bradford
62796be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
62896be8229SRob Bradford
62996be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
63096be8229SRob Bradford
63196be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
63296be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
63396be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
6345c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
63596be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
63696be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
63796be8229SRob Bradforddevices to ease their removal.
63896be8229SRob Bradford
63996be8229SRob Bradford### Alternative `libc` Support
64096be8229SRob Bradford
64196be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
64296be8229SRob Bradfordcontains a static binary compiled using that toolchain.
64396be8229SRob Bradford
64496be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
64596be8229SRob Bradford
64696be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
64796be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
64896be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
64996be8229SRob Bradfordis passed when the devices are created.
65096be8229SRob Bradford
65196be8229SRob Bradford### Initial RamFS Support
65296be8229SRob Bradford
65396be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
65496be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
65596be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
65696be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
65796be8229SRob Bradfordminimal image.
65896be8229SRob Bradford
65996be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
66096be8229SRob Bradford
66196be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
66296be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
66396be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
66496be8229SRob Bradfordrequires kernel patches to be able to support it.
66596be8229SRob Bradford
66696be8229SRob Bradford### `Seccomp` Sandboxing
66796be8229SRob Bradford
66896be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
66996be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
67096be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
67196be8229SRob Bradford
67296be8229SRob Bradford### Updated Distribution Support
67396be8229SRob Bradford
67496be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
67596be8229SRob Bradforddistributions and is part of our regular testing programme.
67696be8229SRob Bradford
67796be8229SRob Bradford### Command Line and API Changes
67896be8229SRob Bradford
67996be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
68096be8229SRob Bradford
68196be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
68296be8229SRob Bradford  If no name is specified the VMM chooses one.
68396be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
68496be8229SRob Bradford  memory instead of providing a path.
68596be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
68696be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
68796be8229SRob Bradford  option and replaced it with a single optional field.
68896be8229SRob Bradford* There is enhanced validation of the command line and API provided
68996be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
69096be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
69196be8229SRob Bradford  device.
69296be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
69396be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
69496be8229SRob Bradford  has appropriate new HTTP endpoints too.
69596be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
69696be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
69796be8229SRob Bradford  to provide the equivalent of a read-only file.
69896be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
69996be8229SRob Bradford  with those used by `--disk`.
70096be8229SRob Bradford
70196be8229SRob Bradford### Contributors
70296be8229SRob Bradford
70396be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
70496be8229SRob Bradford
70596be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
70696be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
70796be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
70896be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
70996be8229SRob Bradford* Dean Sheather <dean@coder.com>
71096be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
71196be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
71296be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
71396be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
71496be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
71596be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
71696be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
71796be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
71896be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
71996be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
72096be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
72196be8229SRob Bradford
72203cb26ccSSamuel Ortiz# v0.6.0
72303cb26ccSSamuel Ortiz
72403cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
72503cb26ccSSamuel Ortiz
72603cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
72703cb26ccSSamuel Ortiz
72803cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
72903cb26ccSSamuel Ortiz
73003cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
73103cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
73203cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
73303cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
73403cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
73503cb26ccSSamuel Ortiz
73603cb26ccSSamuel Ortiz### Shared Filesystem Improvements
73703cb26ccSSamuel Ortiz
73803cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
73903cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
74003cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
74103cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
74203cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
74303cb26ccSSamuel Ortiz
74403cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
74503cb26ccSSamuel Ortiz
74603cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
74703cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
74803cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
74903cb26ccSSamuel Ortizinto their own, separate processes.
7505c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
75103cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
75203cb26ccSSamuel Ortiz
75303cb26ccSSamuel Ortiz### Command Line Interface
75403cb26ccSSamuel Ortiz
75503cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
756*37a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
757*37a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
758*37a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
759*37a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
760*37a2c13aSAlyssa Rossis created with each build and available e.g. at
76103cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
76203cb26ccSSamuel Ortiz
76303cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
76403cb26ccSSamuel Ortizcommands.
76503cb26ccSSamuel Ortiz
76603cb26ccSSamuel Ortiz### PVH Boot
76703cb26ccSSamuel Ortiz
76803cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
76903cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
77003cb26ccSSamuel Ortiz
77103cb26ccSSamuel Ortiz### Contributors
77203cb26ccSSamuel Ortiz
77303cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
77403cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
77503cb26ccSSamuel Ortiz
77603cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
77703cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
77803cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
77903cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
78003cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
78103cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
78203cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
78303cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
78403cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
78503cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
78603cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
78703cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
78803cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
78903cb26ccSSamuel Ortiz
79094f2fc33SRob Bradford# v0.5.1
79194f2fc33SRob Bradford
79294f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
79394f2fc33SRob Bradford
79494f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
79594f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
79694f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
79794f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
79894f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
7998e8a7b6dSSamuel Ortiz
8002f395e60SSamuel Ortiz# v0.5.0
8012f395e60SSamuel Ortiz
8022f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
8032f395e60SSamuel Ortiz
8042f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
8052f395e60SSamuel Ortiz
8062f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
8072f395e60SSamuel Ortiz
8082f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
8092f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
8102f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
8112f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
8122f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
8132f395e60SSamuel Ortiz
8142f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
8152f395e60SSamuel Ortiz
8162f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
8172f395e60SSamuel Ortiz
8182f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
8192f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
8202f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
8212f395e60SSamuel Ortiz
8222f395e60SSamuel Ortiz### New Interrupt Management Framework
8232f395e60SSamuel Ortiz
8242f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
8252f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
8262f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
8272f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
8282f395e60SSamuel Ortizvirtio ones.
8292f395e60SSamuel Ortiz
8302f395e60SSamuel Ortiz### Development Tools
8312f395e60SSamuel Ortiz
8322f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
8332f395e60SSamuel Ortizbuild, development and testing tools.
8342f395e60SSamuel OrtizSomehow similar to the excellent
8352f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
836*37a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
8372f395e60SSamuel Ortiz
8382f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
8392f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
8402f395e60SSamuel Ortiz
8412f395e60SSamuel Ortiz### Kata Containers Integration
8422f395e60SSamuel Ortiz
8432f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
8442f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
8452f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
8462f395e60SSamuel Ortizintegrated into the project's CI.
8472f395e60SSamuel Ortiz
8482f395e60SSamuel Ortiz### Contributors
8492f395e60SSamuel Ortiz
8502f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
8512f395e60SSamuel Ortiz
8522f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
8532f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
8542f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
8552f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
8562f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
8572f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
8582f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
8592f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
8602f395e60SSamuel Ortiz
861cec884e8SSamuel Ortiz# v0.4.0
862cec884e8SSamuel Ortiz
863cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
864cec884e8SSamuel Ortiz
865cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
866cec884e8SSamuel Ortiz
867cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
868cec884e8SSamuel Ortiz
869cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
870cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
871cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
872cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
873*37a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
874cec884e8SSamuel Ortiz
875cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
876cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
877cec884e8SSamuel Ortiz
878cec884e8SSamuel Ortiz### Programmatic firmware tables generation
879cec884e8SSamuel Ortiz
880cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
881cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
882cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
883cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
884cec884e8SSamuel Ortiztables based on the VMM device model and topology.
885cec884e8SSamuel Ortiz
886cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
887cec884e8SSamuel Ortiz
888cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
889cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
890cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
891cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
892cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
893cec884e8SSamuel Ortiz
894cec884e8SSamuel Ortiz### Guest pause and resume
895cec884e8SSamuel Ortiz
8965c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
897cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
898cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
899cec884e8SSamuel Ortizand resume capabilities.
900cec884e8SSamuel Ortiz
901cec884e8SSamuel Ortiz### Userspace IOAPIC by default
902cec884e8SSamuel Ortiz
903cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
904cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
905cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
906cec884e8SSamuel Ortizdefault.
907cec884e8SSamuel Ortiz
908cec884e8SSamuel Ortiz### PCI BAR reprogramming
909cec884e8SSamuel Ortiz
910cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
911cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
912cec884e8SSamuel Ortizreprogramming.
913cec884e8SSamuel Ortiz
914cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
915cec884e8SSamuel Ortiz
916cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
917cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
918cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
919cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
920cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
921cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
922cec884e8SSamuel Ortiztemporarily fork.
923cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
924cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
925cec884e8SSamuel Ortiz
926cec884e8SSamuel Ortiz### Contributors
927cec884e8SSamuel Ortiz
928cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
929cec884e8SSamuel Ortiz
930cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
931cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
932cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
933cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
934cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
935cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
936cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
937cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
938cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
939cec884e8SSamuel Ortiz
9408e8a7b6dSSamuel Ortiz# v0.3.0
9418e8a7b6dSSamuel Ortiz
9428ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
9438e8a7b6dSSamuel Ortiz
9448e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
9458e8a7b6dSSamuel Ortiz
9468e8a7b6dSSamuel Ortiz### Block device offloading
9478e8a7b6dSSamuel Ortiz
9488e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
9498e8a7b6dSSamuel Ortizand we added support for
9508e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
9518e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
9528e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
9538e8a7b6dSSamuel Ortizbackend.
9548e8a7b6dSSamuel Ortiz
9558e8a7b6dSSamuel Ortiz### Network device backend
9568e8a7b6dSSamuel Ortiz
9578e8a7b6dSSamuel OrtizThe previous release provided support for
9588e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
9598e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
9608e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
9618e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
9628e8a7b6dSSamuel Ortiz
9638e8a7b6dSSamuel Ortiz### Virtual sockets
9648e8a7b6dSSamuel Ortiz
9658e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
9668e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
9678e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
9688e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
9698e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
9708e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
9718e8a7b6dSSamuel Ortiz
9728e8a7b6dSSamuel Ortiz### HTTP based API
9738e8a7b6dSSamuel Ortiz
9748e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
9758e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
9768e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
9778e8a7b6dSSamuel Ortiznext release cycle.
9788e8a7b6dSSamuel Ortiz
9798e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
9808e8a7b6dSSamuel Ortiz
9818e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
9828e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
9838e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
9848e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
9858e8a7b6dSSamuel Ortiz
9868e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
9878e8a7b6dSSamuel Ortiz
9888e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
989*37a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
990*37a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
9918e8a7b6dSSamuel Ortiz
9928e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
9938e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
9948e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
9958e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
9968e8a7b6dSSamuel Ortizsetting.
9978e8a7b6dSSamuel Ortiz
9988e8a7b6dSSamuel Ortiz### Ubuntu 19.10
9998e8a7b6dSSamuel Ortiz
10008ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
10018e8a7b6dSSamuel Ortizwe can now support the latest
10028e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
10038e8a7b6dSSamuel Ortiz
10048e8a7b6dSSamuel Ortiz### Large memory guests
10058e8a7b6dSSamuel Ortiz
10068e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
10078e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
10087688e6e2SSamuel Ortiz
1009d784ac29SSamuel Ortiz# v0.2.0
1010d784ac29SSamuel Ortiz
10118ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1012d784ac29SSamuel Ortiz
1013d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1014d784ac29SSamuel Ortiz
1015d784ac29SSamuel Ortiz### Network device offloading
1016d784ac29SSamuel Ortiz
1017d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1018d784ac29SSamuel Ortizprocesses, we added support for
1019d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1020d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1021d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1022d784ac29SSamuel Ortiz
1023d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1024d784ac29SSamuel Ortiz
1025d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1026d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1027d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1028d784ac29SSamuel Ortizcleanly reboot and shutdown.
1029d784ac29SSamuel Ortiz
1030d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1031d784ac29SSamuel Ortizenabled by default.
1032d784ac29SSamuel Ortiz
1033d784ac29SSamuel Ortiz### Debug I/O port
1034d784ac29SSamuel Ortiz
1035d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1036d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1037d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1038d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
1039*37a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
1040*37a2c13aSAlyssa Rossdetails.
1041d784ac29SSamuel Ortiz
1042d784ac29SSamuel Ortiz### Improved direct device assignment
1043d784ac29SSamuel Ortiz
1044d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1045d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1046d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1047d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1048d784ac29SSamuel Ortizdirectly assigned devices.
1049d784ac29SSamuel Ortiz
1050d784ac29SSamuel Ortiz### Improved shared filesystem
1051d784ac29SSamuel Ortiz
1052d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1053d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1054d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1055d784ac29SSamuel Ortizmemory footprint.
1056d784ac29SSamuel Ortiz
1057d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1058d784ac29SSamuel Ortiz
10598ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1060d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1061d784ac29SSamuel Ortizour CI pipeline.
1062d784ac29SSamuel Ortiz
106393b77530SSamuel Ortiz# v0.1.0
106493b77530SSamuel Ortiz
10658ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
106693b77530SSamuel Ortiz
106793b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
106893b77530SSamuel Ortiz
106993b77530SSamuel Ortiz### Shared filesystem
107093b77530SSamuel Ortiz
107193b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
107293b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
107393b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
107493b77530SSamuel Ortiz
1075*37a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
1076*37a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
107793b77530SSamuel Ortiz
107893b77530SSamuel Ortiz### Initial direct device assignment support
107993b77530SSamuel Ortiz
108093b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
108193b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
108293b77530SSamuel Ortizphysical devices into its guest.
108393b77530SSamuel Ortiz
1084*37a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
1085*37a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
108693b77530SSamuel Ortiz
108793b77530SSamuel Ortiz### Userspace IOAPIC
108893b77530SSamuel Ortiz
108993b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
109093b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
109193b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
109293b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
109393b77530SSamuel Ortiz
109493b77530SSamuel Ortiz### Virtual persistent memory
109593b77530SSamuel Ortiz
109693b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
109793b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
109893b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
109993b77530SSamuel Ortiz
110093b77530SSamuel Ortiz### Linux kernel bzImage
110193b77530SSamuel Ortiz
110293b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
110393b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
110493b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
110593b77530SSamuel Ortizdistribution kernel image.
110693b77530SSamuel Ortiz
110793b77530SSamuel Ortiz### Console over virtio
110893b77530SSamuel Ortiz
110993b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
111093b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
111193b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
111293b77530SSamuel Ortizimplementation.
111393b77530SSamuel Ortiz
111493b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
111593b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
111693b77530SSamuel Ortiz`--serial tty --console off` from the command line.
111793b77530SSamuel Ortiz
111893b77530SSamuel Ortiz### Unit testing
111993b77530SSamuel Ortiz
112093b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
112193b77530SSamuel Ortiz
112293b77530SSamuel Ortiz### Integration tests parallelization
112393b77530SSamuel Ortiz
112493b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
112593b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1126