1*198bd551SRob Bradford- [v0.10.0](#v0100) 2*198bd551SRob Bradford - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors) 3*198bd551SRob Bradford - [Memory Zones](#memory-zones) 4*198bd551SRob Bradford - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements) 5*198bd551SRob Bradford - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control) 652b83969SRob Bradford - [Notable Bug Fixes](#notable-bug-fixes) 752b83969SRob Bradford - [Contributors](#contributors) 8d714cf81SRob Bradford- [v0.9.0](#v090) 9d714cf81SRob Bradford - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support) 10d714cf81SRob Bradford - [Block and Network Device Statistics](#block-and-network-device-statistics) 11d714cf81SRob Bradford - [HTTP API Responses](#http-api-responses) 12d714cf81SRob Bradford - [CPU Topology](#cpu-topology) 13d714cf81SRob Bradford - [Release Build Optimization](#release-build-optimization) 14d714cf81SRob Bradford - [Hypervisor Abstraction](#hypervisor-abstraction) 15d714cf81SRob Bradford - [Snapshot/Restore Improvements](#snapshotrestore-improvements) 16d714cf81SRob Bradford - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support) 17d714cf81SRob Bradford - [Enhancements to ARM64 Support](#enhancements-to-arm64-support) 18d714cf81SRob Bradford - [Intel SGX Support](#intel-sgx-support) 19*198bd551SRob Bradford - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1) 20*198bd551SRob Bradford - [Notable Bug Fixes](#notable-bug-fixes-1) 21*198bd551SRob Bradford - [Contributors](#contributors-1) 22d714cf81SRob Bradford- [v0.8.0](#v080) 23d714cf81SRob Bradford - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support) 24d714cf81SRob Bradford - [Experimental ARM64 Support](#experimental-arm64-support) 25d714cf81SRob Bradford - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests) 26d714cf81SRob Bradford - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices) 27d714cf81SRob Bradford - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements) 28*198bd551SRob Bradford - [Notable Bug Fixes](#notable-bug-fixes-2) 29d714cf81SRob Bradford - [Command Line and API Changes](#command-line-and-api-changes) 30*198bd551SRob Bradford - [Contributors](#contributors-2) 3196be8229SRob Bradford- [v0.7.0](#v070) 3296be8229SRob Bradford - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug) 3396be8229SRob Bradford - [Alternative `libc` Support](#alternative-libc-support) 3496be8229SRob Bradford - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends) 3596be8229SRob Bradford - [Initial RamFS Support](#initial-ramfs-support) 3696be8229SRob Bradford - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem) 3796be8229SRob Bradford - [`Seccomp` Sandboxing](#seccomp-sandboxing) 3896be8229SRob Bradford - [Updated Distribution Support](#updated-distribution-support) 3952b83969SRob Bradford - [Command Line and API Changes](#command-line-and-api-changes-1) 40*198bd551SRob Bradford - [Contributors](#contributors-3) 4103cb26ccSSamuel Ortiz- [v0.6.0](#v060) 4203cb26ccSSamuel Ortiz - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug) 4303cb26ccSSamuel Ortiz - [Shared Filesystem Improvements](#shared-filesystem-improvements) 4403cb26ccSSamuel Ortiz - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading) 4503cb26ccSSamuel Ortiz - [Command Line Interface](#command-line-interface) 4603cb26ccSSamuel Ortiz - [PVH Boot](#pvh-boot) 47*198bd551SRob Bradford - [Contributors](#contributors-4) 4894f2fc33SRob Bradford- [v0.5.1](#v051) 492f395e60SSamuel Ortiz- [v0.5.0](#v050) 5094f2fc33SRob Bradford - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing) 5194f2fc33SRob Bradford - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization) 5294f2fc33SRob Bradford - [New Interrupt Management Framework](#new-interrupt-management-framework) 5394f2fc33SRob Bradford - [Development Tools](#development-tools) 5494f2fc33SRob Bradford - [Kata Containers Integration](#kata-containers-integration) 55*198bd551SRob Bradford - [Contributors](#contributors-5) 56cec884e8SSamuel Ortiz- [v0.4.0](#v040) 5794f2fc33SRob Bradford - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition) 5894f2fc33SRob Bradford - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation) 5994f2fc33SRob Bradford - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends) 6094f2fc33SRob Bradford - [Guest pause and resume](#guest-pause-and-resume) 6194f2fc33SRob Bradford - [Userspace IOAPIC by default](#userspace-ioapic-by-default) 6294f2fc33SRob Bradford - [PCI BAR reprogramming](#pci-bar-reprogramming) 6394f2fc33SRob Bradford - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization) 64*198bd551SRob Bradford - [Contributors](#contributors-6) 658e8a7b6dSSamuel Ortiz- [v0.3.0](#v030) 6694f2fc33SRob Bradford - [Block device offloading](#block-device-offloading) 6794f2fc33SRob Bradford - [Network device backend](#network-device-backend) 6894f2fc33SRob Bradford - [Virtual sockets](#virtual-sockets) 6994f2fc33SRob Bradford - [HTTP based API](#http-based-api) 7094f2fc33SRob Bradford - [Memory mapped virtio transport](#memory-mapped-virtio-transport) 7194f2fc33SRob Bradford - [Paravirtualized IOMMU](#paravirtualized-iommu) 7294f2fc33SRob Bradford - [Ubuntu 19.10](#ubuntu-1910) 7394f2fc33SRob Bradford - [Large memory guests](#large-memory-guests) 747688e6e2SSamuel Ortiz- [v0.2.0](#v020) 7594f2fc33SRob Bradford - [Network device offloading](#network-device-offloading) 7694f2fc33SRob Bradford - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi) 7794f2fc33SRob Bradford - [Debug I/O port](#debug-io-port) 7894f2fc33SRob Bradford - [Improved direct device assignment](#improved-direct-device-assignment) 7994f2fc33SRob Bradford - [Improved shared filesystem](#improved-shared-filesystem) 8094f2fc33SRob Bradford - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci) 817688e6e2SSamuel Ortiz- [v0.1.0](#v010) 8294f2fc33SRob Bradford - [Shared filesystem](#shared-filesystem) 8394f2fc33SRob Bradford - [Initial direct device assignment support](#initial-direct-device-assignment-support) 8494f2fc33SRob Bradford - [Userspace IOAPIC](#userspace-ioapic) 8594f2fc33SRob Bradford - [Virtual persistent memory](#virtual-persistent-memory) 8694f2fc33SRob Bradford - [Linux kernel bzImage](#linux-kernel-bzimage) 8794f2fc33SRob Bradford - [Console over virtio](#console-over-virtio) 8894f2fc33SRob Bradford - [Unit testing](#unit-testing) 8994f2fc33SRob Bradford - [Integration tests parallelization](#integration-tests-parallelization) 9094f2fc33SRob Bradford 91*198bd551SRob Bradford# v0.10.0 92*198bd551SRob Bradford 93*198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13). 94*198bd551SRob Bradford 95*198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include: 96*198bd551SRob Bradford 97*198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors 98*198bd551SRob Bradford 99*198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers. 100*198bd551SRob Bradford 101*198bd551SRob Bradford### Memory Zones 102*198bd551SRob Bradford 103*198bd551SRob 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). 104*198bd551SRob Bradford 105*198bd551SRob Bradford### `Seccomp` Sandbox Improvements 106*198bd551SRob Bradford 107*198bd551SRob 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`. 108*198bd551SRob Bradford 109*198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control 110*198bd551SRob Bradford 111*198bd551SRob 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. 112*198bd551SRob Bradford 113*198bd551SRob Bradford### Notable Bug Fixes 114*198bd551SRob Bradford 115*198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596) 116*198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564) 117*198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593) 118*198bd551SRob Bradford- `--version` shows the version for released binaries (#1669) 119*198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551) 120*198bd551SRob Bradford 121*198bd551SRob Bradford### Contributors 122*198bd551SRob Bradford 123*198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces. 124*198bd551SRob Bradford 125*198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is> 126*198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com> 127*198bd551SRob Bradford* Anatol Belski <ab@php.net> 128*198bd551SRob Bradford* Bo Chen <chen.bo@intel.com> 129*198bd551SRob Bradford* Hui Zhu <teawater@antfin.com> 130*198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com> 131*198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com> 132*198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com> 133*198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 134*198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 135*198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com> 136*198bd551SRob Bradford 137d714cf81SRob Bradford# v0.9.0 138d714cf81SRob Bradford 139d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12). 140d714cf81SRob Bradford 141d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include: 142d714cf81SRob Bradford 143d714cf81SRob Bradford### `io_uring` Based Block Device Support 144d714cf81SRob Bradford 145d714cf81SRob 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. 146d714cf81SRob Bradford 147d714cf81SRob Bradford### Block and Network Device Statistics 148d714cf81SRob Bradford 149d714cf81SRob 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. 150d714cf81SRob Bradford 151d714cf81SRob Bradford### HTTP API Responses 152d714cf81SRob Bradford 153d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF. 154d714cf81SRob Bradford 155d714cf81SRob Bradford### CPU Topology 156d714cf81SRob Bradford 157d714cf81SRob 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. 158d714cf81SRob Bradford 159d714cf81SRob Bradford### Release Build Optimization 160d714cf81SRob Bradford 161d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size. 162d714cf81SRob Bradford 163d714cf81SRob Bradford### Hypervisor Abstraction 164d714cf81SRob Bradford 165d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`. 166d714cf81SRob Bradford 167d714cf81SRob Bradford### Snapshot/Restore Improvements 168d714cf81SRob Bradford 169d714cf81SRob 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. 170d714cf81SRob Bradford 171d714cf81SRob Bradford### Virtio Memory Ballooning Support 172d714cf81SRob Bradford 173d714cf81SRob 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. 174d714cf81SRob Bradford 175d714cf81SRob Bradford### Enhancements to ARM64 Support 176d714cf81SRob Bradford 177d714cf81SRob 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. 178d714cf81SRob Bradford 179d714cf81SRob Bradford### Intel SGX Support 180d714cf81SRob Bradford 181d714cf81SRob 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). 182d714cf81SRob Bradford 183d714cf81SRob Bradford### `Seccomp` Sandbox Improvements 184d714cf81SRob Bradford 185d714cf81SRob 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. 186d714cf81SRob Bradford 187d714cf81SRob Bradford### Notable Bug Fixes 188d714cf81SRob Bradford 189d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes. 190d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338) 191d714cf81SRob 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). 192d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275). 193d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217) 194d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521) 195d714cf81SRob Bradford 196d714cf81SRob Bradford### Contributors 197d714cf81SRob Bradford 198d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces. 199d714cf81SRob Bradford 200d714cf81SRob Bradford* Anatol Belski <ab@php.net> 201d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com> 202d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com> 203d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com> 204d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com> 205d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com> 206d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com> 207d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 208d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com> 209d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com> 210d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com> 211d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com> 212d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com> 213d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com> 214d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 215d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 216d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com> 217d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com> 218d714cf81SRob Bradford 219d714cf81SRob Bradford 22052b83969SRob Bradford# v0.8.0 22152b83969SRob Bradford 22252b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10). 22352b83969SRob Bradford 22452b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include: 22552b83969SRob Bradford 22652b83969SRob Bradford### Experimental Snapshot and Restore Support 22752b83969SRob Bradford 22852b83969SRob BradfordThis release includes the first version of the snapshot and restore feature. 22952b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later 23052b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the 23152b83969SRob Bradfordoriginal VM at the point it was paused. 23252b83969SRob Bradford 23352b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to 23452b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest 23552b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on 23652b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed 23752b83969SRob Bradford(#1176). 23852b83969SRob Bradford 23952b83969SRob Bradford### Experimental ARM64 Support 24052b83969SRob Bradford 24152b83969SRob BradfordIncluded in this release is experimental support for running on ARM64. 24252b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full 24352b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md). 24452b83969SRob Bradford 24552b83969SRob Bradford### Support for Using 5-level Paging in Guests 24652b83969SRob Bradford 24752b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57). 24852b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware 24952b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not 25052b83969SRob Bradfordwork due to current limitations in the PVH boot process. 25152b83969SRob Bradford 25252b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices 25352b83969SRob Bradford 25452b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress 25552b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This 25652b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts 25752b83969SRob Bradfordthe guest must service. 25852b83969SRob Bradford 25952b83969SRob Bradford### `vhost_user_fs` Improvements 26052b83969SRob Bradford 26152b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`. 26252b83969SRob Bradford 26352b83969SRob Bradford 26452b83969SRob Bradford### Notable Bug Fixes 26552b83969SRob Bradford 26652b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110). 26752b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to 26852b83969SRob Bradford run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273). 26952b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to 27052b83969SRob Bradford the specification and synchronizes to the underlying filesystem as required 27152b83969SRob Bradford based on guest feature negotiation. This avoids potential data loss (#399, 27252b83969SRob Bradford #1216). 27352b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be 27452b83969SRob Bradford overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the 27552b83969SRob Bradford `MPTABLE` will no longer be generated (#1132). 27652b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816). 27752b83969SRob Bradford* Created socket files are deleted on shutdown (#1083). 27852b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds 27952b83969SRob Bradford (#751). 28052b83969SRob Bradford 28152b83969SRob Bradford### Command Line and API Changes 28252b83969SRob Bradford 28352b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes: 28452b83969SRob Bradford 28552b83969SRob Bradford* All user visible socket parameters are now consistently called `socket` 28652b83969SRob Bradford rather than `sock` in some cases. 28752b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM 28852b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always 28952b83969SRob Bradford offered for negotiation. 29052b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC 29152b83969SRob Bradford address for the `tap` device on the host. 29252b83969SRob Bradford 29352b83969SRob Bradford### Contributors 29452b83969SRob Bradford 29552b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces. 29652b83969SRob Bradford 29752b83969SRob Bradford* Anatol Belski <ab@php.net> 29852b83969SRob Bradford* Arron Wang <arron.wang@intel.com> 29952b83969SRob Bradford* Bo Chen <chen.bo@intel.com> 30052b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com> 30152b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com> 30252b83969SRob Bradford* Hui Zhu <teawater@antfin.com> 30352b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com> 30452b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com> 30552b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com> 30652b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 30752b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 30852b83969SRob Bradford* Sergio Lopez <slp@redhat.com> 30952b83969SRob Bradford 31096be8229SRob Bradford# v0.7.0 31196be8229SRob Bradford 31296be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 31396be8229SRob Bradford 31496be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include: 31596be8229SRob Bradford 31696be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug 31796be8229SRob Bradford 31896be8229SRob BradfordFurther to our effort to support modifying a running guest we now support 31996be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network, 32096be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI 32196be8229SRob Bradfordbased tranport and is exposed through the HTTP API. The `ch-remote` utility 32296be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has 32396be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for 32496be8229SRob Bradforddevices to ease their removal. 32596be8229SRob Bradford 32696be8229SRob Bradford### Alternative `libc` Support 32796be8229SRob Bradford 32896be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release 32996be8229SRob Bradfordcontains a static binary compiled using that toolchain. 33096be8229SRob Bradford 33196be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends 33296be8229SRob Bradford 33396be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by 33496be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to 33596be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true` 33696be8229SRob Bradfordis passed when the devices are created. 33796be8229SRob Bradford 33896be8229SRob Bradford### Initial RamFS Support 33996be8229SRob Bradford 34096be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to 34196be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem. 34296be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to 34396be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very 34496be8229SRob Bradfordminimal image. 34596be8229SRob Bradford 34696be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem` 34796be8229SRob Bradford 34896be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using 34996be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the 35096be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently 35196be8229SRob Bradfordrequires kernel patches to be able to support it. 35296be8229SRob Bradford 35396be8229SRob Bradford### `Seccomp` Sandboxing 35496be8229SRob Bradford 35596be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the 35696be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is 35796be8229SRob Bradfordcontrolled by the `--seccomp` command line option. 35896be8229SRob Bradford 35996be8229SRob Bradford### Updated Distribution Support 36096be8229SRob Bradford 36196be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported 36296be8229SRob Bradforddistributions and is part of our regular testing programme. 36396be8229SRob Bradford 36496be8229SRob Bradford### Command Line and API Changes 36596be8229SRob Bradford 36696be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes 36796be8229SRob Bradford 36896be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal. 36996be8229SRob Bradford If no name is specified the VMM chooses one. 37096be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing 37196be8229SRob Bradford memory instead of providing a path. 37296be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only 37396be8229SRob Bradford supports a single Vsock device. The REST API has removed the vector for this 37496be8229SRob Bradford option and replaced it with a single optional field. 37596be8229SRob Bradford* There is enhanced validation of the command line and API provided 37696be8229SRob Bradford configurations to ensure that the provided options are compatible e.g. that 37796be8229SRob Bradford shared memory is in use if any attempt is made to used a `vhost-user` backed 37896be8229SRob Bradford device. 37996be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and 38096be8229SRob Bradford `add-vsock` subcommands. For removal `remove-device` is used. The REST API 38196be8229SRob Bradford has appropriate new HTTP endpoints too. 38296be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size 38396be8229SRob Bradford will be obtained from the file. A `discard_writes` option has also been added 38496be8229SRob Bradford to provide the equivalent of a read-only file. 38596be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align 38696be8229SRob Bradford with those used by `--disk`. 38796be8229SRob Bradford 38896be8229SRob Bradford### Contributors 38996be8229SRob Bradford 39096be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces. 39196be8229SRob Bradford 39296be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 39396be8229SRob Bradford* Bo Chen <chen.bo@intel.com> 39496be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com> 39596be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com> 39696be8229SRob Bradford* Dean Sheather <dean@coder.com> 39796be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com> 39896be8229SRob Bradford* Hui Zhu <teawater@antfin.com> 39996be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 40096be8229SRob Bradford* Martin Xu <martin.xu@intel.com> 40196be8229SRob Bradford* Muminul Islam <muislam@microsoft.com> 40296be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com> 40396be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 40496be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 40596be8229SRob Bradford* Sergio Lopez <slp@redhat.com> 40696be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com> 40796be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com> 40896be8229SRob Bradford 40903cb26ccSSamuel Ortiz# v0.6.0 41003cb26ccSSamuel Ortiz 41103cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 41203cb26ccSSamuel Ortiz 41303cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include: 41403cb26ccSSamuel Ortiz 41503cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug 41603cb26ccSSamuel Ortiz 41703cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest 41803cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor 41903cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`) 42003cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for 42103cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor. 42203cb26ccSSamuel Ortiz 42303cb26ccSSamuel Ortiz### Shared Filesystem Improvements 42403cb26ccSSamuel Ortiz 42503cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements. 42603cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`, 42703cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we 42803cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and 42903cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations. 43003cb26ccSSamuel Ortiz 43103cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading 43203cb26ccSSamuel Ortiz 43303cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an 43403cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now 43503cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends 43603cb26ccSSamuel Ortizinto their own, separate processes. 43703cb26ccSSamuel OrtizThis provides a seamless parvirtualized I/O user experience for those who want 43803cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts. 43903cb26ccSSamuel Ortiz 44003cb26ccSSamuel Ortiz### Command Line Interface 44103cb26ccSSamuel Ortiz 44203cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the 44303cb26ccSSamuel Ortiz[Rest API](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml) 44403cb26ccSSamuel Ortizand thus only accessible via relatively cumbersome HTTP calls. In order 44503cb26ccSSamuel Ortizto abstract those calls into a more user friendly tool, we created a Cloud 44603cb26ccSSamuel OrtizHypervisor Command Line Interface (CLI) called `ch-remote`. 44703cb26ccSSamuel OrtizThe `ch-remote` binary is created with each build and available e.g. at 44803cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build. 44903cb26ccSSamuel Ortiz 45003cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available 45103cb26ccSSamuel Ortizcommands. 45203cb26ccSSamuel Ortiz 45303cb26ccSSamuel Ortiz### PVH Boot 45403cb26ccSSamuel Ortiz 45503cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now 45603cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html). 45703cb26ccSSamuel Ortiz 45803cb26ccSSamuel Ortiz### Contributors 45903cb26ccSSamuel Ortiz 46003cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks 46103cb26ccSSamuel Ortizto them and to everyone that contributed to this release: 46203cb26ccSSamuel Ortiz 46303cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 46403cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com> 46503cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com> 46603cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com> 46703cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 46803cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com> 46903cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 47003cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com> 47103cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 47203cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 47303cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 47403cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 47503cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com> 47603cb26ccSSamuel Ortiz 47794f2fc33SRob Bradford# v0.5.1 47894f2fc33SRob Bradford 47994f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes: 48094f2fc33SRob Bradford 48194f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez 48294f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf 48394f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz 48494f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford 48594f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford 4868e8a7b6dSSamuel Ortiz 4872f395e60SSamuel Ortiz# v0.5.0 4882f395e60SSamuel Ortiz 4892f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6). 4902f395e60SSamuel Ortiz 4912f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include: 4922f395e60SSamuel Ortiz 4932f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing 4942f395e60SSamuel Ortiz 4952f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and 4962f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor 4972f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases. 4982f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot 4992f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest. 5002f395e60SSamuel Ortiz 5012f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature. 5022f395e60SSamuel Ortiz 5032f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization 5042f395e60SSamuel Ortiz 5052f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use 5062f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default 5072f395e60SSamuel Ortizparavirtualized networking and block devices throughput. 5082f395e60SSamuel Ortiz 5092f395e60SSamuel Ortiz### New Interrupt Management Framework 5102f395e60SSamuel Ortiz 5112f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt 5122f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device) 5132f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed 5142f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and 5152f395e60SSamuel Ortizvirtio ones. 5162f395e60SSamuel Ortiz 5172f395e60SSamuel Ortiz### Development Tools 5182f395e60SSamuel Ortiz 5192f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our 5202f395e60SSamuel Ortizbuild, development and testing tools. 5212f395e60SSamuel OrtizSomehow similar to the excellent 5222f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool), 5232f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh). 5242f395e60SSamuel Ortiz 5252f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test 5262f395e60SSamuel OrtizCloud Hypervisor through a containerized environment. 5272f395e60SSamuel Ortiz 5282f395e60SSamuel Ortiz### Kata Containers Integration 5292f395e60SSamuel Ortiz 5302f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration 5312f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud 5322f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is 5332f395e60SSamuel Ortizintegrated into the project's CI. 5342f395e60SSamuel Ortiz 5352f395e60SSamuel Ortiz### Contributors 5362f395e60SSamuel Ortiz 5372f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release: 5382f395e60SSamuel Ortiz 5392f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com> 5402f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 5412f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 5422f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 5432f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 5442f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 5452f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 5462f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com> 5472f395e60SSamuel Ortiz 548cec884e8SSamuel Ortiz# v0.4.0 549cec884e8SSamuel Ortiz 550cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4). 551cec884e8SSamuel Ortiz 552cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include: 553cec884e8SSamuel Ortiz 554cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition 555cec884e8SSamuel Ortiz 556cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically 557cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug. 558cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs 559cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are 560cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md) 561cec884e8SSamuel Ortiz 562cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor 563cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory. 564cec884e8SSamuel Ortiz 565cec884e8SSamuel Ortiz### Programmatic firmware tables generation 566cec884e8SSamuel Ortiz 567cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot 568cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for 569cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated 570cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those 571cec884e8SSamuel Ortiztables based on the VMM device model and topology. 572cec884e8SSamuel Ortiz 573cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends 574cec884e8SSamuel Ortiz 575cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a 576cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based 577cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the 578cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the 579cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture. 580cec884e8SSamuel Ortiz 581cec884e8SSamuel Ortiz### Guest pause and resume 582cec884e8SSamuel Ortiz 583cec884e8SSamuel OrtizAs an initial requiremnt for enabling live migration, we added support for 584cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live 585cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause 586cec884e8SSamuel Ortizand resume capabilities. 587cec884e8SSamuel Ortiz 588cec884e8SSamuel Ortiz### Userspace IOAPIC by default 589cec884e8SSamuel Ortiz 590cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to 591cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on 592cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by 593cec884e8SSamuel Ortizdefault. 594cec884e8SSamuel Ortiz 595cec884e8SSamuel Ortiz### PCI BAR reprogramming 596cec884e8SSamuel Ortiz 597cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests 598cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR 599cec884e8SSamuel Ortizreprogramming. 600cec884e8SSamuel Ortiz 601cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization 602cec884e8SSamuel Ortiz 603cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project, 604cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor). 605cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 606cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux) 607cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 608cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to 609cec884e8SSamuel Ortiztemporarily fork. 610cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely 611cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers. 612cec884e8SSamuel Ortiz 613cec884e8SSamuel Ortiz### Contributors 614cec884e8SSamuel Ortiz 615cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release: 616cec884e8SSamuel Ortiz 617cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 618cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com> 619cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 620cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 621cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 622cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 623cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 624cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 625cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com> 626cec884e8SSamuel Ortiz 6278e8a7b6dSSamuel Ortiz# v0.3.0 6288e8a7b6dSSamuel Ortiz 6298ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3). 6308e8a7b6dSSamuel Ortiz 6318e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include: 6328e8a7b6dSSamuel Ortiz 6338e8a7b6dSSamuel Ortiz### Block device offloading 6348e8a7b6dSSamuel Ortiz 6358e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes, 6368e8a7b6dSSamuel Ortizand we added support for 6378e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends. 6388e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device 6398e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage 6408e8a7b6dSSamuel Ortizbackend. 6418e8a7b6dSSamuel Ortiz 6428e8a7b6dSSamuel Ortiz### Network device backend 6438e8a7b6dSSamuel Ortiz 6448e8a7b6dSSamuel OrtizThe previous release provided support for 6458e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we 6468e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together 6478e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the 6488e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture. 6498e8a7b6dSSamuel Ortiz 6508e8a7b6dSSamuel Ortiz### Virtual sockets 6518e8a7b6dSSamuel Ortiz 6528e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest, 6538e8a7b6dSSamuel Ortizwe added an hybrid implementation of the 6548e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address 6558e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the 6568e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md) 6578e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs. 6588e8a7b6dSSamuel Ortiz 6598e8a7b6dSSamuel Ortiz### HTTP based API 6608e8a7b6dSSamuel Ortiz 6618e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud 6628e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP 6638e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the 6648e8a7b6dSSamuel Ortiznext release cycle. 6658e8a7b6dSSamuel Ortiz 6668e8a7b6dSSamuel Ortiz### Memory mapped virtio transport 6678e8a7b6dSSamuel Ortiz 6688e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the 6698e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002) 6708e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest 6718e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation. 6728e8a7b6dSSamuel Ortiz 6738e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU 6748e8a7b6dSSamuel Ortiz 6758e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing 6768ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md) 6778e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly 6788e8a7b6dSSamuel Ortizassigned devices support. 6798e8a7b6dSSamuel Ortiz 6808e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor 6818e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual 6828e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be 6838e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]` 6848e8a7b6dSSamuel Ortizsetting. 6858e8a7b6dSSamuel Ortiz 6868e8a7b6dSSamuel Ortiz### Ubuntu 19.10 6878e8a7b6dSSamuel Ortiz 6888ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware), 6898e8a7b6dSSamuel Ortizwe can now support the latest 6908e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images. 6918e8a7b6dSSamuel Ortiz 6928e8a7b6dSSamuel Ortiz### Large memory guests 6938e8a7b6dSSamuel Ortiz 6948e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now 6958e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB). 6967688e6e2SSamuel Ortiz 697d784ac29SSamuel Ortiz# v0.2.0 698d784ac29SSamuel Ortiz 6998ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2). 700d784ac29SSamuel Ortiz 701d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include: 702d784ac29SSamuel Ortiz 703d784ac29SSamuel Ortiz### Network device offloading 704d784ac29SSamuel Ortiz 705d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external 706d784ac29SSamuel Ortizprocesses, we added support for 707d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This 708d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device 709d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend. 710d784ac29SSamuel Ortiz 711d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI 712d784ac29SSamuel Ortiz 713d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented 714d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with 715d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to 716d784ac29SSamuel Ortizcleanly reboot and shutdown. 717d784ac29SSamuel Ortiz 718d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is 719d784ac29SSamuel Ortizenabled by default. 720d784ac29SSamuel Ortiz 721d784ac29SSamuel Ortiz### Debug I/O port 722d784ac29SSamuel Ortiz 723d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest 724d784ac29SSamuel Ortizboot times, we added support for logging guest events through the 725d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html) 726d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time 7278ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md) 728d784ac29SSamuel Ortizfor more details. 729d784ac29SSamuel Ortiz 730d784ac29SSamuel Ortiz### Improved direct device assignment 731d784ac29SSamuel Ortiz 732d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When 733d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads 734d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from 735d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from 736d784ac29SSamuel Ortizdirectly assigned devices. 737d784ac29SSamuel Ortiz 738d784ac29SSamuel Ortiz### Improved shared filesystem 739d784ac29SSamuel Ortiz 740d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt) 741d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system. 742d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest 743d784ac29SSamuel Ortizmemory footprint. 744d784ac29SSamuel Ortiz 745d784ac29SSamuel Ortiz### Ubuntu bionic based CI 746d784ac29SSamuel Ortiz 7478ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 748d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to 749d784ac29SSamuel Ortizour CI pipeline. 750d784ac29SSamuel Ortiz 75193b77530SSamuel Ortiz# v0.1.0 75293b77530SSamuel Ortiz 7538ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1). 75493b77530SSamuel Ortiz 75593b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include: 75693b77530SSamuel Ortiz 75793b77530SSamuel Ortiz### Shared filesystem 75893b77530SSamuel Ortiz 75993b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file 76093b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem 76193b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest. 76293b77530SSamuel Ortiz 7638ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md) 76493b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`. 76593b77530SSamuel Ortiz 76693b77530SSamuel Ortiz### Initial direct device assignment support 76793b77530SSamuel Ortiz 76893b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device 76993b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host 77093b77530SSamuel Ortizphysical devices into its guest. 77193b77530SSamuel Ortiz 7728ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md) 77393b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to 77493b77530SSamuel Ortiz`cloud-hypervisor` guests. 77593b77530SSamuel Ortiz 77693b77530SSamuel Ortiz### Userspace IOAPIC 77793b77530SSamuel Ortiz 77893b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by 77993b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC). 78093b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space, 78193b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode. 78293b77530SSamuel Ortiz 78393b77530SSamuel Ortiz### Virtual persistent memory 78493b77530SSamuel Ortiz 78593b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device 78693b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device 78793b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint. 78893b77530SSamuel Ortiz 78993b77530SSamuel Ortiz### Linux kernel bzImage 79093b77530SSamuel Ortiz 79193b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from 79293b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions 79393b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host 79493b77530SSamuel Ortizdistribution kernel image. 79593b77530SSamuel Ortiz 79693b77530SSamuel Ortiz### Console over virtio 79793b77530SSamuel Ortiz 79893b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although 79993b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot 80093b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console 80193b77530SSamuel Ortizimplementation. 80293b77530SSamuel Ortiz 80393b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console. 80493b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting 80593b77530SSamuel Ortiz`--serial tty --console off` from the command line. 80693b77530SSamuel Ortiz 80793b77530SSamuel Ortiz### Unit testing 80893b77530SSamuel Ortiz 80993b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI. 81093b77530SSamuel Ortiz 81193b77530SSamuel Ortiz### Integration tests parallelization 81293b77530SSamuel Ortiz 81393b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our 81493b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel. 815