xref: /cloud-hypervisor/release-notes.md (revision 95ca79974a32f3dab5987032361d0ecd2aa65512)
1*95ca7997SRob Bradford- [v21.0](#v210)
2*95ca7997SRob Bradford    - [Efficient Local Live Migration (for Live Upgrade)](#efficient-local-live-migration-for-live-upgrade)
3*95ca7997SRob Bradford    - [Recommended Kernel is Now 5.15](#recommended-kernel-is-now-515)
4*95ca7997SRob Bradford    - [Notable Bug fixes](#notable-bug-fixes)
5*95ca7997SRob Bradford    - [Contributors](#contributors)
6*95ca7997SRob Bradford- [v20.2](#v202)
7*95ca7997SRob Bradford- [v20.1](#v201)
87fc0776aSSebastien Boeuf- [v20.0](#v200)
97fc0776aSSebastien Boeuf    - [Multiple PCI segments support](#multiple-pci-segments-support)
107fc0776aSSebastien Boeuf    - [CPU pinning](#cpu-pinning)
117fc0776aSSebastien Boeuf    - [Improved VFIO support](#improved-vfio-support)
127fc0776aSSebastien Boeuf    - [Safer code](#safer-code)
137fc0776aSSebastien Boeuf    - [Extended documentation](#extended-documentation)
14*95ca7997SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-1)
15*95ca7997SRob Bradford    - [Contributors](#contributors-1)
16d00eb4aaSRob Bradford- [v19.0](#v190)
17d00eb4aaSRob Bradford    - [Improved PTY handling for serial and `virtio-console`](#improved-pty-handling-for-serial-and-virtio-console)
18d00eb4aaSRob Bradford    - [PCI boot time optimisations](#pci-boot-time-optimisations)
19d00eb4aaSRob Bradford    - [Improved TDX support](#improved-tdx-support)
20d00eb4aaSRob Bradford    - [Live migration enhancements](#live-migration-enhancements)
21d00eb4aaSRob Bradford    - [`virtio-mem` support with `vfio-user`](#virtio-mem-support-with-vfio-user)
22d00eb4aaSRob Bradford    - [AArch64 for `virtio-iommu`](#aarch64-for-virtio-iommu)
23*95ca7997SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-2)
24*95ca7997SRob Bradford    - [Contributors](#contributors-2)
252c4f8d22SRob Bradford- [v18.0](#v180)
262c4f8d22SRob Bradford    - [Experimental User Device (`vfio-user`) support](#experimental-user-device-vfio-user-support)
272c4f8d22SRob Bradford    - [Migration support for `vhost-user` devices](#migration-support-for-vhost-user-devices)
282c4f8d22SRob Bradford    - [VHDX disk image support](#vhdx-disk-image-support)
292c4f8d22SRob Bradford    - [Device pass through on MSHV hypervisor](#device-pass-through-on-mshv-hypervisor)
302c4f8d22SRob Bradford    - [AArch64 for support `virtio-mem`](#aarch64-for-support-virtio-mem)
312c4f8d22SRob Bradford    - [Live migration on MSHV hypervisor](#live-migration-on-mshv-hypervisor)
322c4f8d22SRob Bradford    - [AArch64 CPU topology support](#aarch64-cpu-topology-support)
332c4f8d22SRob Bradford    - [Power button support on AArch64](#power-button-support-on-aarch64)
34*95ca7997SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-3)
35*95ca7997SRob Bradford    - [Contributors](#contributors-3)
36e6db5999SRob Bradford- [v17.0](#v170)
37e6db5999SRob Bradford    - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi)
38e6db5999SRob Bradford    - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend)
39e6db5999SRob Bradford    - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices)
40e6db5999SRob Bradford    - [Improved SGX support](#improved-sgx-support)
41e6db5999SRob Bradford    - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices)
42*95ca7997SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-4)
43*95ca7997SRob Bradford    - [Contributors](#contributors-4)
445ed8e01fSRob Bradford- [v16.0](#v160)
455ed8e01fSRob Bradford    - [Improved live migration support](#improved-live-migration-support)
465ed8e01fSRob Bradford    - [Improved `vhost-user` support](#improved-vhost-user-support)
475ed8e01fSRob Bradford    - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support)
48*95ca7997SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-5)
495ed8e01fSRob Bradford    - [Removed functionality](#removed-functionality)
50*95ca7997SRob Bradford    - [Contributors](#contributors-5)
5130a01277SRob Bradford- [v15.0](#v150)
5230a01277SRob Bradford    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
5330a01277SRob Bradford    - [Network device rate limiting](#network-device-rate-limiting)
5430a01277SRob Bradford    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
5530a01277SRob Bradford    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
5630a01277SRob Bradford    - [Bug fixes](#bug-fixes)
5730a01277SRob Bradford    - [Deprecations](#deprecations)
58*95ca7997SRob Bradford    - [Contributors](#contributors-6)
5930a01277SRob Bradford- [v0.14.1](#v0141)
6040c63dcfSRob Bradford- [v0.14.0](#v0140)
6140c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
6240c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
6340c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
6440c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
6540c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
6640c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
6730a01277SRob Bradford    - [Deprecations](#deprecations-1)
68*95ca7997SRob Bradford    - [Contributors](#contributors-7)
69f58b6f84SRob Bradford- [v0.13.0](#v0130)
70f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
7140c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
72f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
73f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
74f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
75f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
76*95ca7997SRob Bradford    - [Contributors](#contributors-8)
77d42b5084SRob Bradford- [v0.12.0](#v0120)
78d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
79d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
80d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
81d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
82*95ca7997SRob Bradford    - [Contributors](#contributors-9)
837dcd3affSRob Bradford- [v0.11.0](#v0110)
847dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
857dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
867dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
87d00eb4aaSRob Bradford    - [`virtio-mmio` Removal](#virtio-mmio-removal)
887dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
897dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
907dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
917dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
927dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
937dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
94*95ca7997SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-6)
95*95ca7997SRob Bradford    - [Contributors](#contributors-10)
96198bd551SRob Bradford- [v0.10.0](#v0100)
97198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
98198bd551SRob Bradford    - [Memory Zones](#memory-zones)
99198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
100198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
101*95ca7997SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-7)
102*95ca7997SRob Bradford    - [Contributors](#contributors-11)
103d714cf81SRob Bradford- [v0.9.0](#v090)
104d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
105d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
106d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
107d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
108d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
109d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
110d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
111d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
112d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
113d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
114198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
115*95ca7997SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-8)
116*95ca7997SRob Bradford    - [Contributors](#contributors-12)
117d714cf81SRob Bradford- [v0.8.0](#v080)
118d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
119d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
120d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
121d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
122d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
123*95ca7997SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-9)
124d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
125*95ca7997SRob Bradford    - [Contributors](#contributors-13)
12696be8229SRob Bradford- [v0.7.0](#v070)
12796be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
12896be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
12996be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
13096be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
13196be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
13296be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
13396be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
13452b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
135*95ca7997SRob Bradford    - [Contributors](#contributors-14)
13603cb26ccSSamuel Ortiz- [v0.6.0](#v060)
13703cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
13803cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
13903cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
14003cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
14103cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
142*95ca7997SRob Bradford    - [Contributors](#contributors-15)
14394f2fc33SRob Bradford- [v0.5.1](#v051)
1442f395e60SSamuel Ortiz- [v0.5.0](#v050)
14594f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
14694f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
14794f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
14894f2fc33SRob Bradford    - [Development Tools](#development-tools)
14994f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
150*95ca7997SRob Bradford    - [Contributors](#contributors-16)
151cec884e8SSamuel Ortiz- [v0.4.0](#v040)
15294f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
15394f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
15494f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
15594f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
15694f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
15794f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
15894f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
159*95ca7997SRob Bradford    - [Contributors](#contributors-17)
1608e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
16194f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
16294f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
16394f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
16494f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
16594f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
16694f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
16794f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
16894f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1697688e6e2SSamuel Ortiz- [v0.2.0](#v020)
17094f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
17194f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
17294f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
17394f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
17494f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
17594f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1767688e6e2SSamuel Ortiz- [v0.1.0](#v010)
17794f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
17894f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
17994f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
18094f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
18194f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
18294f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
18394f2fc33SRob Bradford    - [Unit testing](#unit-testing)
18494f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
18594f2fc33SRob Bradford
186*95ca7997SRob Bradford# v21.0
187*95ca7997SRob Bradford
188*95ca7997SRob BradfordThis release has been tracked through the [v21.0
189*95ca7997SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/24).
190*95ca7997SRob Bradford
191*95ca7997SRob Bradford### Efficient Local Live Migration (for Live Upgrade)
192*95ca7997SRob Bradford
193*95ca7997SRob BradfordIn order to support fast live upgrade of the VMM an optimised path has been added in which the memory for the VM is not compared from source to destination. This is activated by passing `--local` to the `ch-remote send-migration` command. This means that the live upgrade can complete in the order of 50ms vs 3s. (#3566)
194*95ca7997SRob Bradford
195*95ca7997SRob Bradford### Recommended Kernel is Now 5.15
196*95ca7997SRob Bradford
197*95ca7997SRob BradfordDue to an issue in the `virtio-net` code in 5.14 the recommended Linux kernel is now 5.15. (#3530)
198*95ca7997SRob Bradford
199*95ca7997SRob Bradford### Notable Bug fixes
200*95ca7997SRob Bradford
201*95ca7997SRob Bradford* Multiple fixes were made to the OpenAPI YAML file to match the implementaion (#3555,#3562)
202*95ca7997SRob Bradford* Avoid live migration deadlock when triggered during the kernel boot (#3585)
203*95ca7997SRob Bradford* Support live migration within firmware (#3586)
204*95ca7997SRob Bradford* Validate the `virtio-net` desciptor chain (#3548)
205*95ca7997SRob Bradford* `direct=on` (`O_DIRECT`) can now be used with a guest that makes unaligned accesses (e.g. firmware) (#3587)
206*95ca7997SRob Bradford
207*95ca7997SRob Bradford### Contributors
208*95ca7997SRob Bradford
209*95ca7997SRob BradfordMany thanks to everyone who has contributed to our release:
210*95ca7997SRob Bradford
211*95ca7997SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
212*95ca7997SRob Bradford* Barret Rhoden <brho@google.com>
213*95ca7997SRob Bradford* Bo Chen <chen.bo@intel.com>
214*95ca7997SRob Bradford* Fabiano Fidêncio <fabiano.fidencio@intel.com>
215*95ca7997SRob Bradford* Henry Wang <Henry.Wang@arm.com>
216*95ca7997SRob Bradford* Liang Zhou <zhoul110@chinatelecom.cn>
217*95ca7997SRob Bradford* Michael Zhao <michael.zhao@arm.com>
218*95ca7997SRob Bradford* Muhammad Falak R Wani <falakreyaz@gmail.com>
219*95ca7997SRob Bradford* Muminul Islam <muislam@microsoft.com>
220*95ca7997SRob Bradford* Rob Bradford <robert.bradford@intel.com>
221*95ca7997SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
222*95ca7997SRob Bradford* Wei Liu <liuwe@microsoft.com>
223*95ca7997SRob Bradford* Ziye Yang <ziye.yang@intel.com>
224*95ca7997SRob Bradford
225*95ca7997SRob Bradford# v20.2
226*95ca7997SRob Bradford
227*95ca7997SRob BradfordThis is a bug fix release. The following issues have been addressed:
228*95ca7997SRob Bradford
229*95ca7997SRob Bradford* Don't error out when setting up the SIGWINCH handler (for console resize)
230*95ca7997SRob Bradford  when this fails due to older kernel (#3456)
231*95ca7997SRob Bradford* Seccomp rules were refined to remove syscalls that are now unused
232*95ca7997SRob Bradford* Fix reboot on older host kernels when SIGWINCH handler was not initialised
233*95ca7997SRob Bradford  (#3496)
234*95ca7997SRob Bradford* Fix virtio-vsock blocking issue (#3497)
235*95ca7997SRob Bradford
236*95ca7997SRob Bradford# v20.1
237*95ca7997SRob Bradford
238*95ca7997SRob BradfordThis is a bug fix release. The following issues have been addressed:
239*95ca7997SRob Bradford
240*95ca7997SRob Bradford* Networking performance regression with `virtio-net` (#3450)
241*95ca7997SRob Bradford* Limit file descriptors sent in `vfio-user` support (#3401)
242*95ca7997SRob Bradford* Fully advertise PCI MMIO config regions in ACPI tables (#3432)
243*95ca7997SRob Bradford* Set the TSS and KVM identity maps so they don't overlap with firmware RAM
244*95ca7997SRob Bradford* Correctly update the `DeviceTree` on restore
245*95ca7997SRob Bradford
2467fc0776aSSebastien Boeuf# v20.0
2477fc0776aSSebastien Boeuf
2487fc0776aSSebastien BoeufThis release has been tracked through the [v20.0
2497fc0776aSSebastien Boeufproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/23).
2507fc0776aSSebastien Boeuf
2517fc0776aSSebastien Boeuf### Multiple PCI segments support
2527fc0776aSSebastien Boeuf
2537fc0776aSSebastien BoeufCloud Hypervisor is no longer limited to 31 PCI devices. For both `x86_64` and
2547fc0776aSSebastien Boeuf`aarch64` architectures, it is now possible to create up to 16 PCI segments,
2557fc0776aSSebastien Boeufincreasing the total amount of supported PCI devices to 496.
2567fc0776aSSebastien Boeuf
2577fc0776aSSebastien Boeuf### CPU pinning
2587fc0776aSSebastien Boeuf
2597fc0776aSSebastien BoeufFor each vCPU, the user can define a limited set of host CPUs on which it is
2607fc0776aSSebastien Boeufallowed to run. This can be useful when assigning a 1:1 mapping between host and
2617fc0776aSSebastien Boeufguest resources, or when running a VM on a specific NUMA node.
2627fc0776aSSebastien Boeuf
2637fc0776aSSebastien Boeuf### Improved VFIO support
2647fc0776aSSebastien Boeuf
2657fc0776aSSebastien BoeufBased on VFIO region capabilities, all regions can be memory mapped, limiting
2667fc0776aSSebastien Boeufthe amount of triggered VM exits, and therefore increasing the performance of
2677fc0776aSSebastien Boeufthe passthrough device.
2687fc0776aSSebastien Boeuf
2697fc0776aSSebastien Boeuf### Safer code
2707fc0776aSSebastien Boeuf
2717fc0776aSSebastien BoeufSeveral sections containing unsafe Rust code have been replaced with safe
2727fc0776aSSebastien Boeufalternatives, and multiple comments have been added to clarify why the remaining
2737fc0776aSSebastien Boeufunsafe sections are safe to use.
2747fc0776aSSebastien Boeuf
2757fc0776aSSebastien Boeuf### Extended documentation
2767fc0776aSSebastien Boeuf
2777fc0776aSSebastien BoeufThe documentation related to VFIO has been updated while some new documents have
2787fc0776aSSebastien Boeufbeen introduced to cover the usage of `--cpus` parameter as well as how to run
2797fc0776aSSebastien BoeufCloud Hypervisor on Intel TDX.
2807fc0776aSSebastien Boeuf
2817fc0776aSSebastien Boeuf### Notable bug fixes
2827fc0776aSSebastien Boeuf
2837fc0776aSSebastien Boeuf* Naturally align PCI BARs on relocation (#3244)
2847fc0776aSSebastien Boeuf* Fix panic in SIGWINCH listener thread when no seccomp filter set (#3338)
2857fc0776aSSebastien Boeuf* Use the tty raw mode implementation from libc (#3344)
2867fc0776aSSebastien Boeuf* Fix the emulation of register D for CMOS/RTC device (#3393)
2877fc0776aSSebastien Boeuf
2887fc0776aSSebastien Boeuf### Contributors
2897fc0776aSSebastien Boeuf
2907fc0776aSSebastien BoeufMany thanks to everyone who has contributed to our release:
2917fc0776aSSebastien Boeuf
2927fc0776aSSebastien Boeuf* Alyssa Ross <hi@alyssa.is>
2937fc0776aSSebastien Boeuf* Bo Chen <chen.bo@intel.com>
2947fc0776aSSebastien Boeuf* Fabiano Fidêncio <fabiano.fidencio@intel.com>
2957fc0776aSSebastien Boeuf* Michael Zhao <michael.zhao@arm.com>
2967fc0776aSSebastien Boeuf* Muminul Islam <muislam@microsoft.com>
2977fc0776aSSebastien Boeuf* Rob Bradford <robert.bradford@intel.com>
2987fc0776aSSebastien Boeuf* Sebastien Boeuf <sebastien.boeuf@intel.com>
2997fc0776aSSebastien Boeuf* Wei Liu <liuwe@microsoft.com>
3007fc0776aSSebastien Boeuf* Willen Yang <willenyang@gmail.com>
3017fc0776aSSebastien Boeuf* William Douglas <william.douglas@intel.com>
3027fc0776aSSebastien Boeuf* Ziye Yang <ziye.yang@intel.com>
3037fc0776aSSebastien Boeuf
304d00eb4aaSRob Bradford# v19.0
305d00eb4aaSRob Bradford
306d00eb4aaSRob BradfordThis release has been tracked through the [v19.0
307d00eb4aaSRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/22).
308d00eb4aaSRob Bradford
309d00eb4aaSRob Bradford### Improved PTY handling for serial and `virtio-console`
310d00eb4aaSRob Bradford
311d00eb4aaSRob BradfordThe PTY support for serial has been enhanced with improved buffering when the
312d00eb4aaSRob Bradfordthe PTY is not yet connected to. Using `virtio-console` with PTY now results in
313d00eb4aaSRob Bradfordthe console being resized if the PTY window is also resized.
314d00eb4aaSRob Bradford
315d00eb4aaSRob Bradford### PCI boot time optimisations
316d00eb4aaSRob Bradford
317d00eb4aaSRob BradfordMultiple optimisations have been made to the PCI handling resulting in
318d00eb4aaSRob Bradfordsignificant improvements in the boot time of the guest.
319d00eb4aaSRob Bradford
320d00eb4aaSRob Bradford### Improved TDX support
321d00eb4aaSRob Bradford
322d00eb4aaSRob BradfordWhen using the latest TDVF firmware the ACPI tables created by the VMM are now
323d00eb4aaSRob Bradfordexposed via the firmware to the guest.
324d00eb4aaSRob Bradford
325d00eb4aaSRob Bradford### Live migration enhancements
326d00eb4aaSRob Bradford
327d00eb4aaSRob BradfordLive migration support has been enhanced to support migration with `virtio-mem`
328d00eb4aaSRob Bradfordbased memory hotplug and the `virtio-balloon` device now supports live
329d00eb4aaSRob Bradfordmigration.
330d00eb4aaSRob Bradford
331d00eb4aaSRob Bradford### `virtio-mem` support with `vfio-user`
332d00eb4aaSRob Bradford
333d00eb4aaSRob BradfordThe use of `vfio-user` userspaces devices can now be used in conjunction with
334d00eb4aaSRob Bradford`virtio-mem` based memory hotplug and unplug.
335d00eb4aaSRob Bradford
336d00eb4aaSRob Bradford### AArch64 for `virtio-iommu`
337d00eb4aaSRob Bradford
338d00eb4aaSRob BradfordA paravirtualised IOMMU can now be used on the AArch64 platform.
339d00eb4aaSRob Bradford
340d00eb4aaSRob Bradford### Notable bug fixes
341d00eb4aaSRob Bradford
342d00eb4aaSRob Bradford* ACPI hotplugged memory is correctly restored after a live migration or
343d00eb4aaSRob Bradford  snapshot/restore (#3165)
344d00eb4aaSRob Bradford* Multiple devices from the same IOMMU group can be passed through via VFIO
345d00eb4aaSRob Bradford  (#3078 #3113)
346d00eb4aaSRob Bradford* Live migration with large blocks of memory was buggy due to an in issue in
347d00eb4aaSRob Bradford  the underlying crate (#3157)
348d00eb4aaSRob Bradford
349d00eb4aaSRob Bradford### Contributors
350d00eb4aaSRob Bradford
351d00eb4aaSRob BradfordMany thanks to everyone who has contributed to our release:
352d00eb4aaSRob Bradford
353d00eb4aaSRob Bradford* Alyssa Ross <hi@alyssa.is>
354d00eb4aaSRob Bradford* Bo Chen <chen.bo@intel.com>
355d00eb4aaSRob Bradford* Henry Wang <Henry.Wang@arm.com>
356d00eb4aaSRob Bradford* Hui Zhu <teawater@antfin.com>
357d00eb4aaSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
358d00eb4aaSRob Bradford* Li Yu <liyu.yukiteru@bytedance.com>
359d00eb4aaSRob Bradford* Michael Zhao <michael.zhao@arm.com>
360d00eb4aaSRob Bradford* Muminul Islam <muislam@microsoft.com>
361d00eb4aaSRob Bradford* Rob Bradford <robert.bradford@intel.com>
362d00eb4aaSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
363d00eb4aaSRob Bradford* Wei Liu <liuwe@microsoft.com>
364d00eb4aaSRob Bradford* William Douglas <william.douglas@intel.com>
365d00eb4aaSRob Bradford* Yu Li <liyu.yukiteru@bytedance.com>
366d00eb4aaSRob Bradford
3672c4f8d22SRob Bradford# v18.0
3682c4f8d22SRob Bradford
3692c4f8d22SRob BradfordThis release has been tracked through the [v18.0
3702c4f8d22SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/21).
3712c4f8d22SRob Bradford
3722c4f8d22SRob Bradford### Experimental User Device (`vfio-user`) support
3732c4f8d22SRob Bradford
3742c4f8d22SRob BradfordExperimental support for running PCI devices in userspace via `vfio-user`
3752c4f8d22SRob Bradfordhas been included. This allows the use of the SPDK NVMe `vfio-user` controller
3762c4f8d22SRob Bradfordwith Cloud Hypervisor. This is enabled by `--user-device` on the command line.
3772c4f8d22SRob Bradford
3782c4f8d22SRob Bradford### Migration support for `vhost-user` devices
3792c4f8d22SRob Bradford
3802c4f8d22SRob BradfordDevices exposed into the VM via `vhost-user` can now be migrated using the live
3812c4f8d22SRob Bradfordmigration support. This requires support from the backend however the commonly
3822c4f8d22SRob Bradfordused DPDK `vhost-user` backend does support this.
3832c4f8d22SRob Bradford
3842c4f8d22SRob Bradford### VHDX disk image support
3852c4f8d22SRob Bradford
3862c4f8d22SRob BradfordImages using the VHDX disk image format can now be used with Cloud Hypervisor.
3872c4f8d22SRob Bradford
3882c4f8d22SRob Bradford### Device pass through on MSHV hypervisor
3892c4f8d22SRob Bradford
3902c4f8d22SRob BradfordWhen running on the MSHV hypervisor it is possible to pass through devices from
3912c4f8d22SRob Bradfordthe host through to the guest (e.g with `--device`)
3922c4f8d22SRob Bradford
3932c4f8d22SRob Bradford### AArch64 for support `virtio-mem`
3942c4f8d22SRob Bradford
3952c4f8d22SRob BradfordThe reference Linux kernel we recommend for using with Cloud Hypervisor now supports `virtio-mem` on AArch64.
3962c4f8d22SRob Bradford
3972c4f8d22SRob Bradford### Live migration on MSHV hypervisor
3982c4f8d22SRob Bradford
3992c4f8d22SRob BradfordLive migration is now supported when running on the MSHV hypervisor including
4002c4f8d22SRob Bradfordefficient tracking of dirty pages.
4012c4f8d22SRob Bradford
4022c4f8d22SRob Bradford### AArch64 CPU topology support
4032c4f8d22SRob Bradford
4042c4f8d22SRob BradfordThe CPU topology (as configured through `--cpu topology=`) can now be
4052c4f8d22SRob Bradfordconfigured on AArch64 platforms and is conveyed through either ACPI or device
4062c4f8d22SRob Bradfordtree.
4072c4f8d22SRob Bradford
4082c4f8d22SRob Bradford### Power button support on AArch64
4092c4f8d22SRob Bradford
4102c4f8d22SRob BradfordUse of the ACPI power button (e.g `ch-remote --api-socket=<API socket> power-button`)
4112c4f8d22SRob Bradfordis now supported when running on AArch64.
4122c4f8d22SRob Bradford
4132c4f8d22SRob Bradford### Notable bug fixes
4142c4f8d22SRob Bradford
4152c4f8d22SRob Bradford* Using two PTY outputs e.g. `--serial pty --console pty` now works correctly (#3012)
4162c4f8d22SRob Bradford* TTY input is now always sent to the correct destination (#3005)
4172c4f8d22SRob Bradford* The boot is no longer blocked when using a unattached PTY on the serial console (#3004)
4182c4f8d22SRob Bradford* Live migration is now supported on AArch64 (#3049)
4192c4f8d22SRob Bradford* Ensure signal handlers are run on the correct thread (#3069)
4202c4f8d22SRob Bradford
4212c4f8d22SRob Bradford### Contributors
4222c4f8d22SRob Bradford
4232c4f8d22SRob BradfordMany thanks to everyone who has contributed to our release:
4242c4f8d22SRob Bradford
4252c4f8d22SRob Bradford* Alyssa Ross <hi@alyssa.is>
4262c4f8d22SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
4272c4f8d22SRob Bradford* Arafatms <arafatms@outlook.com>
4282c4f8d22SRob Bradford* Bo Chen <chen.bo@intel.com>
4292c4f8d22SRob Bradford* Fazla Mehrab <akm.fazla.mehrab@vt.edu>
4302c4f8d22SRob Bradford* Henry Wang <Henry.Wang@arm.com>
4312c4f8d22SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
4322c4f8d22SRob Bradford* Jiaqi Gao <jiaqi.gao@intel.com>
4332c4f8d22SRob Bradford* Markus Theil <markus.theil@tu-ilmenau.de>
4342c4f8d22SRob Bradford* Muminul Islam <muislam@microsoft.com>
4352c4f8d22SRob Bradford* Rob Bradford <robert.bradford@intel.com>
4362c4f8d22SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
4372c4f8d22SRob Bradford* Wei Liu <liuwe@microsoft.com>
4382c4f8d22SRob Bradford* Yu Li <liyu.yukiteru@bytedance.com>
439e6db5999SRob Bradford
440e6db5999SRob Bradford# v17.0
441e6db5999SRob Bradford
442e6db5999SRob BradfordThis release has been tracked through the [v17.0
443e6db5999SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20).
444e6db5999SRob Bradford
445e6db5999SRob Bradford### ARM64 NUMA support using ACPI
446e6db5999SRob Bradford
447e6db5999SRob BradfordThe support for ACPI on ARM64 has been enhanced to include support for
448e6db5999SRob Bradfordspecifying a NUMA configuration using the existing control options.
449e6db5999SRob Bradford
450e6db5999SRob Bradford### `Seccomp` support for MSHV backend
451e6db5999SRob Bradford
452e6db5999SRob BradfordThe `seccomp` rules have now been extended to support running against the MSHV
453e6db5999SRob Bradfordhypervisor backend.
454e6db5999SRob Bradford
455e6db5999SRob Bradford### Hotplug of `macvtap` devices
456e6db5999SRob Bradford
457e6db5999SRob BradfordHotplug of `macvtap` devices is now supported with the file descriptor for the
458e6db5999SRob Bradfordnetwork device if opened by the user and passed to the VMM. The `ch-remote`
459e6db5999SRob Bradfordtool supports this functionality when adding a network device.
460e6db5999SRob Bradford
461e6db5999SRob Bradford### Improved SGX support
462e6db5999SRob Bradford
463e6db5999SRob BradfordThe SGX support has been updated to match the latest Linux kernel support and
464e6db5999SRob Bradfordnow supports SGX provisioning and associating EPC sections to NUMA nodes.
465e6db5999SRob Bradford
466e6db5999SRob Bradford### Inflight tracking for `vhost-user` devices
467e6db5999SRob Bradford
468e6db5999SRob BradfordSupport for handling inflight tracking of I/O requests has been added to the
469e6db5999SRob Bradford`vhost-user` devices allowing recovery after device reconnection.
470e6db5999SRob Bradford
471e6db5999SRob Bradford### Notable bug fixes
472e6db5999SRob Bradford
473e6db5999SRob Bradford* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
474e6db5999SRob Bradford* The VMM side of `vhost-user` devices no longer advertise the
475e6db5999SRob Bradford  `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM
476e6db5999SRob Bradford(#2833).
477e6db5999SRob Bradford* On ARM64 VMs can be created with more than 16 vCPUs (#2763).
478e6db5999SRob Bradford
479e6db5999SRob Bradford### Contributors
480e6db5999SRob Bradford
481e6db5999SRob BradfordMany thanks to everyone who has contributed to our release:
482e6db5999SRob Bradford
483e6db5999SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
484e6db5999SRob Bradford* Arafatms <arafatms@outlook.com>
485e6db5999SRob Bradford* Bo Chen <chen.bo@intel.com>
486e6db5999SRob Bradford* Fei Li <lifei.shirley@bytedance.com>
487e6db5999SRob Bradford* Henry Wang <Henry.Wang@arm.com>
488e6db5999SRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
489e6db5999SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
490e6db5999SRob Bradford* Li Hangjing <lihangjing@bytedance.com>
491e6db5999SRob Bradford* Michael Zhao <michael.zhao@arm.com>
492e6db5999SRob Bradford* Muminul Islam <muislam@microsoft.com>
493e6db5999SRob Bradford* Rob Bradford <robert.bradford@intel.com>
494e6db5999SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
495e6db5999SRob Bradford* Wei Liu <liuwe@microsoft.com>
496e6db5999SRob Bradford* Yukiteru <wfly1998@sina.com>
497e6db5999SRob Bradford
4985ed8e01fSRob Bradford# v16.0
4995ed8e01fSRob Bradford
5005ed8e01fSRob BradfordThis release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19).
5015ed8e01fSRob Bradford
5025ed8e01fSRob Bradford### Improved live migration support
5035ed8e01fSRob Bradford
5045ed8e01fSRob BradfordThe live migration support inside Cloud Hypervisor has been improved with the addition of the tracking of dirty pages written by the VMM to complement the tracking of dirty pages made by the guest itself. Further the internal state of the VMM now is versioned which allows the safe migration of VMs from one version of the VMM to a newer one. However further testing is required so this should be done with care. See the [live migration documentation](docs/live_migration.md) for more details.
5055ed8e01fSRob Bradford
5065ed8e01fSRob Bradford### Improved `vhost-user` support
5075ed8e01fSRob Bradford
5085ed8e01fSRob BradfordWhen using `vhost-user` to access devices implemented in different processes there is now support for reconnection of those devices in the case of a restart of the backend. In addition it is now possible to operate with the direction of the `vhost-user-net` connection reversed with the server in the VMM and the client in the backend. This is aligns with the default approach recommended by Open vSwitch.
5095ed8e01fSRob Bradford
5105ed8e01fSRob Bradford### ARM64 ACPI and UEFI support
5115ed8e01fSRob Bradford
5125ed8e01fSRob BradfordCloud Hypervisor now supports using ACPI and booting from a UEFI image on ARM64. This allows the use of stock OS images without direct kernel boot.
5135ed8e01fSRob Bradford
5145ed8e01fSRob Bradford### Notable bug fixes
5155ed8e01fSRob Bradford
5165ed8e01fSRob Bradford* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
5175ed8e01fSRob Bradford* When using MQ with `virtio` devices Cloud Hypervisor now enforces a minimum vCPU count which ensures that the user will not see adverse guest performance (#2563).
5185ed8e01fSRob Bradford* The KVM clock is now correctly handled during live migration / snapshot & restore.
5195ed8e01fSRob Bradford
5205ed8e01fSRob Bradford### Removed functionality
5215ed8e01fSRob Bradford
5225ed8e01fSRob BradfordThe following formerly deprecated features have been removed:
5235ed8e01fSRob Bradford
5245ed8e01fSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
5255ed8e01fSRob Bradford  binaries has been deprecated. When using direct boot users should configure
5265ed8e01fSRob Bradford  their kernel with `CONFIG_PVH=y`.
5275ed8e01fSRob Bradford
5285ed8e01fSRob Bradford### Contributors
5295ed8e01fSRob Bradford
5305ed8e01fSRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
5315ed8e01fSRob Bradford
5325ed8e01fSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
5335ed8e01fSRob Bradford* Bo Chen <chen.bo@intel.com>
5345ed8e01fSRob Bradford* Dayu Liu <liu.dayu@zte.com.cn>
5355ed8e01fSRob Bradford* Henry Wang <Henry.Wang@arm.com>
5365ed8e01fSRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
5375ed8e01fSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
5385ed8e01fSRob Bradford* Michael Zhao <michael.zhao@arm.com>
5395ed8e01fSRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
5405ed8e01fSRob Bradford* Muminul Islam <muislam@microsoft.com>
5415ed8e01fSRob Bradford* Ren Lei <ren.lei4@zte.com.cn>
5425ed8e01fSRob Bradford* Rob Bradford <robert.bradford@intel.com>
5435ed8e01fSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
5445ed8e01fSRob Bradford* Wei Liu <liuwe@microsoft.com>
5455ed8e01fSRob Bradford* Yi Wang <wang.yi59@zte.com.cn>
5465ed8e01fSRob Bradford
54730a01277SRob Bradford# v15.0
54830a01277SRob Bradford
54930a01277SRob BradfordThis release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
55030a01277SRob Bradford
55130a01277SRob BradfordHighlights for `cloud-hypervisor` version v15.0 include:
55230a01277SRob Bradford
55330a01277SRob Bradford### Version numbering and stability guarantees
55430a01277SRob Bradford
55530a01277SRob BradfordThis release is the first in a new version numbering scheme to represent that
55630a01277SRob Bradfordwe believe Cloud Hypervisor is maturing and entering a period of stability.
55730a01277SRob BradfordWith this new release we are beginning our new stability guarantees:
55830a01277SRob Bradford
55930a01277SRob Bradford* The API (including command line options) will not be removed or changed in a
56030a01277SRob Bradford  breaking way without a minimum of 2 releases notice. Where possible warnings
56130a01277SRob Bradford  will be given about the use of deprecated functionality and the deprecations
56230a01277SRob Bradford  will be documented in the release notes.
56330a01277SRob Bradford* Point releases will be made between individual releases where there are
56430a01277SRob Bradford  substantial bug fixes or security issues that need to be fixed.
56530a01277SRob Bradford
56630a01277SRob BradfordCurrently the following items are **not** guaranteed across updates:
56730a01277SRob Bradford
56830a01277SRob Bradford* Snapshot/restore is not supported across different versions
56930a01277SRob Bradford* Live migration is not supported across different versions
57030a01277SRob Bradford* The following features are considered experimental and may change
57130a01277SRob Bradford  substantially between releases: TDX, SGX.
57230a01277SRob Bradford
57330a01277SRob Bradford### Network device rate limiting
57430a01277SRob Bradford
57530a01277SRob BradfordBuilding on our existing support for rate limiting block activity the network
57630a01277SRob Bradforddevice also now supports rate limiting. Full details of the controls are in the
57730a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
57830a01277SRob Bradford
57930a01277SRob Bradford### Support for runtime control of `virtio-net` guest offload
58030a01277SRob Bradford
58130a01277SRob BradfordThe guest is now able to change the offload settings for the `virtio-net`
58230a01277SRob Bradforddevice. As well as providing a useful control this mitigates an issue in the
58330a01277SRob BradfordLinux kernel where the guest will attempt to reprogram the offload settings
58430a01277SRob Bradfordeven if they are not advertised as configurable (#2528).
58530a01277SRob Bradford
58630a01277SRob Bradford### `--api-socket` supports file descriptor parameter
58730a01277SRob Bradford
58830a01277SRob BradfordThe `--api-socket` can now take an `fd=` parameter to specify an existing file
58930a01277SRob Bradforddescriptor to use. This is particularly beneficial for frameworks that need to
59030a01277SRob Bradfordprogrammatically control Cloud Hypervisor.
59130a01277SRob Bradford
59230a01277SRob Bradford### Bug fixes
59330a01277SRob Bradford
59430a01277SRob Bradford* A workaround has been put in place to mitigate a Linux kernel issues that
59530a01277SRob Bradford  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
59630a01277SRob Bradford* PCI BARs are now correctly aligned removing the need for the guest to
59730a01277SRob Bradford  reprogram them (#1797,#1798)
59830a01277SRob Bradford* Handle TAP interface not being writable within virtio-net (due to the buffer
59930a01277SRob Bradford  exhaustion on the host) (#2517)
60030a01277SRob Bradford* The recommended Linux kernel is now v5.12.0 as it contains a fix that
60130a01277SRob Bradford  prevents snapshot & restore working (#2535)
60230a01277SRob Bradford
60330a01277SRob Bradford### Deprecations
60430a01277SRob Bradford
60530a01277SRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
60630a01277SRob Bradford
60730a01277SRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
60830a01277SRob Bradford  binaries has been deprecated. When using direct boot users should configure
60930a01277SRob Bradford  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
61030a01277SRob Bradford
61130a01277SRob Bradford### Contributors
61230a01277SRob Bradford
61330a01277SRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
61430a01277SRob Bradford
61530a01277SRob Bradford* Alyssa Ross <hi@alyssa.is>
61630a01277SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
61730a01277SRob Bradford* Bo Chen <chen.bo@intel.com>
61830a01277SRob Bradford* Gaelan Steele <gbs@canishe.com>
61930a01277SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
62030a01277SRob Bradford* Michael Zhao <michael.zhao@arm.com>
62130a01277SRob Bradford* Muminul Islam <muislam@microsoft.com>
62230a01277SRob Bradford* Rob Bradford <robert.bradford@intel.com>
62330a01277SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
62430a01277SRob Bradford* Wei Liu <liuwe@microsoft.com>
62530a01277SRob Bradford* William Douglas <william.douglas@intel.com>
62630a01277SRob Bradford
62730a01277SRob Bradford# v0.14.1
62830a01277SRob Bradford
62930a01277SRob BradfordBug fix release branched off the v0.14.0 release. The following bugs were fixed
63030a01277SRob Bradfordin this release:
63130a01277SRob Bradford
63230a01277SRob Bradford* CPU hotplug on Windows failed due to misreported CPU state information and
63330a01277SRob Bradford  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
63430a01277SRob Bradford* A seccomp rule was missing that was triggered on CPU unplug (#2455)
63530a01277SRob Bradford* A bounds check in VIRTIO queue validation was erroneously generating
63630a01277SRob Bradford  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
63730a01277SRob Bradford
63840c63dcfSRob Bradford# v0.14.0
63940c63dcfSRob Bradford
64040c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
64140c63dcfSRob Bradford
64240c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
64340c63dcfSRob Bradford
64440c63dcfSRob Bradford### Structured event monitoring
64540c63dcfSRob Bradford
64640c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
64740c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
64840c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
64940c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
65040c63dcfSRob BradfordHypervisor API surface.
65140c63dcfSRob Bradford
65240c63dcfSRob Bradford### MSHV improvements
65340c63dcfSRob Bradford
65440c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
65540c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
65640c63dcfSRob Bradfordthe MSHV support.
65740c63dcfSRob Bradford
65840c63dcfSRob Bradford### Improved aarch64 platform
65940c63dcfSRob Bradford
66040c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
66140c63dcfSRob BradfordVM including an enhanced serial UART.
66240c63dcfSRob Bradford
66340c63dcfSRob Bradford### Updated hotplug documentation
66440c63dcfSRob Bradford
66540c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
66640c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
66740c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
66840c63dcfSRob Bradford
66940c63dcfSRob Bradford### PTY control for serial and `virtio-console`
67040c63dcfSRob Bradford
67140c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
67240c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
67340c63dcfSRob BradfordPTY subsystem.
67440c63dcfSRob Bradford
67540c63dcfSRob Bradford### Block device rate limiting
67640c63dcfSRob Bradford
67740c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
67840c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
67930a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
68040c63dcfSRob Bradford
68140c63dcfSRob Bradford
68240c63dcfSRob Bradford### Deprecations
68340c63dcfSRob Bradford
68440c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
68540c63dcfSRob Bradford
68640c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
68740c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
68840c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
68940c63dcfSRob Bradford
69040c63dcfSRob Bradford
69140c63dcfSRob Bradford### Contributors
69240c63dcfSRob Bradford
69340c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
69440c63dcfSRob Bradfordsome new faces.
69540c63dcfSRob Bradford
69640c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
69740c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
69840c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
69940c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
70040c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
70140c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
70240c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
70340c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
70440c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
70540c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
70640c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
70740c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
70840c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
70940c63dcfSRob Bradford
710f58b6f84SRob Bradford# v0.13.0
711f58b6f84SRob Bradford
712f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
713f58b6f84SRob Bradford
714f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
715f58b6f84SRob Bradford
716f58b6f84SRob Bradford### Wider VFIO device support
717f58b6f84SRob Bradford
718f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
719f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
720f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
721f58b6f84SRob Bradforddrivers.
722f58b6f84SRob Bradford
72340c63dcfSRob Bradford### Improved huge page support
724f58b6f84SRob Bradford
725f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
726f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
727f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
728f58b6f84SRob Bradforddesired size in their pool.
729f58b6f84SRob Bradford
730f58b6f84SRob Bradford### MACvTAP support
731f58b6f84SRob Bradford
732f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
733f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
734f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
735f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
736f58b6f84SRob Bradford
737f58b6f84SRob Bradford### VHD disk image support
738f58b6f84SRob Bradford
739f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
740f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
741f58b6f84SRob Bradford
742f58b6f84SRob Bradford### Improved Virtio device threading
743f58b6f84SRob Bradford
744f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
745f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
746f58b6f84SRob Bradfordpredictable name derived from the device id.
747f58b6f84SRob Bradford
748f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
749f58b6f84SRob Bradford
750f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
751f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
752f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
753f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
754f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
755f58b6f84SRob Bradford
756f58b6f84SRob Bradford### Contributors
757f58b6f84SRob Bradford
758f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
759f58b6f84SRob Bradfordsome new faces.
760f58b6f84SRob Bradford
761f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
762f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
763f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
764f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
765f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
766f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
767f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
768f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
769f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
770f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
771f58b6f84SRob Bradford
772d42b5084SRob Bradford# v0.12.0
773d42b5084SRob Bradford
774d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
775d42b5084SRob Bradford
776d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
777d42b5084SRob Bradford
778d42b5084SRob Bradford### ARM64 enhancements
779d42b5084SRob Bradford
780d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
781d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
782d42b5084SRob Bradford
783d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
784d42b5084SRob Bradford
785d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
786d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
787d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
788d42b5084SRob Bradfordremoved.
789d42b5084SRob Bradford
790d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
791d42b5084SRob Bradford
792d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
793d42b5084SRob Bradfordinstead hosted in [it's own
794d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
795d42b5084SRob Bradford
796d42b5084SRob Bradford### Enhanced "info" API
797d42b5084SRob Bradford
798d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
799d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
800d42b5084SRob Bradford
801d42b5084SRob Bradford### Contributors
802d42b5084SRob Bradford
803d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
804d42b5084SRob Bradford
805d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
806d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
807d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
808d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
809d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
810d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
811d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
812d42b5084SRob Bradford
8137dcd3affSRob Bradford# v0.11.0
8147dcd3affSRob Bradford
8157dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
8167dcd3affSRob Bradford
8177dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
8187dcd3affSRob Bradford
8197dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
8207dcd3affSRob Bradford
8217dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
8227dcd3affSRob Bradfordbe used for a significantly higher performance block device.
8237dcd3affSRob Bradford
8247dcd3affSRob Bradford### Windows Guest Support
8257dcd3affSRob Bradford
8267dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
8277dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
8287dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
8297dcd3affSRob Bradforddocumentation](docs/windows.md).
8307dcd3affSRob Bradford
8317dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
8327dcd3affSRob Bradford
8337dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
8347dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
8357dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
8367dcd3affSRob Bradford
837d00eb4aaSRob Bradford### `virtio-mmio` Removal
8387dcd3affSRob Bradford
8397dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
8407dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
8417dcd3affSRob Bradfordreduce the testing burden of the project.
8427dcd3affSRob Bradford
8437dcd3affSRob Bradford### Snapshot/Restore support for ARM64
8447dcd3affSRob Bradford
8457dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
8467dcd3affSRob Bradfordimplemented.
8477dcd3affSRob Bradford
8487dcd3affSRob Bradford### Improved Linux Boot Time
8497dcd3affSRob Bradford
8507dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
8517dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
8527dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
8537dcd3affSRob Bradford
8547dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
8557dcd3affSRob Bradford
8567dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
8577dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
8587dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
8597dcd3affSRob Bradfordresources.
8607dcd3affSRob Bradford
8617dcd3affSRob Bradford### Default Log Level Changed
8627dcd3affSRob Bradford
8637dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
8647dcd3affSRob Bradfordeasier to see potential issues. New [logging
8657dcd3affSRob Bradforddocumentation](docs/logging) was also added.
8667dcd3affSRob Bradford
8677dcd3affSRob Bradford### New `--balloon` Parameter Added
8687dcd3affSRob Bradford
8697dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
8707dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
8717dcd3affSRob Bradfordcontrols without overloading `--memory`.
8727dcd3affSRob Bradford
8737dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
8747dcd3affSRob Bradford
8757dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
8767dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
8777dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
8787dcd3affSRob Bradford
8797dcd3affSRob Bradford### Notable Bug Fixes
8807dcd3affSRob Bradford
8817dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
8827dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
8837dcd3affSRob Bradford* CPU identification string is now exposed to the guest
8847dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
8857dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
8867dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
8877dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
8887dcd3affSRob Bradford  can be used (#1803)
8897dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
8907dcd3affSRob Bradford  correctly
8917dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
8927dcd3affSRob Bradford  correctly
8937dcd3affSRob Bradford
8947dcd3affSRob Bradford### Contributors
8957dcd3affSRob Bradford
8967dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
8977dcd3affSRob Bradford
8987dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
8997dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
9007dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
9017dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
9027dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
9037dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
9047dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
9057dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
9067dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
9077dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
9087dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
9097dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
9107dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
9117dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
9127dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
9137dcd3affSRob Bradford
9147dcd3affSRob Bradford
915198bd551SRob Bradford# v0.10.0
916198bd551SRob Bradford
917198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
918198bd551SRob Bradford
919198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
920198bd551SRob Bradford
921198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
922198bd551SRob Bradford
923198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
924198bd551SRob Bradford
925198bd551SRob Bradford### Memory Zones
926198bd551SRob Bradford
927198bd551SRob 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).
928198bd551SRob Bradford
929198bd551SRob Bradford### `Seccomp` Sandbox Improvements
930198bd551SRob Bradford
931198bd551SRob 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`.
932198bd551SRob Bradford
933198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
934198bd551SRob Bradford
935198bd551SRob 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.
936198bd551SRob Bradford
937198bd551SRob Bradford### Notable Bug Fixes
938198bd551SRob Bradford
939198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
940198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
941198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
942198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
943198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
944198bd551SRob Bradford
945198bd551SRob Bradford### Contributors
946198bd551SRob Bradford
947198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
948198bd551SRob Bradford
949198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
950198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
951198bd551SRob Bradford* Anatol Belski <ab@php.net>
952198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
953198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
954198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
955198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
956198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
957198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
958198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
959198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
960198bd551SRob Bradford
961d714cf81SRob Bradford# v0.9.0
962d714cf81SRob Bradford
963d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
964d714cf81SRob Bradford
965d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
966d714cf81SRob Bradford
967d714cf81SRob Bradford### `io_uring` Based Block Device Support
968d714cf81SRob Bradford
969d714cf81SRob 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.
970d714cf81SRob Bradford
971d714cf81SRob Bradford### Block and Network Device Statistics
972d714cf81SRob Bradford
973d714cf81SRob 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.
974d714cf81SRob Bradford
975d714cf81SRob Bradford### HTTP API Responses
976d714cf81SRob Bradford
977d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
978d714cf81SRob Bradford
979d714cf81SRob Bradford### CPU Topology
980d714cf81SRob Bradford
981d714cf81SRob 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.
982d714cf81SRob Bradford
983d714cf81SRob Bradford### Release Build Optimization
984d714cf81SRob Bradford
985d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
986d714cf81SRob Bradford
987d714cf81SRob Bradford### Hypervisor Abstraction
988d714cf81SRob Bradford
989d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
990d714cf81SRob Bradford
991d714cf81SRob Bradford### Snapshot/Restore Improvements
992d714cf81SRob Bradford
993d714cf81SRob 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.
994d714cf81SRob Bradford
995d714cf81SRob Bradford### Virtio Memory Ballooning Support
996d714cf81SRob Bradford
997d714cf81SRob 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.
998d714cf81SRob Bradford
999d714cf81SRob Bradford### Enhancements to ARM64 Support
1000d714cf81SRob Bradford
1001d714cf81SRob 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.
1002d714cf81SRob Bradford
1003d714cf81SRob Bradford### Intel SGX Support
1004d714cf81SRob Bradford
1005d714cf81SRob 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).
1006d714cf81SRob Bradford
1007d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
1008d714cf81SRob Bradford
1009d714cf81SRob 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.
1010d714cf81SRob Bradford
1011d714cf81SRob Bradford### Notable Bug Fixes
1012d714cf81SRob Bradford
1013d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
1014d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
1015d714cf81SRob 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).
1016d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
1017d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
1018d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
1019d714cf81SRob Bradford
1020d714cf81SRob Bradford### Contributors
1021d714cf81SRob Bradford
1022d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
1023d714cf81SRob Bradford
1024d714cf81SRob Bradford* Anatol Belski <ab@php.net>
1025d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
1026d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
1027d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
1028d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
1029d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
1030d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
1031d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1032d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
1033d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
1034d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
1035d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
1036d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
1037d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
1038d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
1039d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
1040d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
1041d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
1042d714cf81SRob Bradford
1043d714cf81SRob Bradford
104452b83969SRob Bradford# v0.8.0
104552b83969SRob Bradford
104652b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
104752b83969SRob Bradford
104852b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
104952b83969SRob Bradford
105052b83969SRob Bradford### Experimental Snapshot and Restore Support
105152b83969SRob Bradford
105252b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
105352b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
105452b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
105552b83969SRob Bradfordoriginal VM at the point it was paused.
105652b83969SRob Bradford
105752b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
105852b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
105952b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
106052b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
106152b83969SRob Bradford(#1176).
106252b83969SRob Bradford
106352b83969SRob Bradford### Experimental ARM64 Support
106452b83969SRob Bradford
106552b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
106652b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
106752b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
106852b83969SRob Bradford
106952b83969SRob Bradford### Support for Using 5-level Paging in Guests
107052b83969SRob Bradford
107152b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
107252b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
107352b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
107452b83969SRob Bradfordwork due to current limitations in the PVH boot process.
107552b83969SRob Bradford
107652b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
107752b83969SRob Bradford
107852b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
107952b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
108052b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
108152b83969SRob Bradfordthe guest must service.
108252b83969SRob Bradford
108352b83969SRob Bradford### `vhost_user_fs` Improvements
108452b83969SRob Bradford
108552b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
108652b83969SRob Bradford
108752b83969SRob Bradford
108852b83969SRob Bradford### Notable Bug Fixes
108952b83969SRob Bradford
109052b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
109152b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
109252b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
109352b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
109452b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
109552b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
109652b83969SRob Bradford  #1216).
109752b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
109852b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
109952b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
110052b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
110152b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
110252b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
110352b83969SRob Bradford  (#751).
110452b83969SRob Bradford
110552b83969SRob Bradford### Command Line and API Changes
110652b83969SRob Bradford
110752b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
110852b83969SRob Bradford
110952b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
111052b83969SRob Bradford  rather than `sock` in some cases.
111152b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
111252b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
111352b83969SRob Bradford  offered for negotiation.
111452b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
111552b83969SRob Bradford  address for the `tap` device on the host.
111652b83969SRob Bradford
111752b83969SRob Bradford### Contributors
111852b83969SRob Bradford
111952b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
112052b83969SRob Bradford
112152b83969SRob Bradford* Anatol Belski <ab@php.net>
112252b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
112352b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
112452b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
112552b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
112652b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
112752b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
112852b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
112952b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
113052b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
113152b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
113252b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
113352b83969SRob Bradford
113496be8229SRob Bradford# v0.7.0
113596be8229SRob Bradford
113696be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
113796be8229SRob Bradford
113896be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
113996be8229SRob Bradford
114096be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
114196be8229SRob Bradford
114296be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
114396be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
114496be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
11455c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
114696be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
114796be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
114896be8229SRob Bradforddevices to ease their removal.
114996be8229SRob Bradford
115096be8229SRob Bradford### Alternative `libc` Support
115196be8229SRob Bradford
115296be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
115396be8229SRob Bradfordcontains a static binary compiled using that toolchain.
115496be8229SRob Bradford
115596be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
115696be8229SRob Bradford
115796be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
115896be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
115996be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
116096be8229SRob Bradfordis passed when the devices are created.
116196be8229SRob Bradford
116296be8229SRob Bradford### Initial RamFS Support
116396be8229SRob Bradford
116496be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
116596be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
116696be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
116796be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
116896be8229SRob Bradfordminimal image.
116996be8229SRob Bradford
117096be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
117196be8229SRob Bradford
117296be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
117396be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
117496be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
117596be8229SRob Bradfordrequires kernel patches to be able to support it.
117696be8229SRob Bradford
117796be8229SRob Bradford### `Seccomp` Sandboxing
117896be8229SRob Bradford
117996be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
118096be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
118196be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
118296be8229SRob Bradford
118396be8229SRob Bradford### Updated Distribution Support
118496be8229SRob Bradford
118596be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
118696be8229SRob Bradforddistributions and is part of our regular testing programme.
118796be8229SRob Bradford
118896be8229SRob Bradford### Command Line and API Changes
118996be8229SRob Bradford
119096be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
119196be8229SRob Bradford
119296be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
119396be8229SRob Bradford  If no name is specified the VMM chooses one.
119496be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
119596be8229SRob Bradford  memory instead of providing a path.
119696be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
119796be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
119896be8229SRob Bradford  option and replaced it with a single optional field.
119996be8229SRob Bradford* There is enhanced validation of the command line and API provided
120096be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
120196be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
120296be8229SRob Bradford  device.
120396be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
120496be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
120596be8229SRob Bradford  has appropriate new HTTP endpoints too.
120696be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
120796be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
120896be8229SRob Bradford  to provide the equivalent of a read-only file.
120996be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
121096be8229SRob Bradford  with those used by `--disk`.
121196be8229SRob Bradford
121296be8229SRob Bradford### Contributors
121396be8229SRob Bradford
121496be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
121596be8229SRob Bradford
121696be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
121796be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
121896be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
121996be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
122096be8229SRob Bradford* Dean Sheather <dean@coder.com>
122196be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
122296be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
122396be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
122496be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
122596be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
122696be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
122796be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
122896be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
122996be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
123096be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
123196be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
123296be8229SRob Bradford
123303cb26ccSSamuel Ortiz# v0.6.0
123403cb26ccSSamuel Ortiz
123503cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
123603cb26ccSSamuel Ortiz
123703cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
123803cb26ccSSamuel Ortiz
123903cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
124003cb26ccSSamuel Ortiz
124103cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
124203cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
124303cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
124403cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
124503cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
124603cb26ccSSamuel Ortiz
124703cb26ccSSamuel Ortiz### Shared Filesystem Improvements
124803cb26ccSSamuel Ortiz
124903cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
125003cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
125103cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
125203cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
125303cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
125403cb26ccSSamuel Ortiz
125503cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
125603cb26ccSSamuel Ortiz
125703cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
125803cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
125903cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
126003cb26ccSSamuel Ortizinto their own, separate processes.
12615c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
126203cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
126303cb26ccSSamuel Ortiz
126403cb26ccSSamuel Ortiz### Command Line Interface
126503cb26ccSSamuel Ortiz
126603cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
126737a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
126837a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
126937a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
127037a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
127137a2c13aSAlyssa Rossis created with each build and available e.g. at
127203cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
127303cb26ccSSamuel Ortiz
127403cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
127503cb26ccSSamuel Ortizcommands.
127603cb26ccSSamuel Ortiz
127703cb26ccSSamuel Ortiz### PVH Boot
127803cb26ccSSamuel Ortiz
127903cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
128003cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
128103cb26ccSSamuel Ortiz
128203cb26ccSSamuel Ortiz### Contributors
128303cb26ccSSamuel Ortiz
128403cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
128503cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
128603cb26ccSSamuel Ortiz
128703cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
128803cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
128903cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
129003cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
129103cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
129203cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
129303cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
129403cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
129503cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
129603cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
129703cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
129803cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
129903cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
130003cb26ccSSamuel Ortiz
130194f2fc33SRob Bradford# v0.5.1
130294f2fc33SRob Bradford
130394f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
130494f2fc33SRob Bradford
130594f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
130694f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
130794f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
130894f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
130994f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
13108e8a7b6dSSamuel Ortiz
13112f395e60SSamuel Ortiz# v0.5.0
13122f395e60SSamuel Ortiz
13132f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
13142f395e60SSamuel Ortiz
13152f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
13162f395e60SSamuel Ortiz
13172f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
13182f395e60SSamuel Ortiz
13192f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
13202f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
13212f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
13222f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
13232f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
13242f395e60SSamuel Ortiz
13252f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
13262f395e60SSamuel Ortiz
13272f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
13282f395e60SSamuel Ortiz
13292f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
13302f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
13312f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
13322f395e60SSamuel Ortiz
13332f395e60SSamuel Ortiz### New Interrupt Management Framework
13342f395e60SSamuel Ortiz
13352f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
13362f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
13372f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
13382f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
13392f395e60SSamuel Ortizvirtio ones.
13402f395e60SSamuel Ortiz
13412f395e60SSamuel Ortiz### Development Tools
13422f395e60SSamuel Ortiz
13432f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
13442f395e60SSamuel Ortizbuild, development and testing tools.
13452f395e60SSamuel OrtizSomehow similar to the excellent
13462f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
134737a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
13482f395e60SSamuel Ortiz
13492f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
13502f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
13512f395e60SSamuel Ortiz
13522f395e60SSamuel Ortiz### Kata Containers Integration
13532f395e60SSamuel Ortiz
13542f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
13552f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
13562f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
13572f395e60SSamuel Ortizintegrated into the project's CI.
13582f395e60SSamuel Ortiz
13592f395e60SSamuel Ortiz### Contributors
13602f395e60SSamuel Ortiz
13612f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
13622f395e60SSamuel Ortiz
13632f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
13642f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
13652f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
13662f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
13672f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
13682f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
13692f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
13702f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
13712f395e60SSamuel Ortiz
1372cec884e8SSamuel Ortiz# v0.4.0
1373cec884e8SSamuel Ortiz
1374cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
1375cec884e8SSamuel Ortiz
1376cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
1377cec884e8SSamuel Ortiz
1378cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
1379cec884e8SSamuel Ortiz
1380e6e58e6dSSebastien BoeufAs a way to vertically scale Cloud Hypervisor guests, we now support dynamically
1381cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
1382cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
1383cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
138437a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
1385cec884e8SSamuel Ortiz
1386cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
1387cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
1388cec884e8SSamuel Ortiz
1389cec884e8SSamuel Ortiz### Programmatic firmware tables generation
1390cec884e8SSamuel Ortiz
1391cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
1392cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
1393cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
1394cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
1395cec884e8SSamuel Ortiztables based on the VMM device model and topology.
1396cec884e8SSamuel Ortiz
1397cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
1398cec884e8SSamuel Ortiz
1399cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
1400cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
1401cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
1402cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
1403cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
1404cec884e8SSamuel Ortiz
1405cec884e8SSamuel Ortiz### Guest pause and resume
1406cec884e8SSamuel Ortiz
14075c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
1408cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
1409cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
1410cec884e8SSamuel Ortizand resume capabilities.
1411cec884e8SSamuel Ortiz
1412cec884e8SSamuel Ortiz### Userspace IOAPIC by default
1413cec884e8SSamuel Ortiz
1414cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
1415cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
1416cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
1417cec884e8SSamuel Ortizdefault.
1418cec884e8SSamuel Ortiz
1419cec884e8SSamuel Ortiz### PCI BAR reprogramming
1420cec884e8SSamuel Ortiz
1421cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
1422cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
1423cec884e8SSamuel Ortizreprogramming.
1424cec884e8SSamuel Ortiz
1425cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
1426cec884e8SSamuel Ortiz
1427cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1428cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1429cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1430cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1431cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1432cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
1433cec884e8SSamuel Ortiztemporarily fork.
1434cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
1435cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
1436cec884e8SSamuel Ortiz
1437cec884e8SSamuel Ortiz### Contributors
1438cec884e8SSamuel Ortiz
1439cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
1440cec884e8SSamuel Ortiz
1441cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
1442cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
1443cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1444cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1445cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
1446cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
1447cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
1448cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
1449cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
1450cec884e8SSamuel Ortiz
14518e8a7b6dSSamuel Ortiz# v0.3.0
14528e8a7b6dSSamuel Ortiz
14538ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
14548e8a7b6dSSamuel Ortiz
14558e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
14568e8a7b6dSSamuel Ortiz
14578e8a7b6dSSamuel Ortiz### Block device offloading
14588e8a7b6dSSamuel Ortiz
14598e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
14608e8a7b6dSSamuel Ortizand we added support for
14618e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
14628e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
14638e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
14648e8a7b6dSSamuel Ortizbackend.
14658e8a7b6dSSamuel Ortiz
14668e8a7b6dSSamuel Ortiz### Network device backend
14678e8a7b6dSSamuel Ortiz
14688e8a7b6dSSamuel OrtizThe previous release provided support for
14698e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
14708e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
14718e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
14728e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
14738e8a7b6dSSamuel Ortiz
14748e8a7b6dSSamuel Ortiz### Virtual sockets
14758e8a7b6dSSamuel Ortiz
14768e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
14778e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
14788e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
14798e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
14808e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
14818e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
14828e8a7b6dSSamuel Ortiz
14838e8a7b6dSSamuel Ortiz### HTTP based API
14848e8a7b6dSSamuel Ortiz
14858e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
14868e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
14878e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
14888e8a7b6dSSamuel Ortiznext release cycle.
14898e8a7b6dSSamuel Ortiz
14908e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
14918e8a7b6dSSamuel Ortiz
14928e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
14938e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
14948e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
14958e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
14968e8a7b6dSSamuel Ortiz
14978e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
14988e8a7b6dSSamuel Ortiz
14998e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
150037a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
150137a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
15028e8a7b6dSSamuel Ortiz
15038e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
15048e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
15058e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
15068e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
15078e8a7b6dSSamuel Ortizsetting.
15088e8a7b6dSSamuel Ortiz
15098e8a7b6dSSamuel Ortiz### Ubuntu 19.10
15108e8a7b6dSSamuel Ortiz
15118ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
15128e8a7b6dSSamuel Ortizwe can now support the latest
15138e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
15148e8a7b6dSSamuel Ortiz
15158e8a7b6dSSamuel Ortiz### Large memory guests
15168e8a7b6dSSamuel Ortiz
15178e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
15188e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
15197688e6e2SSamuel Ortiz
1520d784ac29SSamuel Ortiz# v0.2.0
1521d784ac29SSamuel Ortiz
15228ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1523d784ac29SSamuel Ortiz
1524d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1525d784ac29SSamuel Ortiz
1526d784ac29SSamuel Ortiz### Network device offloading
1527d784ac29SSamuel Ortiz
1528d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1529d784ac29SSamuel Ortizprocesses, we added support for
1530d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1531d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1532d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1533d784ac29SSamuel Ortiz
1534d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1535d784ac29SSamuel Ortiz
1536d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1537d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1538d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1539d784ac29SSamuel Ortizcleanly reboot and shutdown.
1540d784ac29SSamuel Ortiz
1541d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1542d784ac29SSamuel Ortizenabled by default.
1543d784ac29SSamuel Ortiz
1544d784ac29SSamuel Ortiz### Debug I/O port
1545d784ac29SSamuel Ortiz
1546d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1547d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1548d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1549d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
155037a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
155137a2c13aSAlyssa Rossdetails.
1552d784ac29SSamuel Ortiz
1553d784ac29SSamuel Ortiz### Improved direct device assignment
1554d784ac29SSamuel Ortiz
1555d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1556d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1557d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1558d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1559d784ac29SSamuel Ortizdirectly assigned devices.
1560d784ac29SSamuel Ortiz
1561d784ac29SSamuel Ortiz### Improved shared filesystem
1562d784ac29SSamuel Ortiz
1563d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1564d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1565d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1566d784ac29SSamuel Ortizmemory footprint.
1567d784ac29SSamuel Ortiz
1568d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1569d784ac29SSamuel Ortiz
15708ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1571d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1572d784ac29SSamuel Ortizour CI pipeline.
1573d784ac29SSamuel Ortiz
157493b77530SSamuel Ortiz# v0.1.0
157593b77530SSamuel Ortiz
15768ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
157793b77530SSamuel Ortiz
157893b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
157993b77530SSamuel Ortiz
158093b77530SSamuel Ortiz### Shared filesystem
158193b77530SSamuel Ortiz
158293b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
158393b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
158493b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
158593b77530SSamuel Ortiz
158637a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
158737a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
158893b77530SSamuel Ortiz
158993b77530SSamuel Ortiz### Initial direct device assignment support
159093b77530SSamuel Ortiz
159193b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
159293b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
159393b77530SSamuel Ortizphysical devices into its guest.
159493b77530SSamuel Ortiz
159537a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
159637a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
159793b77530SSamuel Ortiz
159893b77530SSamuel Ortiz### Userspace IOAPIC
159993b77530SSamuel Ortiz
160093b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
160193b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
160293b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
160393b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
160493b77530SSamuel Ortiz
160593b77530SSamuel Ortiz### Virtual persistent memory
160693b77530SSamuel Ortiz
160793b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
160893b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
160993b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
161093b77530SSamuel Ortiz
161193b77530SSamuel Ortiz### Linux kernel bzImage
161293b77530SSamuel Ortiz
161393b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
161493b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
161593b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
161693b77530SSamuel Ortizdistribution kernel image.
161793b77530SSamuel Ortiz
161893b77530SSamuel Ortiz### Console over virtio
161993b77530SSamuel Ortiz
162093b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
162193b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
162293b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
162393b77530SSamuel Ortizimplementation.
162493b77530SSamuel Ortiz
162593b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
162693b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
162793b77530SSamuel Ortiz`--serial tty --console off` from the command line.
162893b77530SSamuel Ortiz
162993b77530SSamuel Ortiz### Unit testing
163093b77530SSamuel Ortiz
163193b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
163293b77530SSamuel Ortiz
163393b77530SSamuel Ortiz### Integration tests parallelization
163493b77530SSamuel Ortiz
163593b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
163693b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1637