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