xref: /cloud-hypervisor/release-notes.md (revision e6db59990767aceca90bc3fc4505dc0064cd8ce0)
1*e6db5999SRob Bradford- [v17.0](#v170)
2*e6db5999SRob Bradford    - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi)
3*e6db5999SRob Bradford    - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend)
4*e6db5999SRob Bradford    - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices)
5*e6db5999SRob Bradford    - [Improved SGX support](#improved-sgx-support)
6*e6db5999SRob Bradford    - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices)
7*e6db5999SRob Bradford    - [Notable bug fixes](#notable-bug-fixes)
8*e6db5999SRob Bradford    - [Contributors](#contributors)
95ed8e01fSRob Bradford- [v16.0](#v160)
105ed8e01fSRob Bradford    - [Improved live migration support](#improved-live-migration-support)
115ed8e01fSRob Bradford    - [Improved `vhost-user` support](#improved-vhost-user-support)
125ed8e01fSRob Bradford    - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support)
13*e6db5999SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-1)
145ed8e01fSRob Bradford    - [Removed functionality](#removed-functionality)
15*e6db5999SRob Bradford    - [Contributors](#contributors-1)
1630a01277SRob Bradford- [v15.0](#v150)
1730a01277SRob Bradford    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
1830a01277SRob Bradford    - [Network device rate limiting](#network-device-rate-limiting)
1930a01277SRob Bradford    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
2030a01277SRob Bradford    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
2130a01277SRob Bradford    - [Bug fixes](#bug-fixes)
2230a01277SRob Bradford    - [Deprecations](#deprecations)
23*e6db5999SRob Bradford    - [Contributors](#contributors-2)
2430a01277SRob Bradford- [v0.14.1](#v0141)
2540c63dcfSRob Bradford- [v0.14.0](#v0140)
2640c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
2740c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
2840c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
2940c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
3040c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
3140c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
3230a01277SRob Bradford    - [Deprecations](#deprecations-1)
33*e6db5999SRob Bradford    - [Contributors](#contributors-3)
34f58b6f84SRob Bradford- [v0.13.0](#v0130)
35f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
3640c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
37f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
38f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
39f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
40f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
41*e6db5999SRob Bradford    - [Contributors](#contributors-4)
42d42b5084SRob Bradford- [v0.12.0](#v0120)
43d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
44d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
45d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
46d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
47*e6db5999SRob Bradford    - [Contributors](#contributors-5)
487dcd3affSRob Bradford- [v0.11.0](#v0110)
497dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
507dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
517dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
527dcd3affSRob Bradford    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
537dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
547dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
557dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
567dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
577dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
587dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
59*e6db5999SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-2)
60*e6db5999SRob Bradford    - [Contributors](#contributors-6)
61198bd551SRob Bradford- [v0.10.0](#v0100)
62198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
63198bd551SRob Bradford    - [Memory Zones](#memory-zones)
64198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
65198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
66*e6db5999SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-3)
67*e6db5999SRob Bradford    - [Contributors](#contributors-7)
68d714cf81SRob Bradford- [v0.9.0](#v090)
69d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
70d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
71d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
72d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
73d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
74d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
75d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
76d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
77d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
78d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
79198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
80*e6db5999SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-4)
81*e6db5999SRob Bradford    - [Contributors](#contributors-8)
82d714cf81SRob Bradford- [v0.8.0](#v080)
83d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
84d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
85d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
86d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
87d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
88*e6db5999SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-5)
89d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
90*e6db5999SRob Bradford    - [Contributors](#contributors-9)
9196be8229SRob Bradford- [v0.7.0](#v070)
9296be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
9396be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
9496be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
9596be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
9696be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
9796be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
9896be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
9952b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
100*e6db5999SRob Bradford    - [Contributors](#contributors-10)
10103cb26ccSSamuel Ortiz- [v0.6.0](#v060)
10203cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
10303cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
10403cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
10503cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
10603cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
107*e6db5999SRob Bradford    - [Contributors](#contributors-11)
10894f2fc33SRob Bradford- [v0.5.1](#v051)
1092f395e60SSamuel Ortiz- [v0.5.0](#v050)
11094f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
11194f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
11294f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
11394f2fc33SRob Bradford    - [Development Tools](#development-tools)
11494f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
115*e6db5999SRob Bradford    - [Contributors](#contributors-12)
116cec884e8SSamuel Ortiz- [v0.4.0](#v040)
11794f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
11894f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
11994f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
12094f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
12194f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
12294f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
12394f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
124*e6db5999SRob Bradford    - [Contributors](#contributors-13)
1258e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
12694f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
12794f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
12894f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
12994f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
13094f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
13194f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
13294f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
13394f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1347688e6e2SSamuel Ortiz- [v0.2.0](#v020)
13594f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
13694f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
13794f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
13894f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
13994f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
14094f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1417688e6e2SSamuel Ortiz- [v0.1.0](#v010)
14294f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
14394f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
14494f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
14594f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
14694f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
14794f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
14894f2fc33SRob Bradford    - [Unit testing](#unit-testing)
14994f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
15094f2fc33SRob Bradford
151*e6db5999SRob Bradford
152*e6db5999SRob Bradford# v17.0
153*e6db5999SRob Bradford
154*e6db5999SRob BradfordThis release has been tracked through the [v17.0
155*e6db5999SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20).
156*e6db5999SRob Bradford
157*e6db5999SRob Bradford### ARM64 NUMA support using ACPI
158*e6db5999SRob Bradford
159*e6db5999SRob BradfordThe support for ACPI on ARM64 has been enhanced to include support for
160*e6db5999SRob Bradfordspecifying a NUMA configuration using the existing control options.
161*e6db5999SRob Bradford
162*e6db5999SRob Bradford### `Seccomp` support for MSHV backend
163*e6db5999SRob Bradford
164*e6db5999SRob BradfordThe `seccomp` rules have now been extended to support running against the MSHV
165*e6db5999SRob Bradfordhypervisor backend.
166*e6db5999SRob Bradford
167*e6db5999SRob Bradford### Hotplug of `macvtap` devices
168*e6db5999SRob Bradford
169*e6db5999SRob BradfordHotplug of `macvtap` devices is now supported with the file descriptor for the
170*e6db5999SRob Bradfordnetwork device if opened by the user and passed to the VMM. The `ch-remote`
171*e6db5999SRob Bradfordtool supports this functionality when adding a network device.
172*e6db5999SRob Bradford
173*e6db5999SRob Bradford### Improved SGX support
174*e6db5999SRob Bradford
175*e6db5999SRob BradfordThe SGX support has been updated to match the latest Linux kernel support and
176*e6db5999SRob Bradfordnow supports SGX provisioning and associating EPC sections to NUMA nodes.
177*e6db5999SRob Bradford
178*e6db5999SRob Bradford### Inflight tracking for `vhost-user` devices
179*e6db5999SRob Bradford
180*e6db5999SRob BradfordSupport for handling inflight tracking of I/O requests has been added to the
181*e6db5999SRob Bradford`vhost-user` devices allowing recovery after device reconnection.
182*e6db5999SRob Bradford
183*e6db5999SRob Bradford### Notable bug fixes
184*e6db5999SRob Bradford
185*e6db5999SRob Bradford* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
186*e6db5999SRob Bradford* The VMM side of `vhost-user` devices no longer advertise the
187*e6db5999SRob Bradford  `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM
188*e6db5999SRob Bradford(#2833).
189*e6db5999SRob Bradford* On ARM64 VMs can be created with more than 16 vCPUs (#2763).
190*e6db5999SRob Bradford
191*e6db5999SRob Bradford### Contributors
192*e6db5999SRob Bradford
193*e6db5999SRob BradfordMany thanks to everyone who has contributed to our release:
194*e6db5999SRob Bradford
195*e6db5999SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
196*e6db5999SRob Bradford* Arafatms <arafatms@outlook.com>
197*e6db5999SRob Bradford* Bo Chen <chen.bo@intel.com>
198*e6db5999SRob Bradford* Fei Li <lifei.shirley@bytedance.com>
199*e6db5999SRob Bradford* Henry Wang <Henry.Wang@arm.com>
200*e6db5999SRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
201*e6db5999SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
202*e6db5999SRob Bradford* Li Hangjing <lihangjing@bytedance.com>
203*e6db5999SRob Bradford* Michael Zhao <michael.zhao@arm.com>
204*e6db5999SRob Bradford* Muminul Islam <muislam@microsoft.com>
205*e6db5999SRob Bradford* Rob Bradford <robert.bradford@intel.com>
206*e6db5999SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
207*e6db5999SRob Bradford* Wei Liu <liuwe@microsoft.com>
208*e6db5999SRob Bradford* Yukiteru <wfly1998@sina.com>
209*e6db5999SRob Bradford
2105ed8e01fSRob Bradford# v16.0
2115ed8e01fSRob Bradford
2125ed8e01fSRob BradfordThis release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19).
2135ed8e01fSRob Bradford
2145ed8e01fSRob Bradford### Improved live migration support
2155ed8e01fSRob Bradford
2165ed8e01fSRob 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.
2175ed8e01fSRob Bradford
2185ed8e01fSRob Bradford### Improved `vhost-user` support
2195ed8e01fSRob Bradford
2205ed8e01fSRob 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.
2215ed8e01fSRob Bradford
2225ed8e01fSRob Bradford### ARM64 ACPI and UEFI support
2235ed8e01fSRob Bradford
2245ed8e01fSRob 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.
2255ed8e01fSRob Bradford
2265ed8e01fSRob Bradford### Notable bug fixes
2275ed8e01fSRob Bradford
2285ed8e01fSRob Bradford* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
2295ed8e01fSRob 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).
2305ed8e01fSRob Bradford* The KVM clock is now correctly handled during live migration / snapshot & restore.
2315ed8e01fSRob Bradford
2325ed8e01fSRob Bradford### Removed functionality
2335ed8e01fSRob Bradford
2345ed8e01fSRob BradfordThe following formerly deprecated features have been removed:
2355ed8e01fSRob Bradford
2365ed8e01fSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
2375ed8e01fSRob Bradford  binaries has been deprecated. When using direct boot users should configure
2385ed8e01fSRob Bradford  their kernel with `CONFIG_PVH=y`.
2395ed8e01fSRob Bradford
2405ed8e01fSRob Bradford### Contributors
2415ed8e01fSRob Bradford
2425ed8e01fSRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
2435ed8e01fSRob Bradford
2445ed8e01fSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
2455ed8e01fSRob Bradford* Bo Chen <chen.bo@intel.com>
2465ed8e01fSRob Bradford* Dayu Liu <liu.dayu@zte.com.cn>
2475ed8e01fSRob Bradford* Henry Wang <Henry.Wang@arm.com>
2485ed8e01fSRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
2495ed8e01fSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
2505ed8e01fSRob Bradford* Michael Zhao <michael.zhao@arm.com>
2515ed8e01fSRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
2525ed8e01fSRob Bradford* Muminul Islam <muislam@microsoft.com>
2535ed8e01fSRob Bradford* Ren Lei <ren.lei4@zte.com.cn>
2545ed8e01fSRob Bradford* Rob Bradford <robert.bradford@intel.com>
2555ed8e01fSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
2565ed8e01fSRob Bradford* Wei Liu <liuwe@microsoft.com>
2575ed8e01fSRob Bradford* Yi Wang <wang.yi59@zte.com.cn>
2585ed8e01fSRob Bradford
25930a01277SRob Bradford# v15.0
26030a01277SRob Bradford
26130a01277SRob BradfordThis release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
26230a01277SRob Bradford
26330a01277SRob BradfordHighlights for `cloud-hypervisor` version v15.0 include:
26430a01277SRob Bradford
26530a01277SRob Bradford### Version numbering and stability guarantees
26630a01277SRob Bradford
26730a01277SRob BradfordThis release is the first in a new version numbering scheme to represent that
26830a01277SRob Bradfordwe believe Cloud Hypervisor is maturing and entering a period of stability.
26930a01277SRob BradfordWith this new release we are beginning our new stability guarantees:
27030a01277SRob Bradford
27130a01277SRob Bradford* The API (including command line options) will not be removed or changed in a
27230a01277SRob Bradford  breaking way without a minimum of 2 releases notice. Where possible warnings
27330a01277SRob Bradford  will be given about the use of deprecated functionality and the deprecations
27430a01277SRob Bradford  will be documented in the release notes.
27530a01277SRob Bradford* Point releases will be made between individual releases where there are
27630a01277SRob Bradford  substantial bug fixes or security issues that need to be fixed.
27730a01277SRob Bradford
27830a01277SRob BradfordCurrently the following items are **not** guaranteed across updates:
27930a01277SRob Bradford
28030a01277SRob Bradford* Snapshot/restore is not supported across different versions
28130a01277SRob Bradford* Live migration is not supported across different versions
28230a01277SRob Bradford* The following features are considered experimental and may change
28330a01277SRob Bradford  substantially between releases: TDX, SGX.
28430a01277SRob Bradford
28530a01277SRob Bradford### Network device rate limiting
28630a01277SRob Bradford
28730a01277SRob BradfordBuilding on our existing support for rate limiting block activity the network
28830a01277SRob Bradforddevice also now supports rate limiting. Full details of the controls are in the
28930a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
29030a01277SRob Bradford
29130a01277SRob Bradford### Support for runtime control of `virtio-net` guest offload
29230a01277SRob Bradford
29330a01277SRob BradfordThe guest is now able to change the offload settings for the `virtio-net`
29430a01277SRob Bradforddevice. As well as providing a useful control this mitigates an issue in the
29530a01277SRob BradfordLinux kernel where the guest will attempt to reprogram the offload settings
29630a01277SRob Bradfordeven if they are not advertised as configurable (#2528).
29730a01277SRob Bradford
29830a01277SRob Bradford### `--api-socket` supports file descriptor parameter
29930a01277SRob Bradford
30030a01277SRob BradfordThe `--api-socket` can now take an `fd=` parameter to specify an existing file
30130a01277SRob Bradforddescriptor to use. This is particularly beneficial for frameworks that need to
30230a01277SRob Bradfordprogrammatically control Cloud Hypervisor.
30330a01277SRob Bradford
30430a01277SRob Bradford### Bug fixes
30530a01277SRob Bradford
30630a01277SRob Bradford* A workaround has been put in place to mitigate a Linux kernel issues that
30730a01277SRob Bradford  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
30830a01277SRob Bradford* PCI BARs are now correctly aligned removing the need for the guest to
30930a01277SRob Bradford  reprogram them (#1797,#1798)
31030a01277SRob Bradford* Handle TAP interface not being writable within virtio-net (due to the buffer
31130a01277SRob Bradford  exhaustion on the host) (#2517)
31230a01277SRob Bradford* The recommended Linux kernel is now v5.12.0 as it contains a fix that
31330a01277SRob Bradford  prevents snapshot & restore working (#2535)
31430a01277SRob Bradford
31530a01277SRob Bradford### Deprecations
31630a01277SRob Bradford
31730a01277SRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
31830a01277SRob Bradford
31930a01277SRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
32030a01277SRob Bradford  binaries has been deprecated. When using direct boot users should configure
32130a01277SRob Bradford  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
32230a01277SRob Bradford
32330a01277SRob Bradford### Contributors
32430a01277SRob Bradford
32530a01277SRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
32630a01277SRob Bradford
32730a01277SRob Bradford* Alyssa Ross <hi@alyssa.is>
32830a01277SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
32930a01277SRob Bradford* Bo Chen <chen.bo@intel.com>
33030a01277SRob Bradford* Gaelan Steele <gbs@canishe.com>
33130a01277SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
33230a01277SRob Bradford* Michael Zhao <michael.zhao@arm.com>
33330a01277SRob Bradford* Muminul Islam <muislam@microsoft.com>
33430a01277SRob Bradford* Rob Bradford <robert.bradford@intel.com>
33530a01277SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
33630a01277SRob Bradford* Wei Liu <liuwe@microsoft.com>
33730a01277SRob Bradford* William Douglas <william.douglas@intel.com>
33830a01277SRob Bradford
33930a01277SRob Bradford# v0.14.1
34030a01277SRob Bradford
34130a01277SRob BradfordBug fix release branched off the v0.14.0 release. The following bugs were fixed
34230a01277SRob Bradfordin this release:
34330a01277SRob Bradford
34430a01277SRob Bradford* CPU hotplug on Windows failed due to misreported CPU state information and
34530a01277SRob Bradford  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
34630a01277SRob Bradford* A seccomp rule was missing that was triggered on CPU unplug (#2455)
34730a01277SRob Bradford* A bounds check in VIRTIO queue validation was erroneously generating
34830a01277SRob Bradford  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
34930a01277SRob Bradford
35040c63dcfSRob Bradford# v0.14.0
35140c63dcfSRob Bradford
35240c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
35340c63dcfSRob Bradford
35440c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
35540c63dcfSRob Bradford
35640c63dcfSRob Bradford### Structured event monitoring
35740c63dcfSRob Bradford
35840c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
35940c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
36040c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
36140c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
36240c63dcfSRob BradfordHypervisor API surface.
36340c63dcfSRob Bradford
36440c63dcfSRob Bradford### MSHV improvements
36540c63dcfSRob Bradford
36640c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
36740c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
36840c63dcfSRob Bradfordthe MSHV support.
36940c63dcfSRob Bradford
37040c63dcfSRob Bradford### Improved aarch64 platform
37140c63dcfSRob Bradford
37240c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
37340c63dcfSRob BradfordVM including an enhanced serial UART.
37440c63dcfSRob Bradford
37540c63dcfSRob Bradford### Updated hotplug documentation
37640c63dcfSRob Bradford
37740c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
37840c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
37940c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
38040c63dcfSRob Bradford
38140c63dcfSRob Bradford### PTY control for serial and `virtio-console`
38240c63dcfSRob Bradford
38340c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
38440c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
38540c63dcfSRob BradfordPTY subsystem.
38640c63dcfSRob Bradford
38740c63dcfSRob Bradford### Block device rate limiting
38840c63dcfSRob Bradford
38940c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
39040c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
39130a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
39240c63dcfSRob Bradford
39340c63dcfSRob Bradford
39440c63dcfSRob Bradford### Deprecations
39540c63dcfSRob Bradford
39640c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
39740c63dcfSRob Bradford
39840c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
39940c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
40040c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
40140c63dcfSRob Bradford
40240c63dcfSRob Bradford
40340c63dcfSRob Bradford### Contributors
40440c63dcfSRob Bradford
40540c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
40640c63dcfSRob Bradfordsome new faces.
40740c63dcfSRob Bradford
40840c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
40940c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
41040c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
41140c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
41240c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
41340c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
41440c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
41540c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
41640c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
41740c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
41840c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
41940c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
42040c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
42140c63dcfSRob Bradford
422f58b6f84SRob Bradford# v0.13.0
423f58b6f84SRob Bradford
424f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
425f58b6f84SRob Bradford
426f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
427f58b6f84SRob Bradford
428f58b6f84SRob Bradford### Wider VFIO device support
429f58b6f84SRob Bradford
430f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
431f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
432f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
433f58b6f84SRob Bradforddrivers.
434f58b6f84SRob Bradford
43540c63dcfSRob Bradford### Improved huge page support
436f58b6f84SRob Bradford
437f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
438f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
439f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
440f58b6f84SRob Bradforddesired size in their pool.
441f58b6f84SRob Bradford
442f58b6f84SRob Bradford### MACvTAP support
443f58b6f84SRob Bradford
444f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
445f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
446f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
447f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
448f58b6f84SRob Bradford
449f58b6f84SRob Bradford### VHD disk image support
450f58b6f84SRob Bradford
451f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
452f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
453f58b6f84SRob Bradford
454f58b6f84SRob Bradford### Improved Virtio device threading
455f58b6f84SRob Bradford
456f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
457f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
458f58b6f84SRob Bradfordpredictable name derived from the device id.
459f58b6f84SRob Bradford
460f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
461f58b6f84SRob Bradford
462f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
463f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
464f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
465f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
466f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
467f58b6f84SRob Bradford
468f58b6f84SRob Bradford### Contributors
469f58b6f84SRob Bradford
470f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
471f58b6f84SRob Bradfordsome new faces.
472f58b6f84SRob Bradford
473f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
474f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
475f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
476f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
477f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
478f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
479f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
480f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
481f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
482f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
483f58b6f84SRob Bradford
484d42b5084SRob Bradford# v0.12.0
485d42b5084SRob Bradford
486d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
487d42b5084SRob Bradford
488d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
489d42b5084SRob Bradford
490d42b5084SRob Bradford### ARM64 enhancements
491d42b5084SRob Bradford
492d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
493d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
494d42b5084SRob Bradford
495d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
496d42b5084SRob Bradford
497d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
498d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
499d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
500d42b5084SRob Bradfordremoved.
501d42b5084SRob Bradford
502d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
503d42b5084SRob Bradford
504d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
505d42b5084SRob Bradfordinstead hosted in [it's own
506d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
507d42b5084SRob Bradford
508d42b5084SRob Bradford### Enhanced "info" API
509d42b5084SRob Bradford
510d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
511d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
512d42b5084SRob Bradford
513d42b5084SRob Bradford### Contributors
514d42b5084SRob Bradford
515d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
516d42b5084SRob Bradford
517d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
518d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
519d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
520d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
521d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
522d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
523d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
524d42b5084SRob Bradford
5257dcd3affSRob Bradford# v0.11.0
5267dcd3affSRob Bradford
5277dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
5287dcd3affSRob Bradford
5297dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
5307dcd3affSRob Bradford
5317dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
5327dcd3affSRob Bradford
5337dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
5347dcd3affSRob Bradfordbe used for a significantly higher performance block device.
5357dcd3affSRob Bradford
5367dcd3affSRob Bradford### Windows Guest Support
5377dcd3affSRob Bradford
5387dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
5397dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
5407dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
5417dcd3affSRob Bradforddocumentation](docs/windows.md).
5427dcd3affSRob Bradford
5437dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
5447dcd3affSRob Bradford
5457dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
5467dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
5477dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
5487dcd3affSRob Bradford
5497dcd3affSRob Bradford### `virtio-mmmio` Removal
5507dcd3affSRob Bradford
5517dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
5527dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
5537dcd3affSRob Bradfordreduce the testing burden of the project.
5547dcd3affSRob Bradford
5557dcd3affSRob Bradford### Snapshot/Restore support for ARM64
5567dcd3affSRob Bradford
5577dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
5587dcd3affSRob Bradfordimplemented.
5597dcd3affSRob Bradford
5607dcd3affSRob Bradford### Improved Linux Boot Time
5617dcd3affSRob Bradford
5627dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
5637dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
5647dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
5657dcd3affSRob Bradford
5667dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
5677dcd3affSRob Bradford
5687dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
5697dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
5707dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
5717dcd3affSRob Bradfordresources.
5727dcd3affSRob Bradford
5737dcd3affSRob Bradford### Default Log Level Changed
5747dcd3affSRob Bradford
5757dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
5767dcd3affSRob Bradfordeasier to see potential issues. New [logging
5777dcd3affSRob Bradforddocumentation](docs/logging) was also added.
5787dcd3affSRob Bradford
5797dcd3affSRob Bradford### New `--balloon` Parameter Added
5807dcd3affSRob Bradford
5817dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
5827dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
5837dcd3affSRob Bradfordcontrols without overloading `--memory`.
5847dcd3affSRob Bradford
5857dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
5867dcd3affSRob Bradford
5877dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
5887dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
5897dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
5907dcd3affSRob Bradford
5917dcd3affSRob Bradford### Notable Bug Fixes
5927dcd3affSRob Bradford
5937dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
5947dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
5957dcd3affSRob Bradford* CPU identification string is now exposed to the guest
5967dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
5977dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
5987dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
5997dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
6007dcd3affSRob Bradford  can be used (#1803)
6017dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
6027dcd3affSRob Bradford  correctly
6037dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
6047dcd3affSRob Bradford  correctly
6057dcd3affSRob Bradford
6067dcd3affSRob Bradford### Contributors
6077dcd3affSRob Bradford
6087dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
6097dcd3affSRob Bradford
6107dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
6117dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
6127dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
6137dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
6147dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
6157dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
6167dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
6177dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
6187dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
6197dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
6207dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
6217dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
6227dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
6237dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
6247dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
6257dcd3affSRob Bradford
6267dcd3affSRob Bradford
627198bd551SRob Bradford# v0.10.0
628198bd551SRob Bradford
629198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
630198bd551SRob Bradford
631198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
632198bd551SRob Bradford
633198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
634198bd551SRob Bradford
635198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
636198bd551SRob Bradford
637198bd551SRob Bradford### Memory Zones
638198bd551SRob Bradford
639198bd551SRob 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).
640198bd551SRob Bradford
641198bd551SRob Bradford### `Seccomp` Sandbox Improvements
642198bd551SRob Bradford
643198bd551SRob 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`.
644198bd551SRob Bradford
645198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
646198bd551SRob Bradford
647198bd551SRob 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.
648198bd551SRob Bradford
649198bd551SRob Bradford### Notable Bug Fixes
650198bd551SRob Bradford
651198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
652198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
653198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
654198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
655198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
656198bd551SRob Bradford
657198bd551SRob Bradford### Contributors
658198bd551SRob Bradford
659198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
660198bd551SRob Bradford
661198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
662198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
663198bd551SRob Bradford* Anatol Belski <ab@php.net>
664198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
665198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
666198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
667198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
668198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
669198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
670198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
671198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
672198bd551SRob Bradford
673d714cf81SRob Bradford# v0.9.0
674d714cf81SRob Bradford
675d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
676d714cf81SRob Bradford
677d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
678d714cf81SRob Bradford
679d714cf81SRob Bradford### `io_uring` Based Block Device Support
680d714cf81SRob Bradford
681d714cf81SRob 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.
682d714cf81SRob Bradford
683d714cf81SRob Bradford### Block and Network Device Statistics
684d714cf81SRob Bradford
685d714cf81SRob 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.
686d714cf81SRob Bradford
687d714cf81SRob Bradford### HTTP API Responses
688d714cf81SRob Bradford
689d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
690d714cf81SRob Bradford
691d714cf81SRob Bradford### CPU Topology
692d714cf81SRob Bradford
693d714cf81SRob 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.
694d714cf81SRob Bradford
695d714cf81SRob Bradford### Release Build Optimization
696d714cf81SRob Bradford
697d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
698d714cf81SRob Bradford
699d714cf81SRob Bradford### Hypervisor Abstraction
700d714cf81SRob Bradford
701d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
702d714cf81SRob Bradford
703d714cf81SRob Bradford### Snapshot/Restore Improvements
704d714cf81SRob Bradford
705d714cf81SRob 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.
706d714cf81SRob Bradford
707d714cf81SRob Bradford### Virtio Memory Ballooning Support
708d714cf81SRob Bradford
709d714cf81SRob 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.
710d714cf81SRob Bradford
711d714cf81SRob Bradford### Enhancements to ARM64 Support
712d714cf81SRob Bradford
713d714cf81SRob 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.
714d714cf81SRob Bradford
715d714cf81SRob Bradford### Intel SGX Support
716d714cf81SRob Bradford
717d714cf81SRob 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).
718d714cf81SRob Bradford
719d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
720d714cf81SRob Bradford
721d714cf81SRob 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.
722d714cf81SRob Bradford
723d714cf81SRob Bradford### Notable Bug Fixes
724d714cf81SRob Bradford
725d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
726d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
727d714cf81SRob 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).
728d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
729d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
730d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
731d714cf81SRob Bradford
732d714cf81SRob Bradford### Contributors
733d714cf81SRob Bradford
734d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
735d714cf81SRob Bradford
736d714cf81SRob Bradford* Anatol Belski <ab@php.net>
737d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
738d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
739d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
740d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
741d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
742d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
743d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
744d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
745d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
746d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
747d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
748d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
749d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
750d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
751d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
752d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
753d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
754d714cf81SRob Bradford
755d714cf81SRob Bradford
75652b83969SRob Bradford# v0.8.0
75752b83969SRob Bradford
75852b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
75952b83969SRob Bradford
76052b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
76152b83969SRob Bradford
76252b83969SRob Bradford### Experimental Snapshot and Restore Support
76352b83969SRob Bradford
76452b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
76552b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
76652b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
76752b83969SRob Bradfordoriginal VM at the point it was paused.
76852b83969SRob Bradford
76952b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
77052b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
77152b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
77252b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
77352b83969SRob Bradford(#1176).
77452b83969SRob Bradford
77552b83969SRob Bradford### Experimental ARM64 Support
77652b83969SRob Bradford
77752b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
77852b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
77952b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
78052b83969SRob Bradford
78152b83969SRob Bradford### Support for Using 5-level Paging in Guests
78252b83969SRob Bradford
78352b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
78452b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
78552b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
78652b83969SRob Bradfordwork due to current limitations in the PVH boot process.
78752b83969SRob Bradford
78852b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
78952b83969SRob Bradford
79052b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
79152b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
79252b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
79352b83969SRob Bradfordthe guest must service.
79452b83969SRob Bradford
79552b83969SRob Bradford### `vhost_user_fs` Improvements
79652b83969SRob Bradford
79752b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
79852b83969SRob Bradford
79952b83969SRob Bradford
80052b83969SRob Bradford### Notable Bug Fixes
80152b83969SRob Bradford
80252b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
80352b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
80452b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
80552b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
80652b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
80752b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
80852b83969SRob Bradford  #1216).
80952b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
81052b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
81152b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
81252b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
81352b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
81452b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
81552b83969SRob Bradford  (#751).
81652b83969SRob Bradford
81752b83969SRob Bradford### Command Line and API Changes
81852b83969SRob Bradford
81952b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
82052b83969SRob Bradford
82152b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
82252b83969SRob Bradford  rather than `sock` in some cases.
82352b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
82452b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
82552b83969SRob Bradford  offered for negotiation.
82652b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
82752b83969SRob Bradford  address for the `tap` device on the host.
82852b83969SRob Bradford
82952b83969SRob Bradford### Contributors
83052b83969SRob Bradford
83152b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
83252b83969SRob Bradford
83352b83969SRob Bradford* Anatol Belski <ab@php.net>
83452b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
83552b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
83652b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
83752b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
83852b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
83952b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
84052b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
84152b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
84252b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
84352b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
84452b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
84552b83969SRob Bradford
84696be8229SRob Bradford# v0.7.0
84796be8229SRob Bradford
84896be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
84996be8229SRob Bradford
85096be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
85196be8229SRob Bradford
85296be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
85396be8229SRob Bradford
85496be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
85596be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
85696be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
8575c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
85896be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
85996be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
86096be8229SRob Bradforddevices to ease their removal.
86196be8229SRob Bradford
86296be8229SRob Bradford### Alternative `libc` Support
86396be8229SRob Bradford
86496be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
86596be8229SRob Bradfordcontains a static binary compiled using that toolchain.
86696be8229SRob Bradford
86796be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
86896be8229SRob Bradford
86996be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
87096be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
87196be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
87296be8229SRob Bradfordis passed when the devices are created.
87396be8229SRob Bradford
87496be8229SRob Bradford### Initial RamFS Support
87596be8229SRob Bradford
87696be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
87796be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
87896be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
87996be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
88096be8229SRob Bradfordminimal image.
88196be8229SRob Bradford
88296be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
88396be8229SRob Bradford
88496be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
88596be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
88696be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
88796be8229SRob Bradfordrequires kernel patches to be able to support it.
88896be8229SRob Bradford
88996be8229SRob Bradford### `Seccomp` Sandboxing
89096be8229SRob Bradford
89196be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
89296be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
89396be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
89496be8229SRob Bradford
89596be8229SRob Bradford### Updated Distribution Support
89696be8229SRob Bradford
89796be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
89896be8229SRob Bradforddistributions and is part of our regular testing programme.
89996be8229SRob Bradford
90096be8229SRob Bradford### Command Line and API Changes
90196be8229SRob Bradford
90296be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
90396be8229SRob Bradford
90496be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
90596be8229SRob Bradford  If no name is specified the VMM chooses one.
90696be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
90796be8229SRob Bradford  memory instead of providing a path.
90896be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
90996be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
91096be8229SRob Bradford  option and replaced it with a single optional field.
91196be8229SRob Bradford* There is enhanced validation of the command line and API provided
91296be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
91396be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
91496be8229SRob Bradford  device.
91596be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
91696be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
91796be8229SRob Bradford  has appropriate new HTTP endpoints too.
91896be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
91996be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
92096be8229SRob Bradford  to provide the equivalent of a read-only file.
92196be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
92296be8229SRob Bradford  with those used by `--disk`.
92396be8229SRob Bradford
92496be8229SRob Bradford### Contributors
92596be8229SRob Bradford
92696be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
92796be8229SRob Bradford
92896be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
92996be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
93096be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
93196be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
93296be8229SRob Bradford* Dean Sheather <dean@coder.com>
93396be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
93496be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
93596be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
93696be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
93796be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
93896be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
93996be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
94096be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
94196be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
94296be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
94396be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
94496be8229SRob Bradford
94503cb26ccSSamuel Ortiz# v0.6.0
94603cb26ccSSamuel Ortiz
94703cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
94803cb26ccSSamuel Ortiz
94903cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
95003cb26ccSSamuel Ortiz
95103cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
95203cb26ccSSamuel Ortiz
95303cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
95403cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
95503cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
95603cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
95703cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
95803cb26ccSSamuel Ortiz
95903cb26ccSSamuel Ortiz### Shared Filesystem Improvements
96003cb26ccSSamuel Ortiz
96103cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
96203cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
96303cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
96403cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
96503cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
96603cb26ccSSamuel Ortiz
96703cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
96803cb26ccSSamuel Ortiz
96903cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
97003cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
97103cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
97203cb26ccSSamuel Ortizinto their own, separate processes.
9735c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
97403cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
97503cb26ccSSamuel Ortiz
97603cb26ccSSamuel Ortiz### Command Line Interface
97703cb26ccSSamuel Ortiz
97803cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
97937a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
98037a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
98137a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
98237a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
98337a2c13aSAlyssa Rossis created with each build and available e.g. at
98403cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
98503cb26ccSSamuel Ortiz
98603cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
98703cb26ccSSamuel Ortizcommands.
98803cb26ccSSamuel Ortiz
98903cb26ccSSamuel Ortiz### PVH Boot
99003cb26ccSSamuel Ortiz
99103cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
99203cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
99303cb26ccSSamuel Ortiz
99403cb26ccSSamuel Ortiz### Contributors
99503cb26ccSSamuel Ortiz
99603cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
99703cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
99803cb26ccSSamuel Ortiz
99903cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
100003cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
100103cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
100203cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
100303cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
100403cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
100503cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
100603cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
100703cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
100803cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
100903cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
101003cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
101103cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
101203cb26ccSSamuel Ortiz
101394f2fc33SRob Bradford# v0.5.1
101494f2fc33SRob Bradford
101594f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
101694f2fc33SRob Bradford
101794f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
101894f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
101994f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
102094f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
102194f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
10228e8a7b6dSSamuel Ortiz
10232f395e60SSamuel Ortiz# v0.5.0
10242f395e60SSamuel Ortiz
10252f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
10262f395e60SSamuel Ortiz
10272f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
10282f395e60SSamuel Ortiz
10292f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
10302f395e60SSamuel Ortiz
10312f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
10322f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
10332f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
10342f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
10352f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
10362f395e60SSamuel Ortiz
10372f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
10382f395e60SSamuel Ortiz
10392f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
10402f395e60SSamuel Ortiz
10412f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
10422f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
10432f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
10442f395e60SSamuel Ortiz
10452f395e60SSamuel Ortiz### New Interrupt Management Framework
10462f395e60SSamuel Ortiz
10472f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
10482f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
10492f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
10502f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
10512f395e60SSamuel Ortizvirtio ones.
10522f395e60SSamuel Ortiz
10532f395e60SSamuel Ortiz### Development Tools
10542f395e60SSamuel Ortiz
10552f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
10562f395e60SSamuel Ortizbuild, development and testing tools.
10572f395e60SSamuel OrtizSomehow similar to the excellent
10582f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
105937a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
10602f395e60SSamuel Ortiz
10612f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
10622f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
10632f395e60SSamuel Ortiz
10642f395e60SSamuel Ortiz### Kata Containers Integration
10652f395e60SSamuel Ortiz
10662f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
10672f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
10682f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
10692f395e60SSamuel Ortizintegrated into the project's CI.
10702f395e60SSamuel Ortiz
10712f395e60SSamuel Ortiz### Contributors
10722f395e60SSamuel Ortiz
10732f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
10742f395e60SSamuel Ortiz
10752f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
10762f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
10772f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
10782f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
10792f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
10802f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
10812f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
10822f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
10832f395e60SSamuel Ortiz
1084cec884e8SSamuel Ortiz# v0.4.0
1085cec884e8SSamuel Ortiz
1086cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
1087cec884e8SSamuel Ortiz
1088cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
1089cec884e8SSamuel Ortiz
1090cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
1091cec884e8SSamuel Ortiz
1092cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
1093cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
1094cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
1095cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
109637a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
1097cec884e8SSamuel Ortiz
1098cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
1099cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
1100cec884e8SSamuel Ortiz
1101cec884e8SSamuel Ortiz### Programmatic firmware tables generation
1102cec884e8SSamuel Ortiz
1103cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
1104cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
1105cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
1106cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
1107cec884e8SSamuel Ortiztables based on the VMM device model and topology.
1108cec884e8SSamuel Ortiz
1109cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
1110cec884e8SSamuel Ortiz
1111cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
1112cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
1113cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
1114cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
1115cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
1116cec884e8SSamuel Ortiz
1117cec884e8SSamuel Ortiz### Guest pause and resume
1118cec884e8SSamuel Ortiz
11195c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
1120cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
1121cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
1122cec884e8SSamuel Ortizand resume capabilities.
1123cec884e8SSamuel Ortiz
1124cec884e8SSamuel Ortiz### Userspace IOAPIC by default
1125cec884e8SSamuel Ortiz
1126cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
1127cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
1128cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
1129cec884e8SSamuel Ortizdefault.
1130cec884e8SSamuel Ortiz
1131cec884e8SSamuel Ortiz### PCI BAR reprogramming
1132cec884e8SSamuel Ortiz
1133cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
1134cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
1135cec884e8SSamuel Ortizreprogramming.
1136cec884e8SSamuel Ortiz
1137cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
1138cec884e8SSamuel Ortiz
1139cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1140cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1141cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1142cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1143cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1144cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
1145cec884e8SSamuel Ortiztemporarily fork.
1146cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
1147cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
1148cec884e8SSamuel Ortiz
1149cec884e8SSamuel Ortiz### Contributors
1150cec884e8SSamuel Ortiz
1151cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
1152cec884e8SSamuel Ortiz
1153cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
1154cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
1155cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1156cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1157cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
1158cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
1159cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
1160cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
1161cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
1162cec884e8SSamuel Ortiz
11638e8a7b6dSSamuel Ortiz# v0.3.0
11648e8a7b6dSSamuel Ortiz
11658ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
11668e8a7b6dSSamuel Ortiz
11678e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
11688e8a7b6dSSamuel Ortiz
11698e8a7b6dSSamuel Ortiz### Block device offloading
11708e8a7b6dSSamuel Ortiz
11718e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
11728e8a7b6dSSamuel Ortizand we added support for
11738e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
11748e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
11758e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
11768e8a7b6dSSamuel Ortizbackend.
11778e8a7b6dSSamuel Ortiz
11788e8a7b6dSSamuel Ortiz### Network device backend
11798e8a7b6dSSamuel Ortiz
11808e8a7b6dSSamuel OrtizThe previous release provided support for
11818e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
11828e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
11838e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
11848e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
11858e8a7b6dSSamuel Ortiz
11868e8a7b6dSSamuel Ortiz### Virtual sockets
11878e8a7b6dSSamuel Ortiz
11888e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
11898e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
11908e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
11918e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
11928e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
11938e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
11948e8a7b6dSSamuel Ortiz
11958e8a7b6dSSamuel Ortiz### HTTP based API
11968e8a7b6dSSamuel Ortiz
11978e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
11988e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
11998e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
12008e8a7b6dSSamuel Ortiznext release cycle.
12018e8a7b6dSSamuel Ortiz
12028e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
12038e8a7b6dSSamuel Ortiz
12048e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
12058e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
12068e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
12078e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
12088e8a7b6dSSamuel Ortiz
12098e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
12108e8a7b6dSSamuel Ortiz
12118e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
121237a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
121337a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
12148e8a7b6dSSamuel Ortiz
12158e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
12168e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
12178e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
12188e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
12198e8a7b6dSSamuel Ortizsetting.
12208e8a7b6dSSamuel Ortiz
12218e8a7b6dSSamuel Ortiz### Ubuntu 19.10
12228e8a7b6dSSamuel Ortiz
12238ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
12248e8a7b6dSSamuel Ortizwe can now support the latest
12258e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
12268e8a7b6dSSamuel Ortiz
12278e8a7b6dSSamuel Ortiz### Large memory guests
12288e8a7b6dSSamuel Ortiz
12298e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
12308e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
12317688e6e2SSamuel Ortiz
1232d784ac29SSamuel Ortiz# v0.2.0
1233d784ac29SSamuel Ortiz
12348ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1235d784ac29SSamuel Ortiz
1236d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1237d784ac29SSamuel Ortiz
1238d784ac29SSamuel Ortiz### Network device offloading
1239d784ac29SSamuel Ortiz
1240d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1241d784ac29SSamuel Ortizprocesses, we added support for
1242d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1243d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1244d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1245d784ac29SSamuel Ortiz
1246d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1247d784ac29SSamuel Ortiz
1248d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1249d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1250d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1251d784ac29SSamuel Ortizcleanly reboot and shutdown.
1252d784ac29SSamuel Ortiz
1253d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1254d784ac29SSamuel Ortizenabled by default.
1255d784ac29SSamuel Ortiz
1256d784ac29SSamuel Ortiz### Debug I/O port
1257d784ac29SSamuel Ortiz
1258d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1259d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1260d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1261d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
126237a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
126337a2c13aSAlyssa Rossdetails.
1264d784ac29SSamuel Ortiz
1265d784ac29SSamuel Ortiz### Improved direct device assignment
1266d784ac29SSamuel Ortiz
1267d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1268d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1269d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1270d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1271d784ac29SSamuel Ortizdirectly assigned devices.
1272d784ac29SSamuel Ortiz
1273d784ac29SSamuel Ortiz### Improved shared filesystem
1274d784ac29SSamuel Ortiz
1275d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1276d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1277d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1278d784ac29SSamuel Ortizmemory footprint.
1279d784ac29SSamuel Ortiz
1280d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1281d784ac29SSamuel Ortiz
12828ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1283d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1284d784ac29SSamuel Ortizour CI pipeline.
1285d784ac29SSamuel Ortiz
128693b77530SSamuel Ortiz# v0.1.0
128793b77530SSamuel Ortiz
12888ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
128993b77530SSamuel Ortiz
129093b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
129193b77530SSamuel Ortiz
129293b77530SSamuel Ortiz### Shared filesystem
129393b77530SSamuel Ortiz
129493b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
129593b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
129693b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
129793b77530SSamuel Ortiz
129837a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
129937a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
130093b77530SSamuel Ortiz
130193b77530SSamuel Ortiz### Initial direct device assignment support
130293b77530SSamuel Ortiz
130393b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
130493b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
130593b77530SSamuel Ortizphysical devices into its guest.
130693b77530SSamuel Ortiz
130737a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
130837a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
130993b77530SSamuel Ortiz
131093b77530SSamuel Ortiz### Userspace IOAPIC
131193b77530SSamuel Ortiz
131293b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
131393b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
131493b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
131593b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
131693b77530SSamuel Ortiz
131793b77530SSamuel Ortiz### Virtual persistent memory
131893b77530SSamuel Ortiz
131993b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
132093b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
132193b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
132293b77530SSamuel Ortiz
132393b77530SSamuel Ortiz### Linux kernel bzImage
132493b77530SSamuel Ortiz
132593b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
132693b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
132793b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
132893b77530SSamuel Ortizdistribution kernel image.
132993b77530SSamuel Ortiz
133093b77530SSamuel Ortiz### Console over virtio
133193b77530SSamuel Ortiz
133293b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
133393b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
133493b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
133593b77530SSamuel Ortizimplementation.
133693b77530SSamuel Ortiz
133793b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
133893b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
133993b77530SSamuel Ortiz`--serial tty --console off` from the command line.
134093b77530SSamuel Ortiz
134193b77530SSamuel Ortiz### Unit testing
134293b77530SSamuel Ortiz
134393b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
134493b77530SSamuel Ortiz
134593b77530SSamuel Ortiz### Integration tests parallelization
134693b77530SSamuel Ortiz
134793b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
134893b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1349