xref: /cloud-hypervisor/release-notes.md (revision f58b6f8417c5355e40589974742d946aa7ec4517)
1*f58b6f84SRob Bradford- [v0.13.0](#v0130)
2*f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
3*f58b6f84SRob Bradford    - [Improve huge page support](#improve-huge-page-support)
4*f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
5*f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
6*f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
7*f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
8*f58b6f84SRob Bradford    - [Contributors](#contributors)
9d42b5084SRob Bradford- [v0.12.0](#v0120)
10d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
11d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
12d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
13d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
14*f58b6f84SRob Bradford    - [Contributors](#contributors-1)
157dcd3affSRob Bradford- [v0.11.0](#v0110)
167dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
177dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
187dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
197dcd3affSRob Bradford    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
207dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
217dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
227dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
237dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
247dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
257dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
267dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes)
27*f58b6f84SRob Bradford    - [Contributors](#contributors-2)
28198bd551SRob Bradford- [v0.10.0](#v0100)
29198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
30198bd551SRob Bradford    - [Memory Zones](#memory-zones)
31198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
32198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
337dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-1)
34*f58b6f84SRob Bradford    - [Contributors](#contributors-3)
35d714cf81SRob Bradford- [v0.9.0](#v090)
36d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
37d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
38d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
39d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
40d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
41d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
42d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
43d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
44d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
45d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
46198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
477dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-2)
48*f58b6f84SRob Bradford    - [Contributors](#contributors-4)
49d714cf81SRob Bradford- [v0.8.0](#v080)
50d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
51d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
52d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
53d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
54d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
557dcd3affSRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-3)
56d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
57*f58b6f84SRob Bradford    - [Contributors](#contributors-5)
5896be8229SRob Bradford- [v0.7.0](#v070)
5996be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
6096be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
6196be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
6296be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
6396be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
6496be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
6596be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
6652b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
67*f58b6f84SRob Bradford    - [Contributors](#contributors-6)
6803cb26ccSSamuel Ortiz- [v0.6.0](#v060)
6903cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
7003cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
7103cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
7203cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
7303cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
74*f58b6f84SRob Bradford    - [Contributors](#contributors-7)
7594f2fc33SRob Bradford- [v0.5.1](#v051)
762f395e60SSamuel Ortiz- [v0.5.0](#v050)
7794f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
7894f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
7994f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
8094f2fc33SRob Bradford    - [Development Tools](#development-tools)
8194f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
82*f58b6f84SRob Bradford    - [Contributors](#contributors-8)
83cec884e8SSamuel Ortiz- [v0.4.0](#v040)
8494f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
8594f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
8694f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
8794f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
8894f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
8994f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
9094f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
91*f58b6f84SRob Bradford    - [Contributors](#contributors-9)
928e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
9394f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
9494f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
9594f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
9694f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
9794f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
9894f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
9994f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
10094f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1017688e6e2SSamuel Ortiz- [v0.2.0](#v020)
10294f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
10394f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
10494f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
10594f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
10694f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
10794f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1087688e6e2SSamuel Ortiz- [v0.1.0](#v010)
10994f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
11094f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
11194f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
11294f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
11394f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
11494f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
11594f2fc33SRob Bradford    - [Unit testing](#unit-testing)
11694f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
11794f2fc33SRob Bradford
118*f58b6f84SRob Bradford# v0.13.0
119*f58b6f84SRob Bradford
120*f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
121*f58b6f84SRob Bradford
122*f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
123*f58b6f84SRob Bradford
124*f58b6f84SRob Bradford### Wider VFIO device support
125*f58b6f84SRob Bradford
126*f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
127*f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
128*f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
129*f58b6f84SRob Bradforddrivers.
130*f58b6f84SRob Bradford
131*f58b6f84SRob Bradford### Improve huge page support
132*f58b6f84SRob Bradford
133*f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
134*f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
135*f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
136*f58b6f84SRob Bradforddesired size in their pool.
137*f58b6f84SRob Bradford
138*f58b6f84SRob Bradford### MACvTAP support
139*f58b6f84SRob Bradford
140*f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
141*f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
142*f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
143*f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
144*f58b6f84SRob Bradford
145*f58b6f84SRob Bradford### VHD disk image support
146*f58b6f84SRob Bradford
147*f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
148*f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
149*f58b6f84SRob Bradford
150*f58b6f84SRob Bradford### Improved Virtio device threading
151*f58b6f84SRob Bradford
152*f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
153*f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
154*f58b6f84SRob Bradfordpredictable name derived from the device id.
155*f58b6f84SRob Bradford
156*f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
157*f58b6f84SRob Bradford
158*f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
159*f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
160*f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
161*f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
162*f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
163*f58b6f84SRob Bradford
164*f58b6f84SRob Bradford### Contributors
165*f58b6f84SRob Bradford
166*f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
167*f58b6f84SRob Bradfordsome new faces.
168*f58b6f84SRob Bradford
169*f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
170*f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
171*f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
172*f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
173*f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
174*f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
175*f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
176*f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
177*f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
178*f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
179*f58b6f84SRob Bradford
180d42b5084SRob Bradford# v0.12.0
181d42b5084SRob Bradford
182d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
183d42b5084SRob Bradford
184d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
185d42b5084SRob Bradford
186d42b5084SRob Bradford### ARM64 enhancements
187d42b5084SRob Bradford
188d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
189d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
190d42b5084SRob Bradford
191d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
192d42b5084SRob Bradford
193d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
194d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
195d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
196d42b5084SRob Bradfordremoved.
197d42b5084SRob Bradford
198d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
199d42b5084SRob Bradford
200d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
201d42b5084SRob Bradfordinstead hosted in [it's own
202d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
203d42b5084SRob Bradford
204d42b5084SRob Bradford### Enhanced "info" API
205d42b5084SRob Bradford
206d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
207d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
208d42b5084SRob Bradford
209d42b5084SRob Bradford### Contributors
210d42b5084SRob Bradford
211d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
212d42b5084SRob Bradford
213d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
214d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
215d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
216d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
217d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
218d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
219d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
220d42b5084SRob Bradford
2217dcd3affSRob Bradford# v0.11.0
2227dcd3affSRob Bradford
2237dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
2247dcd3affSRob Bradford
2257dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
2267dcd3affSRob Bradford
2277dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
2287dcd3affSRob Bradford
2297dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
2307dcd3affSRob Bradfordbe used for a significantly higher performance block device.
2317dcd3affSRob Bradford
2327dcd3affSRob Bradford### Windows Guest Support
2337dcd3affSRob Bradford
2347dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
2357dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
2367dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
2377dcd3affSRob Bradforddocumentation](docs/windows.md).
2387dcd3affSRob Bradford
2397dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
2407dcd3affSRob Bradford
2417dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
2427dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
2437dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
2447dcd3affSRob Bradford
2457dcd3affSRob Bradford### `virtio-mmmio` Removal
2467dcd3affSRob Bradford
2477dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
2487dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
2497dcd3affSRob Bradfordreduce the testing burden of the project.
2507dcd3affSRob Bradford
2517dcd3affSRob Bradford### Snapshot/Restore support for ARM64
2527dcd3affSRob Bradford
2537dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
2547dcd3affSRob Bradfordimplemented.
2557dcd3affSRob Bradford
2567dcd3affSRob Bradford### Improved Linux Boot Time
2577dcd3affSRob Bradford
2587dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
2597dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
2607dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
2617dcd3affSRob Bradford
2627dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
2637dcd3affSRob Bradford
2647dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
2657dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
2667dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
2677dcd3affSRob Bradfordresources.
2687dcd3affSRob Bradford
2697dcd3affSRob Bradford### Default Log Level Changed
2707dcd3affSRob Bradford
2717dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
2727dcd3affSRob Bradfordeasier to see potential issues. New [logging
2737dcd3affSRob Bradforddocumentation](docs/logging) was also added.
2747dcd3affSRob Bradford
2757dcd3affSRob Bradford### New `--balloon` Parameter Added
2767dcd3affSRob Bradford
2777dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
2787dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
2797dcd3affSRob Bradfordcontrols without overloading `--memory`.
2807dcd3affSRob Bradford
2817dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
2827dcd3affSRob Bradford
2837dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
2847dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
2857dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
2867dcd3affSRob Bradford
2877dcd3affSRob Bradford### Notable Bug Fixes
2887dcd3affSRob Bradford
2897dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
2907dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
2917dcd3affSRob Bradford* CPU identification string is now exposed to the guest
2927dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
2937dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
2947dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
2957dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
2967dcd3affSRob Bradford  can be used (#1803)
2977dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
2987dcd3affSRob Bradford  correctly
2997dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
3007dcd3affSRob Bradford  correctly
3017dcd3affSRob Bradford
3027dcd3affSRob Bradford### Contributors
3037dcd3affSRob Bradford
3047dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
3057dcd3affSRob Bradford
3067dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
3077dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
3087dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
3097dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
3107dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
3117dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
3127dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
3137dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
3147dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
3157dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
3167dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
3177dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
3187dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
3197dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
3207dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
3217dcd3affSRob Bradford
3227dcd3affSRob Bradford
323198bd551SRob Bradford# v0.10.0
324198bd551SRob Bradford
325198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
326198bd551SRob Bradford
327198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
328198bd551SRob Bradford
329198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
330198bd551SRob Bradford
331198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
332198bd551SRob Bradford
333198bd551SRob Bradford### Memory Zones
334198bd551SRob Bradford
335198bd551SRob 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).
336198bd551SRob Bradford
337198bd551SRob Bradford### `Seccomp` Sandbox Improvements
338198bd551SRob Bradford
339198bd551SRob 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`.
340198bd551SRob Bradford
341198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
342198bd551SRob Bradford
343198bd551SRob 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.
344198bd551SRob Bradford
345198bd551SRob Bradford### Notable Bug Fixes
346198bd551SRob Bradford
347198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
348198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
349198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
350198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
351198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
352198bd551SRob Bradford
353198bd551SRob Bradford### Contributors
354198bd551SRob Bradford
355198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
356198bd551SRob Bradford
357198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
358198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
359198bd551SRob Bradford* Anatol Belski <ab@php.net>
360198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
361198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
362198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
363198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
364198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
365198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
366198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
367198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
368198bd551SRob Bradford
369d714cf81SRob Bradford# v0.9.0
370d714cf81SRob Bradford
371d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
372d714cf81SRob Bradford
373d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
374d714cf81SRob Bradford
375d714cf81SRob Bradford### `io_uring` Based Block Device Support
376d714cf81SRob Bradford
377d714cf81SRob 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.
378d714cf81SRob Bradford
379d714cf81SRob Bradford### Block and Network Device Statistics
380d714cf81SRob Bradford
381d714cf81SRob 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.
382d714cf81SRob Bradford
383d714cf81SRob Bradford### HTTP API Responses
384d714cf81SRob Bradford
385d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
386d714cf81SRob Bradford
387d714cf81SRob Bradford### CPU Topology
388d714cf81SRob Bradford
389d714cf81SRob 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.
390d714cf81SRob Bradford
391d714cf81SRob Bradford### Release Build Optimization
392d714cf81SRob Bradford
393d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
394d714cf81SRob Bradford
395d714cf81SRob Bradford### Hypervisor Abstraction
396d714cf81SRob Bradford
397d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
398d714cf81SRob Bradford
399d714cf81SRob Bradford### Snapshot/Restore Improvements
400d714cf81SRob Bradford
401d714cf81SRob 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.
402d714cf81SRob Bradford
403d714cf81SRob Bradford### Virtio Memory Ballooning Support
404d714cf81SRob Bradford
405d714cf81SRob 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.
406d714cf81SRob Bradford
407d714cf81SRob Bradford### Enhancements to ARM64 Support
408d714cf81SRob Bradford
409d714cf81SRob 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.
410d714cf81SRob Bradford
411d714cf81SRob Bradford### Intel SGX Support
412d714cf81SRob Bradford
413d714cf81SRob 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).
414d714cf81SRob Bradford
415d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
416d714cf81SRob Bradford
417d714cf81SRob 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.
418d714cf81SRob Bradford
419d714cf81SRob Bradford### Notable Bug Fixes
420d714cf81SRob Bradford
421d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
422d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
423d714cf81SRob 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).
424d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
425d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
426d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
427d714cf81SRob Bradford
428d714cf81SRob Bradford### Contributors
429d714cf81SRob Bradford
430d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
431d714cf81SRob Bradford
432d714cf81SRob Bradford* Anatol Belski <ab@php.net>
433d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
434d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
435d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
436d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
437d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
438d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
439d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
440d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
441d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
442d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
443d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
444d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
445d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
446d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
447d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
448d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
449d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
450d714cf81SRob Bradford
451d714cf81SRob Bradford
45252b83969SRob Bradford# v0.8.0
45352b83969SRob Bradford
45452b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
45552b83969SRob Bradford
45652b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
45752b83969SRob Bradford
45852b83969SRob Bradford### Experimental Snapshot and Restore Support
45952b83969SRob Bradford
46052b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
46152b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
46252b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
46352b83969SRob Bradfordoriginal VM at the point it was paused.
46452b83969SRob Bradford
46552b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
46652b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
46752b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
46852b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
46952b83969SRob Bradford(#1176).
47052b83969SRob Bradford
47152b83969SRob Bradford### Experimental ARM64 Support
47252b83969SRob Bradford
47352b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
47452b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
47552b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
47652b83969SRob Bradford
47752b83969SRob Bradford### Support for Using 5-level Paging in Guests
47852b83969SRob Bradford
47952b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
48052b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
48152b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
48252b83969SRob Bradfordwork due to current limitations in the PVH boot process.
48352b83969SRob Bradford
48452b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
48552b83969SRob Bradford
48652b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
48752b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
48852b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
48952b83969SRob Bradfordthe guest must service.
49052b83969SRob Bradford
49152b83969SRob Bradford### `vhost_user_fs` Improvements
49252b83969SRob Bradford
49352b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
49452b83969SRob Bradford
49552b83969SRob Bradford
49652b83969SRob Bradford### Notable Bug Fixes
49752b83969SRob Bradford
49852b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
49952b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
50052b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
50152b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
50252b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
50352b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
50452b83969SRob Bradford  #1216).
50552b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
50652b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
50752b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
50852b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
50952b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
51052b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
51152b83969SRob Bradford  (#751).
51252b83969SRob Bradford
51352b83969SRob Bradford### Command Line and API Changes
51452b83969SRob Bradford
51552b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
51652b83969SRob Bradford
51752b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
51852b83969SRob Bradford  rather than `sock` in some cases.
51952b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
52052b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
52152b83969SRob Bradford  offered for negotiation.
52252b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
52352b83969SRob Bradford  address for the `tap` device on the host.
52452b83969SRob Bradford
52552b83969SRob Bradford### Contributors
52652b83969SRob Bradford
52752b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
52852b83969SRob Bradford
52952b83969SRob Bradford* Anatol Belski <ab@php.net>
53052b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
53152b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
53252b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
53352b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
53452b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
53552b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
53652b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
53752b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
53852b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
53952b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
54052b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
54152b83969SRob Bradford
54296be8229SRob Bradford# v0.7.0
54396be8229SRob Bradford
54496be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
54596be8229SRob Bradford
54696be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
54796be8229SRob Bradford
54896be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
54996be8229SRob Bradford
55096be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
55196be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
55296be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
5535c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
55496be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
55596be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
55696be8229SRob Bradforddevices to ease their removal.
55796be8229SRob Bradford
55896be8229SRob Bradford### Alternative `libc` Support
55996be8229SRob Bradford
56096be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
56196be8229SRob Bradfordcontains a static binary compiled using that toolchain.
56296be8229SRob Bradford
56396be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
56496be8229SRob Bradford
56596be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
56696be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
56796be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
56896be8229SRob Bradfordis passed when the devices are created.
56996be8229SRob Bradford
57096be8229SRob Bradford### Initial RamFS Support
57196be8229SRob Bradford
57296be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
57396be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
57496be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
57596be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
57696be8229SRob Bradfordminimal image.
57796be8229SRob Bradford
57896be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
57996be8229SRob Bradford
58096be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
58196be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
58296be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
58396be8229SRob Bradfordrequires kernel patches to be able to support it.
58496be8229SRob Bradford
58596be8229SRob Bradford### `Seccomp` Sandboxing
58696be8229SRob Bradford
58796be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
58896be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
58996be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
59096be8229SRob Bradford
59196be8229SRob Bradford### Updated Distribution Support
59296be8229SRob Bradford
59396be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
59496be8229SRob Bradforddistributions and is part of our regular testing programme.
59596be8229SRob Bradford
59696be8229SRob Bradford### Command Line and API Changes
59796be8229SRob Bradford
59896be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
59996be8229SRob Bradford
60096be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
60196be8229SRob Bradford  If no name is specified the VMM chooses one.
60296be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
60396be8229SRob Bradford  memory instead of providing a path.
60496be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
60596be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
60696be8229SRob Bradford  option and replaced it with a single optional field.
60796be8229SRob Bradford* There is enhanced validation of the command line and API provided
60896be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
60996be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
61096be8229SRob Bradford  device.
61196be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
61296be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
61396be8229SRob Bradford  has appropriate new HTTP endpoints too.
61496be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
61596be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
61696be8229SRob Bradford  to provide the equivalent of a read-only file.
61796be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
61896be8229SRob Bradford  with those used by `--disk`.
61996be8229SRob Bradford
62096be8229SRob Bradford### Contributors
62196be8229SRob Bradford
62296be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
62396be8229SRob Bradford
62496be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
62596be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
62696be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
62796be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
62896be8229SRob Bradford* Dean Sheather <dean@coder.com>
62996be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
63096be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
63196be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
63296be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
63396be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
63496be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
63596be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
63696be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
63796be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
63896be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
63996be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
64096be8229SRob Bradford
64103cb26ccSSamuel Ortiz# v0.6.0
64203cb26ccSSamuel Ortiz
64303cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
64403cb26ccSSamuel Ortiz
64503cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
64603cb26ccSSamuel Ortiz
64703cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
64803cb26ccSSamuel Ortiz
64903cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
65003cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
65103cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
65203cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
65303cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
65403cb26ccSSamuel Ortiz
65503cb26ccSSamuel Ortiz### Shared Filesystem Improvements
65603cb26ccSSamuel Ortiz
65703cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
65803cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
65903cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
66003cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
66103cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
66203cb26ccSSamuel Ortiz
66303cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
66403cb26ccSSamuel Ortiz
66503cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
66603cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
66703cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
66803cb26ccSSamuel Ortizinto their own, separate processes.
6695c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
67003cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
67103cb26ccSSamuel Ortiz
67203cb26ccSSamuel Ortiz### Command Line Interface
67303cb26ccSSamuel Ortiz
67403cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
67503cb26ccSSamuel Ortiz[Rest API](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml)
67603cb26ccSSamuel Ortizand thus only accessible via relatively cumbersome HTTP calls. In order
67703cb26ccSSamuel Ortizto abstract those calls into a more user friendly tool, we created a Cloud
67803cb26ccSSamuel OrtizHypervisor Command Line Interface (CLI) called `ch-remote`.
67903cb26ccSSamuel OrtizThe `ch-remote` binary is created with each build and available e.g. at
68003cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
68103cb26ccSSamuel Ortiz
68203cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
68303cb26ccSSamuel Ortizcommands.
68403cb26ccSSamuel Ortiz
68503cb26ccSSamuel Ortiz### PVH Boot
68603cb26ccSSamuel Ortiz
68703cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
68803cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
68903cb26ccSSamuel Ortiz
69003cb26ccSSamuel Ortiz### Contributors
69103cb26ccSSamuel Ortiz
69203cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
69303cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
69403cb26ccSSamuel Ortiz
69503cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
69603cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
69703cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
69803cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
69903cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
70003cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
70103cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
70203cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
70303cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
70403cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
70503cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
70603cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
70703cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
70803cb26ccSSamuel Ortiz
70994f2fc33SRob Bradford# v0.5.1
71094f2fc33SRob Bradford
71194f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
71294f2fc33SRob Bradford
71394f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
71494f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
71594f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
71694f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
71794f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
7188e8a7b6dSSamuel Ortiz
7192f395e60SSamuel Ortiz# v0.5.0
7202f395e60SSamuel Ortiz
7212f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
7222f395e60SSamuel Ortiz
7232f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
7242f395e60SSamuel Ortiz
7252f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
7262f395e60SSamuel Ortiz
7272f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
7282f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
7292f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
7302f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
7312f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
7322f395e60SSamuel Ortiz
7332f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
7342f395e60SSamuel Ortiz
7352f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
7362f395e60SSamuel Ortiz
7372f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
7382f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
7392f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
7402f395e60SSamuel Ortiz
7412f395e60SSamuel Ortiz### New Interrupt Management Framework
7422f395e60SSamuel Ortiz
7432f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
7442f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
7452f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
7462f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
7472f395e60SSamuel Ortizvirtio ones.
7482f395e60SSamuel Ortiz
7492f395e60SSamuel Ortiz### Development Tools
7502f395e60SSamuel Ortiz
7512f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
7522f395e60SSamuel Ortizbuild, development and testing tools.
7532f395e60SSamuel OrtizSomehow similar to the excellent
7542f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
7552f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh).
7562f395e60SSamuel Ortiz
7572f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
7582f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
7592f395e60SSamuel Ortiz
7602f395e60SSamuel Ortiz### Kata Containers Integration
7612f395e60SSamuel Ortiz
7622f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
7632f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
7642f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
7652f395e60SSamuel Ortizintegrated into the project's CI.
7662f395e60SSamuel Ortiz
7672f395e60SSamuel Ortiz### Contributors
7682f395e60SSamuel Ortiz
7692f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
7702f395e60SSamuel Ortiz
7712f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
7722f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
7732f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
7742f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
7752f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
7762f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
7772f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
7782f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
7792f395e60SSamuel Ortiz
780cec884e8SSamuel Ortiz# v0.4.0
781cec884e8SSamuel Ortiz
782cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
783cec884e8SSamuel Ortiz
784cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
785cec884e8SSamuel Ortiz
786cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
787cec884e8SSamuel Ortiz
788cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
789cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
790cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
791cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
792cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md)
793cec884e8SSamuel Ortiz
794cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
795cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
796cec884e8SSamuel Ortiz
797cec884e8SSamuel Ortiz### Programmatic firmware tables generation
798cec884e8SSamuel Ortiz
799cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
800cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
801cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
802cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
803cec884e8SSamuel Ortiztables based on the VMM device model and topology.
804cec884e8SSamuel Ortiz
805cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
806cec884e8SSamuel Ortiz
807cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
808cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
809cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
810cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
811cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
812cec884e8SSamuel Ortiz
813cec884e8SSamuel Ortiz### Guest pause and resume
814cec884e8SSamuel Ortiz
8155c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
816cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
817cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
818cec884e8SSamuel Ortizand resume capabilities.
819cec884e8SSamuel Ortiz
820cec884e8SSamuel Ortiz### Userspace IOAPIC by default
821cec884e8SSamuel Ortiz
822cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
823cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
824cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
825cec884e8SSamuel Ortizdefault.
826cec884e8SSamuel Ortiz
827cec884e8SSamuel Ortiz### PCI BAR reprogramming
828cec884e8SSamuel Ortiz
829cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
830cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
831cec884e8SSamuel Ortizreprogramming.
832cec884e8SSamuel Ortiz
833cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
834cec884e8SSamuel Ortiz
835cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
836cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
837cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
838cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
839cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
840cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
841cec884e8SSamuel Ortiztemporarily fork.
842cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
843cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
844cec884e8SSamuel Ortiz
845cec884e8SSamuel Ortiz### Contributors
846cec884e8SSamuel Ortiz
847cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
848cec884e8SSamuel Ortiz
849cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
850cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
851cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
852cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
853cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
854cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
855cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
856cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
857cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
858cec884e8SSamuel Ortiz
8598e8a7b6dSSamuel Ortiz# v0.3.0
8608e8a7b6dSSamuel Ortiz
8618ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
8628e8a7b6dSSamuel Ortiz
8638e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
8648e8a7b6dSSamuel Ortiz
8658e8a7b6dSSamuel Ortiz### Block device offloading
8668e8a7b6dSSamuel Ortiz
8678e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
8688e8a7b6dSSamuel Ortizand we added support for
8698e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
8708e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
8718e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
8728e8a7b6dSSamuel Ortizbackend.
8738e8a7b6dSSamuel Ortiz
8748e8a7b6dSSamuel Ortiz### Network device backend
8758e8a7b6dSSamuel Ortiz
8768e8a7b6dSSamuel OrtizThe previous release provided support for
8778e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
8788e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
8798e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
8808e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
8818e8a7b6dSSamuel Ortiz
8828e8a7b6dSSamuel Ortiz### Virtual sockets
8838e8a7b6dSSamuel Ortiz
8848e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
8858e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
8868e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
8878e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
8888e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
8898e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
8908e8a7b6dSSamuel Ortiz
8918e8a7b6dSSamuel Ortiz### HTTP based API
8928e8a7b6dSSamuel Ortiz
8938e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
8948e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
8958e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
8968e8a7b6dSSamuel Ortiznext release cycle.
8978e8a7b6dSSamuel Ortiz
8988e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
8998e8a7b6dSSamuel Ortiz
9008e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
9018e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
9028e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
9038e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
9048e8a7b6dSSamuel Ortiz
9058e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
9068e8a7b6dSSamuel Ortiz
9078e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
9088ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md)
9098e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly
9108e8a7b6dSSamuel Ortizassigned devices support.
9118e8a7b6dSSamuel Ortiz
9128e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
9138e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
9148e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
9158e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
9168e8a7b6dSSamuel Ortizsetting.
9178e8a7b6dSSamuel Ortiz
9188e8a7b6dSSamuel Ortiz### Ubuntu 19.10
9198e8a7b6dSSamuel Ortiz
9208ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
9218e8a7b6dSSamuel Ortizwe can now support the latest
9228e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
9238e8a7b6dSSamuel Ortiz
9248e8a7b6dSSamuel Ortiz### Large memory guests
9258e8a7b6dSSamuel Ortiz
9268e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
9278e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
9287688e6e2SSamuel Ortiz
929d784ac29SSamuel Ortiz# v0.2.0
930d784ac29SSamuel Ortiz
9318ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
932d784ac29SSamuel Ortiz
933d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
934d784ac29SSamuel Ortiz
935d784ac29SSamuel Ortiz### Network device offloading
936d784ac29SSamuel Ortiz
937d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
938d784ac29SSamuel Ortizprocesses, we added support for
939d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
940d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
941d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
942d784ac29SSamuel Ortiz
943d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
944d784ac29SSamuel Ortiz
945d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
946d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
947d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
948d784ac29SSamuel Ortizcleanly reboot and shutdown.
949d784ac29SSamuel Ortiz
950d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
951d784ac29SSamuel Ortizenabled by default.
952d784ac29SSamuel Ortiz
953d784ac29SSamuel Ortiz### Debug I/O port
954d784ac29SSamuel Ortiz
955d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
956d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
957d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
958d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
9598ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md)
960d784ac29SSamuel Ortizfor more details.
961d784ac29SSamuel Ortiz
962d784ac29SSamuel Ortiz### Improved direct device assignment
963d784ac29SSamuel Ortiz
964d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
965d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
966d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
967d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
968d784ac29SSamuel Ortizdirectly assigned devices.
969d784ac29SSamuel Ortiz
970d784ac29SSamuel Ortiz### Improved shared filesystem
971d784ac29SSamuel Ortiz
972d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
973d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
974d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
975d784ac29SSamuel Ortizmemory footprint.
976d784ac29SSamuel Ortiz
977d784ac29SSamuel Ortiz### Ubuntu bionic based CI
978d784ac29SSamuel Ortiz
9798ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
980d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
981d784ac29SSamuel Ortizour CI pipeline.
982d784ac29SSamuel Ortiz
98393b77530SSamuel Ortiz# v0.1.0
98493b77530SSamuel Ortiz
9858ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
98693b77530SSamuel Ortiz
98793b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
98893b77530SSamuel Ortiz
98993b77530SSamuel Ortiz### Shared filesystem
99093b77530SSamuel Ortiz
99193b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
99293b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
99393b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
99493b77530SSamuel Ortiz
9958ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md)
99693b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`.
99793b77530SSamuel Ortiz
99893b77530SSamuel Ortiz### Initial direct device assignment support
99993b77530SSamuel Ortiz
100093b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
100193b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
100293b77530SSamuel Ortizphysical devices into its guest.
100393b77530SSamuel Ortiz
10048ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md)
100593b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to
100693b77530SSamuel Ortiz`cloud-hypervisor` guests.
100793b77530SSamuel Ortiz
100893b77530SSamuel Ortiz### Userspace IOAPIC
100993b77530SSamuel Ortiz
101093b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
101193b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
101293b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
101393b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
101493b77530SSamuel Ortiz
101593b77530SSamuel Ortiz### Virtual persistent memory
101693b77530SSamuel Ortiz
101793b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
101893b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
101993b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
102093b77530SSamuel Ortiz
102193b77530SSamuel Ortiz### Linux kernel bzImage
102293b77530SSamuel Ortiz
102393b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
102493b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
102593b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
102693b77530SSamuel Ortizdistribution kernel image.
102793b77530SSamuel Ortiz
102893b77530SSamuel Ortiz### Console over virtio
102993b77530SSamuel Ortiz
103093b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
103193b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
103293b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
103393b77530SSamuel Ortizimplementation.
103493b77530SSamuel Ortiz
103593b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
103693b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
103793b77530SSamuel Ortiz`--serial tty --console off` from the command line.
103893b77530SSamuel Ortiz
103993b77530SSamuel Ortiz### Unit testing
104093b77530SSamuel Ortiz
104193b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
104293b77530SSamuel Ortiz
104393b77530SSamuel Ortiz### Integration tests parallelization
104493b77530SSamuel Ortiz
104593b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
104693b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1047