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