xref: /cloud-hypervisor/release-notes.md (revision 52b839694deaf4dfedaa29c452e6ccf40f7bf467)
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