1*52b83969SRob Bradford- [v0.8.0](#v080) 2*52b83969SRob Bradford - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support) 3*52b83969SRob Bradford - [Experimental ARM64 Support](#experimental-arm64-support) 4*52b83969SRob Bradford - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests) 5*52b83969SRob Bradford - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices) 6*52b83969SRob Bradford - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements) 7*52b83969SRob Bradford - [Notable Bug Fixes](#notable-bug-fixes) 8*52b83969SRob Bradford - [Command Line and API Changes](#command-line-and-api-changes) 9*52b83969SRob Bradford - [Contributors](#contributors) 1096be8229SRob Bradford- [v0.7.0](#v070) 1196be8229SRob Bradford - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug) 1296be8229SRob Bradford - [Alternative `libc` Support](#alternative-libc-support) 1396be8229SRob Bradford - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends) 1496be8229SRob Bradford - [Initial RamFS Support](#initial-ramfs-support) 1596be8229SRob Bradford - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem) 1696be8229SRob Bradford - [`Seccomp` Sandboxing](#seccomp-sandboxing) 1796be8229SRob Bradford - [Updated Distribution Support](#updated-distribution-support) 18*52b83969SRob Bradford - [Command Line and API Changes](#command-line-and-api-changes-1) 19*52b83969SRob Bradford - [Contributors](#contributors-1) 2003cb26ccSSamuel Ortiz- [v0.6.0](#v060) 2103cb26ccSSamuel Ortiz - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug) 2203cb26ccSSamuel Ortiz - [Shared Filesystem Improvements](#shared-filesystem-improvements) 2303cb26ccSSamuel Ortiz - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading) 2403cb26ccSSamuel Ortiz - [Command Line Interface](#command-line-interface) 2503cb26ccSSamuel Ortiz - [PVH Boot](#pvh-boot) 26*52b83969SRob Bradford - [Contributors](#contributors-2) 2794f2fc33SRob Bradford- [v0.5.1](#v051) 282f395e60SSamuel Ortiz- [v0.5.0](#v050) 2994f2fc33SRob Bradford - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing) 3094f2fc33SRob Bradford - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization) 3194f2fc33SRob Bradford - [New Interrupt Management Framework](#new-interrupt-management-framework) 3294f2fc33SRob Bradford - [Development Tools](#development-tools) 3394f2fc33SRob Bradford - [Kata Containers Integration](#kata-containers-integration) 34*52b83969SRob Bradford - [Contributors](#contributors-3) 35cec884e8SSamuel Ortiz- [v0.4.0](#v040) 3694f2fc33SRob Bradford - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition) 3794f2fc33SRob Bradford - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation) 3894f2fc33SRob Bradford - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends) 3994f2fc33SRob Bradford - [Guest pause and resume](#guest-pause-and-resume) 4094f2fc33SRob Bradford - [Userspace IOAPIC by default](#userspace-ioapic-by-default) 4194f2fc33SRob Bradford - [PCI BAR reprogramming](#pci-bar-reprogramming) 4294f2fc33SRob Bradford - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization) 43*52b83969SRob Bradford - [Contributors](#contributors-4) 448e8a7b6dSSamuel Ortiz- [v0.3.0](#v030) 4594f2fc33SRob Bradford - [Block device offloading](#block-device-offloading) 4694f2fc33SRob Bradford - [Network device backend](#network-device-backend) 4794f2fc33SRob Bradford - [Virtual sockets](#virtual-sockets) 4894f2fc33SRob Bradford - [HTTP based API](#http-based-api) 4994f2fc33SRob Bradford - [Memory mapped virtio transport](#memory-mapped-virtio-transport) 5094f2fc33SRob Bradford - [Paravirtualized IOMMU](#paravirtualized-iommu) 5194f2fc33SRob Bradford - [Ubuntu 19.10](#ubuntu-1910) 5294f2fc33SRob Bradford - [Large memory guests](#large-memory-guests) 537688e6e2SSamuel Ortiz- [v0.2.0](#v020) 5494f2fc33SRob Bradford - [Network device offloading](#network-device-offloading) 5594f2fc33SRob Bradford - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi) 5694f2fc33SRob Bradford - [Debug I/O port](#debug-io-port) 5794f2fc33SRob Bradford - [Improved direct device assignment](#improved-direct-device-assignment) 5894f2fc33SRob Bradford - [Improved shared filesystem](#improved-shared-filesystem) 5994f2fc33SRob Bradford - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci) 607688e6e2SSamuel Ortiz- [v0.1.0](#v010) 6194f2fc33SRob Bradford - [Shared filesystem](#shared-filesystem) 6294f2fc33SRob Bradford - [Initial direct device assignment support](#initial-direct-device-assignment-support) 6394f2fc33SRob Bradford - [Userspace IOAPIC](#userspace-ioapic) 6494f2fc33SRob Bradford - [Virtual persistent memory](#virtual-persistent-memory) 6594f2fc33SRob Bradford - [Linux kernel bzImage](#linux-kernel-bzimage) 6694f2fc33SRob Bradford - [Console over virtio](#console-over-virtio) 6794f2fc33SRob Bradford - [Unit testing](#unit-testing) 6894f2fc33SRob Bradford - [Integration tests parallelization](#integration-tests-parallelization) 6994f2fc33SRob Bradford 70*52b83969SRob Bradford# v0.8.0 71*52b83969SRob Bradford 72*52b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10). 73*52b83969SRob Bradford 74*52b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include: 75*52b83969SRob Bradford 76*52b83969SRob Bradford### Experimental Snapshot and Restore Support 77*52b83969SRob Bradford 78*52b83969SRob BradfordThis release includes the first version of the snapshot and restore feature. 79*52b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later 80*52b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the 81*52b83969SRob Bradfordoriginal VM at the point it was paused. 82*52b83969SRob Bradford 83*52b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to 84*52b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest 85*52b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on 86*52b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed 87*52b83969SRob Bradford(#1176). 88*52b83969SRob Bradford 89*52b83969SRob Bradford### Experimental ARM64 Support 90*52b83969SRob Bradford 91*52b83969SRob BradfordIncluded in this release is experimental support for running on ARM64. 92*52b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full 93*52b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md). 94*52b83969SRob Bradford 95*52b83969SRob Bradford### Support for Using 5-level Paging in Guests 96*52b83969SRob Bradford 97*52b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57). 98*52b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware 99*52b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not 100*52b83969SRob Bradfordwork due to current limitations in the PVH boot process. 101*52b83969SRob Bradford 102*52b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices 103*52b83969SRob Bradford 104*52b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress 105*52b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This 106*52b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts 107*52b83969SRob Bradfordthe guest must service. 108*52b83969SRob Bradford 109*52b83969SRob Bradford### `vhost_user_fs` Improvements 110*52b83969SRob Bradford 111*52b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`. 112*52b83969SRob Bradford 113*52b83969SRob Bradford 114*52b83969SRob Bradford### Notable Bug Fixes 115*52b83969SRob Bradford 116*52b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110). 117*52b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to 118*52b83969SRob Bradford run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273). 119*52b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to 120*52b83969SRob Bradford the specification and synchronizes to the underlying filesystem as required 121*52b83969SRob Bradford based on guest feature negotiation. This avoids potential data loss (#399, 122*52b83969SRob Bradford #1216). 123*52b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be 124*52b83969SRob Bradford overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the 125*52b83969SRob Bradford `MPTABLE` will no longer be generated (#1132). 126*52b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816). 127*52b83969SRob Bradford* Created socket files are deleted on shutdown (#1083). 128*52b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds 129*52b83969SRob Bradford (#751). 130*52b83969SRob Bradford 131*52b83969SRob Bradford### Command Line and API Changes 132*52b83969SRob Bradford 133*52b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes: 134*52b83969SRob Bradford 135*52b83969SRob Bradford* All user visible socket parameters are now consistently called `socket` 136*52b83969SRob Bradford rather than `sock` in some cases. 137*52b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM 138*52b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always 139*52b83969SRob Bradford offered for negotiation. 140*52b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC 141*52b83969SRob Bradford address for the `tap` device on the host. 142*52b83969SRob Bradford 143*52b83969SRob Bradford### Contributors 144*52b83969SRob Bradford 145*52b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces. 146*52b83969SRob Bradford 147*52b83969SRob Bradford* Anatol Belski <ab@php.net> 148*52b83969SRob Bradford* Arron Wang <arron.wang@intel.com> 149*52b83969SRob Bradford* Bo Chen <chen.bo@intel.com> 150*52b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com> 151*52b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com> 152*52b83969SRob Bradford* Hui Zhu <teawater@antfin.com> 153*52b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com> 154*52b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com> 155*52b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com> 156*52b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 157*52b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 158*52b83969SRob Bradford* Sergio Lopez <slp@redhat.com> 159*52b83969SRob Bradford 16096be8229SRob Bradford# v0.7.0 16196be8229SRob Bradford 16296be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 16396be8229SRob Bradford 16496be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include: 16596be8229SRob Bradford 16696be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug 16796be8229SRob Bradford 16896be8229SRob BradfordFurther to our effort to support modifying a running guest we now support 16996be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network, 17096be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI 17196be8229SRob Bradfordbased tranport and is exposed through the HTTP API. The `ch-remote` utility 17296be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has 17396be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for 17496be8229SRob Bradforddevices to ease their removal. 17596be8229SRob Bradford 17696be8229SRob Bradford### Alternative `libc` Support 17796be8229SRob Bradford 17896be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release 17996be8229SRob Bradfordcontains a static binary compiled using that toolchain. 18096be8229SRob Bradford 18196be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends 18296be8229SRob Bradford 18396be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by 18496be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to 18596be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true` 18696be8229SRob Bradfordis passed when the devices are created. 18796be8229SRob Bradford 18896be8229SRob Bradford### Initial RamFS Support 18996be8229SRob Bradford 19096be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to 19196be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem. 19296be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to 19396be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very 19496be8229SRob Bradfordminimal image. 19596be8229SRob Bradford 19696be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem` 19796be8229SRob Bradford 19896be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using 19996be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the 20096be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently 20196be8229SRob Bradfordrequires kernel patches to be able to support it. 20296be8229SRob Bradford 20396be8229SRob Bradford### `Seccomp` Sandboxing 20496be8229SRob Bradford 20596be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the 20696be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is 20796be8229SRob Bradfordcontrolled by the `--seccomp` command line option. 20896be8229SRob Bradford 20996be8229SRob Bradford### Updated Distribution Support 21096be8229SRob Bradford 21196be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported 21296be8229SRob Bradforddistributions and is part of our regular testing programme. 21396be8229SRob Bradford 21496be8229SRob Bradford### Command Line and API Changes 21596be8229SRob Bradford 21696be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes 21796be8229SRob Bradford 21896be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal. 21996be8229SRob Bradford If no name is specified the VMM chooses one. 22096be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing 22196be8229SRob Bradford memory instead of providing a path. 22296be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only 22396be8229SRob Bradford supports a single Vsock device. The REST API has removed the vector for this 22496be8229SRob Bradford option and replaced it with a single optional field. 22596be8229SRob Bradford* There is enhanced validation of the command line and API provided 22696be8229SRob Bradford configurations to ensure that the provided options are compatible e.g. that 22796be8229SRob Bradford shared memory is in use if any attempt is made to used a `vhost-user` backed 22896be8229SRob Bradford device. 22996be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and 23096be8229SRob Bradford `add-vsock` subcommands. For removal `remove-device` is used. The REST API 23196be8229SRob Bradford has appropriate new HTTP endpoints too. 23296be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size 23396be8229SRob Bradford will be obtained from the file. A `discard_writes` option has also been added 23496be8229SRob Bradford to provide the equivalent of a read-only file. 23596be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align 23696be8229SRob Bradford with those used by `--disk`. 23796be8229SRob Bradford 23896be8229SRob Bradford### Contributors 23996be8229SRob Bradford 24096be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces. 24196be8229SRob Bradford 24296be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 24396be8229SRob Bradford* Bo Chen <chen.bo@intel.com> 24496be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com> 24596be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com> 24696be8229SRob Bradford* Dean Sheather <dean@coder.com> 24796be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com> 24896be8229SRob Bradford* Hui Zhu <teawater@antfin.com> 24996be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 25096be8229SRob Bradford* Martin Xu <martin.xu@intel.com> 25196be8229SRob Bradford* Muminul Islam <muislam@microsoft.com> 25296be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com> 25396be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 25496be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 25596be8229SRob Bradford* Sergio Lopez <slp@redhat.com> 25696be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com> 25796be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com> 25896be8229SRob Bradford 25903cb26ccSSamuel Ortiz# v0.6.0 26003cb26ccSSamuel Ortiz 26103cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 26203cb26ccSSamuel Ortiz 26303cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include: 26403cb26ccSSamuel Ortiz 26503cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug 26603cb26ccSSamuel Ortiz 26703cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest 26803cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor 26903cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`) 27003cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for 27103cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor. 27203cb26ccSSamuel Ortiz 27303cb26ccSSamuel Ortiz### Shared Filesystem Improvements 27403cb26ccSSamuel Ortiz 27503cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements. 27603cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`, 27703cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we 27803cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and 27903cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations. 28003cb26ccSSamuel Ortiz 28103cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading 28203cb26ccSSamuel Ortiz 28303cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an 28403cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now 28503cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends 28603cb26ccSSamuel Ortizinto their own, separate processes. 28703cb26ccSSamuel OrtizThis provides a seamless parvirtualized I/O user experience for those who want 28803cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts. 28903cb26ccSSamuel Ortiz 29003cb26ccSSamuel Ortiz### Command Line Interface 29103cb26ccSSamuel Ortiz 29203cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the 29303cb26ccSSamuel Ortiz[Rest API](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml) 29403cb26ccSSamuel Ortizand thus only accessible via relatively cumbersome HTTP calls. In order 29503cb26ccSSamuel Ortizto abstract those calls into a more user friendly tool, we created a Cloud 29603cb26ccSSamuel OrtizHypervisor Command Line Interface (CLI) called `ch-remote`. 29703cb26ccSSamuel OrtizThe `ch-remote` binary is created with each build and available e.g. at 29803cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build. 29903cb26ccSSamuel Ortiz 30003cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available 30103cb26ccSSamuel Ortizcommands. 30203cb26ccSSamuel Ortiz 30303cb26ccSSamuel Ortiz### PVH Boot 30403cb26ccSSamuel Ortiz 30503cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now 30603cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html). 30703cb26ccSSamuel Ortiz 30803cb26ccSSamuel Ortiz### Contributors 30903cb26ccSSamuel Ortiz 31003cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks 31103cb26ccSSamuel Ortizto them and to everyone that contributed to this release: 31203cb26ccSSamuel Ortiz 31303cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 31403cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com> 31503cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com> 31603cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com> 31703cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 31803cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com> 31903cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 32003cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com> 32103cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 32203cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 32303cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 32403cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 32503cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com> 32603cb26ccSSamuel Ortiz 32794f2fc33SRob Bradford# v0.5.1 32894f2fc33SRob Bradford 32994f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes: 33094f2fc33SRob Bradford 33194f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez 33294f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf 33394f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz 33494f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford 33594f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford 3368e8a7b6dSSamuel Ortiz 3372f395e60SSamuel Ortiz# v0.5.0 3382f395e60SSamuel Ortiz 3392f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6). 3402f395e60SSamuel Ortiz 3412f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include: 3422f395e60SSamuel Ortiz 3432f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing 3442f395e60SSamuel Ortiz 3452f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and 3462f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor 3472f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases. 3482f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot 3492f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest. 3502f395e60SSamuel Ortiz 3512f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature. 3522f395e60SSamuel Ortiz 3532f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization 3542f395e60SSamuel Ortiz 3552f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use 3562f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default 3572f395e60SSamuel Ortizparavirtualized networking and block devices throughput. 3582f395e60SSamuel Ortiz 3592f395e60SSamuel Ortiz### New Interrupt Management Framework 3602f395e60SSamuel Ortiz 3612f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt 3622f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device) 3632f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed 3642f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and 3652f395e60SSamuel Ortizvirtio ones. 3662f395e60SSamuel Ortiz 3672f395e60SSamuel Ortiz### Development Tools 3682f395e60SSamuel Ortiz 3692f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our 3702f395e60SSamuel Ortizbuild, development and testing tools. 3712f395e60SSamuel OrtizSomehow similar to the excellent 3722f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool), 3732f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh). 3742f395e60SSamuel Ortiz 3752f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test 3762f395e60SSamuel OrtizCloud Hypervisor through a containerized environment. 3772f395e60SSamuel Ortiz 3782f395e60SSamuel Ortiz### Kata Containers Integration 3792f395e60SSamuel Ortiz 3802f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration 3812f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud 3822f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is 3832f395e60SSamuel Ortizintegrated into the project's CI. 3842f395e60SSamuel Ortiz 3852f395e60SSamuel Ortiz### Contributors 3862f395e60SSamuel Ortiz 3872f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release: 3882f395e60SSamuel Ortiz 3892f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com> 3902f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 3912f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 3922f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 3932f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 3942f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 3952f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 3962f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com> 3972f395e60SSamuel Ortiz 398cec884e8SSamuel Ortiz# v0.4.0 399cec884e8SSamuel Ortiz 400cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4). 401cec884e8SSamuel Ortiz 402cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include: 403cec884e8SSamuel Ortiz 404cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition 405cec884e8SSamuel Ortiz 406cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically 407cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug. 408cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs 409cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are 410cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md) 411cec884e8SSamuel Ortiz 412cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor 413cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory. 414cec884e8SSamuel Ortiz 415cec884e8SSamuel Ortiz### Programmatic firmware tables generation 416cec884e8SSamuel Ortiz 417cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot 418cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for 419cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated 420cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those 421cec884e8SSamuel Ortiztables based on the VMM device model and topology. 422cec884e8SSamuel Ortiz 423cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends 424cec884e8SSamuel Ortiz 425cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a 426cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based 427cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the 428cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the 429cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture. 430cec884e8SSamuel Ortiz 431cec884e8SSamuel Ortiz### Guest pause and resume 432cec884e8SSamuel Ortiz 433cec884e8SSamuel OrtizAs an initial requiremnt for enabling live migration, we added support for 434cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live 435cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause 436cec884e8SSamuel Ortizand resume capabilities. 437cec884e8SSamuel Ortiz 438cec884e8SSamuel Ortiz### Userspace IOAPIC by default 439cec884e8SSamuel Ortiz 440cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to 441cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on 442cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by 443cec884e8SSamuel Ortizdefault. 444cec884e8SSamuel Ortiz 445cec884e8SSamuel Ortiz### PCI BAR reprogramming 446cec884e8SSamuel Ortiz 447cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests 448cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR 449cec884e8SSamuel Ortizreprogramming. 450cec884e8SSamuel Ortiz 451cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization 452cec884e8SSamuel Ortiz 453cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project, 454cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor). 455cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 456cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux) 457cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 458cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to 459cec884e8SSamuel Ortiztemporarily fork. 460cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely 461cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers. 462cec884e8SSamuel Ortiz 463cec884e8SSamuel Ortiz### Contributors 464cec884e8SSamuel Ortiz 465cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release: 466cec884e8SSamuel Ortiz 467cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 468cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com> 469cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 470cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 471cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 472cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 473cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 474cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 475cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com> 476cec884e8SSamuel Ortiz 4778e8a7b6dSSamuel Ortiz# v0.3.0 4788e8a7b6dSSamuel Ortiz 4798ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3). 4808e8a7b6dSSamuel Ortiz 4818e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include: 4828e8a7b6dSSamuel Ortiz 4838e8a7b6dSSamuel Ortiz### Block device offloading 4848e8a7b6dSSamuel Ortiz 4858e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes, 4868e8a7b6dSSamuel Ortizand we added support for 4878e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends. 4888e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device 4898e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage 4908e8a7b6dSSamuel Ortizbackend. 4918e8a7b6dSSamuel Ortiz 4928e8a7b6dSSamuel Ortiz### Network device backend 4938e8a7b6dSSamuel Ortiz 4948e8a7b6dSSamuel OrtizThe previous release provided support for 4958e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we 4968e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together 4978e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the 4988e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture. 4998e8a7b6dSSamuel Ortiz 5008e8a7b6dSSamuel Ortiz### Virtual sockets 5018e8a7b6dSSamuel Ortiz 5028e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest, 5038e8a7b6dSSamuel Ortizwe added an hybrid implementation of the 5048e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address 5058e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the 5068e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md) 5078e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs. 5088e8a7b6dSSamuel Ortiz 5098e8a7b6dSSamuel Ortiz### HTTP based API 5108e8a7b6dSSamuel Ortiz 5118e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud 5128e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP 5138e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the 5148e8a7b6dSSamuel Ortiznext release cycle. 5158e8a7b6dSSamuel Ortiz 5168e8a7b6dSSamuel Ortiz### Memory mapped virtio transport 5178e8a7b6dSSamuel Ortiz 5188e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the 5198e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002) 5208e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest 5218e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation. 5228e8a7b6dSSamuel Ortiz 5238e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU 5248e8a7b6dSSamuel Ortiz 5258e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing 5268ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md) 5278e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly 5288e8a7b6dSSamuel Ortizassigned devices support. 5298e8a7b6dSSamuel Ortiz 5308e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor 5318e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual 5328e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be 5338e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]` 5348e8a7b6dSSamuel Ortizsetting. 5358e8a7b6dSSamuel Ortiz 5368e8a7b6dSSamuel Ortiz### Ubuntu 19.10 5378e8a7b6dSSamuel Ortiz 5388ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware), 5398e8a7b6dSSamuel Ortizwe can now support the latest 5408e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images. 5418e8a7b6dSSamuel Ortiz 5428e8a7b6dSSamuel Ortiz### Large memory guests 5438e8a7b6dSSamuel Ortiz 5448e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now 5458e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB). 5467688e6e2SSamuel Ortiz 547d784ac29SSamuel Ortiz# v0.2.0 548d784ac29SSamuel Ortiz 5498ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2). 550d784ac29SSamuel Ortiz 551d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include: 552d784ac29SSamuel Ortiz 553d784ac29SSamuel Ortiz### Network device offloading 554d784ac29SSamuel Ortiz 555d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external 556d784ac29SSamuel Ortizprocesses, we added support for 557d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This 558d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device 559d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend. 560d784ac29SSamuel Ortiz 561d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI 562d784ac29SSamuel Ortiz 563d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented 564d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with 565d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to 566d784ac29SSamuel Ortizcleanly reboot and shutdown. 567d784ac29SSamuel Ortiz 568d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is 569d784ac29SSamuel Ortizenabled by default. 570d784ac29SSamuel Ortiz 571d784ac29SSamuel Ortiz### Debug I/O port 572d784ac29SSamuel Ortiz 573d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest 574d784ac29SSamuel Ortizboot times, we added support for logging guest events through the 575d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html) 576d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time 5778ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md) 578d784ac29SSamuel Ortizfor more details. 579d784ac29SSamuel Ortiz 580d784ac29SSamuel Ortiz### Improved direct device assignment 581d784ac29SSamuel Ortiz 582d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When 583d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads 584d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from 585d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from 586d784ac29SSamuel Ortizdirectly assigned devices. 587d784ac29SSamuel Ortiz 588d784ac29SSamuel Ortiz### Improved shared filesystem 589d784ac29SSamuel Ortiz 590d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt) 591d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system. 592d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest 593d784ac29SSamuel Ortizmemory footprint. 594d784ac29SSamuel Ortiz 595d784ac29SSamuel Ortiz### Ubuntu bionic based CI 596d784ac29SSamuel Ortiz 5978ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 598d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to 599d784ac29SSamuel Ortizour CI pipeline. 600d784ac29SSamuel Ortiz 60193b77530SSamuel Ortiz# v0.1.0 60293b77530SSamuel Ortiz 6038ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1). 60493b77530SSamuel Ortiz 60593b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include: 60693b77530SSamuel Ortiz 60793b77530SSamuel Ortiz### Shared filesystem 60893b77530SSamuel Ortiz 60993b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file 61093b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem 61193b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest. 61293b77530SSamuel Ortiz 6138ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md) 61493b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`. 61593b77530SSamuel Ortiz 61693b77530SSamuel Ortiz### Initial direct device assignment support 61793b77530SSamuel Ortiz 61893b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device 61993b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host 62093b77530SSamuel Ortizphysical devices into its guest. 62193b77530SSamuel Ortiz 6228ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md) 62393b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to 62493b77530SSamuel Ortiz`cloud-hypervisor` guests. 62593b77530SSamuel Ortiz 62693b77530SSamuel Ortiz### Userspace IOAPIC 62793b77530SSamuel Ortiz 62893b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by 62993b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC). 63093b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space, 63193b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode. 63293b77530SSamuel Ortiz 63393b77530SSamuel Ortiz### Virtual persistent memory 63493b77530SSamuel Ortiz 63593b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device 63693b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device 63793b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint. 63893b77530SSamuel Ortiz 63993b77530SSamuel Ortiz### Linux kernel bzImage 64093b77530SSamuel Ortiz 64193b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from 64293b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions 64393b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host 64493b77530SSamuel Ortizdistribution kernel image. 64593b77530SSamuel Ortiz 64693b77530SSamuel Ortiz### Console over virtio 64793b77530SSamuel Ortiz 64893b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although 64993b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot 65093b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console 65193b77530SSamuel Ortizimplementation. 65293b77530SSamuel Ortiz 65393b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console. 65493b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting 65593b77530SSamuel Ortiz`--serial tty --console off` from the command line. 65693b77530SSamuel Ortiz 65793b77530SSamuel Ortiz### Unit testing 65893b77530SSamuel Ortiz 65993b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI. 66093b77530SSamuel Ortiz 66193b77530SSamuel Ortiz### Integration tests parallelization 66293b77530SSamuel Ortiz 66393b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our 66493b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel. 665