1*94f2fc33SRob Bradford- [v0.5.1](#v051) 22f395e60SSamuel Ortiz- [v0.5.0](#v050) 3*94f2fc33SRob Bradford - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing) 4*94f2fc33SRob Bradford - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization) 5*94f2fc33SRob Bradford - [New Interrupt Management Framework](#new-interrupt-management-framework) 6*94f2fc33SRob Bradford - [Development Tools](#development-tools) 7*94f2fc33SRob Bradford - [Kata Containers Integration](#kata-containers-integration) 8*94f2fc33SRob Bradford - [Contributors](#contributors) 9cec884e8SSamuel Ortiz- [v0.4.0](#v040) 10*94f2fc33SRob Bradford - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition) 11*94f2fc33SRob Bradford - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation) 12*94f2fc33SRob Bradford - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends) 13*94f2fc33SRob Bradford - [Guest pause and resume](#guest-pause-and-resume) 14*94f2fc33SRob Bradford - [Userspace IOAPIC by default](#userspace-ioapic-by-default) 15*94f2fc33SRob Bradford - [PCI BAR reprogramming](#pci-bar-reprogramming) 16*94f2fc33SRob Bradford - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization) 17*94f2fc33SRob Bradford - [Contributors](#contributors-1) 188e8a7b6dSSamuel Ortiz- [v0.3.0](#v030) 19*94f2fc33SRob Bradford - [Block device offloading](#block-device-offloading) 20*94f2fc33SRob Bradford - [Network device backend](#network-device-backend) 21*94f2fc33SRob Bradford - [Virtual sockets](#virtual-sockets) 22*94f2fc33SRob Bradford - [HTTP based API](#http-based-api) 23*94f2fc33SRob Bradford - [Memory mapped virtio transport](#memory-mapped-virtio-transport) 24*94f2fc33SRob Bradford - [Paravirtualized IOMMU](#paravirtualized-iommu) 25*94f2fc33SRob Bradford - [Ubuntu 19.10](#ubuntu-1910) 26*94f2fc33SRob Bradford - [Large memory guests](#large-memory-guests) 277688e6e2SSamuel Ortiz- [v0.2.0](#v020) 28*94f2fc33SRob Bradford - [Network device offloading](#network-device-offloading) 29*94f2fc33SRob Bradford - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi) 30*94f2fc33SRob Bradford - [Debug I/O port](#debug-io-port) 31*94f2fc33SRob Bradford - [Improved direct device assignment](#improved-direct-device-assignment) 32*94f2fc33SRob Bradford - [Improved shared filesystem](#improved-shared-filesystem) 33*94f2fc33SRob Bradford - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci) 347688e6e2SSamuel Ortiz- [v0.1.0](#v010) 35*94f2fc33SRob Bradford - [Shared filesystem](#shared-filesystem) 36*94f2fc33SRob Bradford - [Initial direct device assignment support](#initial-direct-device-assignment-support) 37*94f2fc33SRob Bradford - [Userspace IOAPIC](#userspace-ioapic) 38*94f2fc33SRob Bradford - [Virtual persistent memory](#virtual-persistent-memory) 39*94f2fc33SRob Bradford - [Linux kernel bzImage](#linux-kernel-bzimage) 40*94f2fc33SRob Bradford - [Console over virtio](#console-over-virtio) 41*94f2fc33SRob Bradford - [Unit testing](#unit-testing) 42*94f2fc33SRob Bradford - [Integration tests parallelization](#integration-tests-parallelization) 43*94f2fc33SRob Bradford 44*94f2fc33SRob Bradford# v0.5.1 45*94f2fc33SRob Bradford 46*94f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes: 47*94f2fc33SRob Bradford 48*94f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez 49*94f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf 50*94f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz 51*94f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford 52*94f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford 538e8a7b6dSSamuel Ortiz 542f395e60SSamuel Ortiz# v0.5.0 552f395e60SSamuel Ortiz 562f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6). 572f395e60SSamuel Ortiz 582f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include: 592f395e60SSamuel Ortiz 602f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing 612f395e60SSamuel Ortiz 622f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and 632f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor 642f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases. 652f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot 662f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest. 672f395e60SSamuel Ortiz 682f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature. 692f395e60SSamuel Ortiz 702f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization 712f395e60SSamuel Ortiz 722f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use 732f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default 742f395e60SSamuel Ortizparavirtualized networking and block devices throughput. 752f395e60SSamuel Ortiz 762f395e60SSamuel Ortiz### New Interrupt Management Framework 772f395e60SSamuel Ortiz 782f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt 792f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device) 802f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed 812f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and 822f395e60SSamuel Ortizvirtio ones. 832f395e60SSamuel Ortiz 842f395e60SSamuel Ortiz### Development Tools 852f395e60SSamuel Ortiz 862f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our 872f395e60SSamuel Ortizbuild, development and testing tools. 882f395e60SSamuel OrtizSomehow similar to the excellent 892f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool), 902f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh). 912f395e60SSamuel Ortiz 922f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test 932f395e60SSamuel OrtizCloud Hypervisor through a containerized environment. 942f395e60SSamuel Ortiz 952f395e60SSamuel Ortiz### Kata Containers Integration 962f395e60SSamuel Ortiz 972f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration 982f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud 992f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is 1002f395e60SSamuel Ortizintegrated into the project's CI. 1012f395e60SSamuel Ortiz 1022f395e60SSamuel Ortiz### Contributors 1032f395e60SSamuel Ortiz 1042f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release: 1052f395e60SSamuel Ortiz 1062f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com> 1072f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 1082f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 1092f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 1102f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 1112f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 1122f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 1132f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com> 1142f395e60SSamuel Ortiz 115cec884e8SSamuel Ortiz# v0.4.0 116cec884e8SSamuel Ortiz 117cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4). 118cec884e8SSamuel Ortiz 119cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include: 120cec884e8SSamuel Ortiz 121cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition 122cec884e8SSamuel Ortiz 123cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically 124cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug. 125cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs 126cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are 127cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md) 128cec884e8SSamuel Ortiz 129cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor 130cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory. 131cec884e8SSamuel Ortiz 132cec884e8SSamuel Ortiz### Programmatic firmware tables generation 133cec884e8SSamuel Ortiz 134cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot 135cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for 136cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated 137cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those 138cec884e8SSamuel Ortiztables based on the VMM device model and topology. 139cec884e8SSamuel Ortiz 140cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends 141cec884e8SSamuel Ortiz 142cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a 143cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based 144cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the 145cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the 146cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture. 147cec884e8SSamuel Ortiz 148cec884e8SSamuel Ortiz### Guest pause and resume 149cec884e8SSamuel Ortiz 150cec884e8SSamuel OrtizAs an initial requiremnt for enabling live migration, we added support for 151cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live 152cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause 153cec884e8SSamuel Ortizand resume capabilities. 154cec884e8SSamuel Ortiz 155cec884e8SSamuel Ortiz### Userspace IOAPIC by default 156cec884e8SSamuel Ortiz 157cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to 158cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on 159cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by 160cec884e8SSamuel Ortizdefault. 161cec884e8SSamuel Ortiz 162cec884e8SSamuel Ortiz### PCI BAR reprogramming 163cec884e8SSamuel Ortiz 164cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests 165cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR 166cec884e8SSamuel Ortizreprogramming. 167cec884e8SSamuel Ortiz 168cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization 169cec884e8SSamuel Ortiz 170cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project, 171cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor). 172cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 173cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux) 174cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 175cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to 176cec884e8SSamuel Ortiztemporarily fork. 177cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely 178cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers. 179cec884e8SSamuel Ortiz 180cec884e8SSamuel Ortiz### Contributors 181cec884e8SSamuel Ortiz 182cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release: 183cec884e8SSamuel Ortiz 184cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 185cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com> 186cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 187cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 188cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 189cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 190cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 191cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 192cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com> 193cec884e8SSamuel Ortiz 1948e8a7b6dSSamuel Ortiz# v0.3.0 1958e8a7b6dSSamuel Ortiz 1968ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3). 1978e8a7b6dSSamuel Ortiz 1988e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include: 1998e8a7b6dSSamuel Ortiz 2008e8a7b6dSSamuel Ortiz### Block device offloading 2018e8a7b6dSSamuel Ortiz 2028e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes, 2038e8a7b6dSSamuel Ortizand we added support for 2048e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends. 2058e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device 2068e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage 2078e8a7b6dSSamuel Ortizbackend. 2088e8a7b6dSSamuel Ortiz 2098e8a7b6dSSamuel Ortiz### Network device backend 2108e8a7b6dSSamuel Ortiz 2118e8a7b6dSSamuel OrtizThe previous release provided support for 2128e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we 2138e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together 2148e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the 2158e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture. 2168e8a7b6dSSamuel Ortiz 2178e8a7b6dSSamuel Ortiz### Virtual sockets 2188e8a7b6dSSamuel Ortiz 2198e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest, 2208e8a7b6dSSamuel Ortizwe added an hybrid implementation of the 2218e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address 2228e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the 2238e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md) 2248e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs. 2258e8a7b6dSSamuel Ortiz 2268e8a7b6dSSamuel Ortiz### HTTP based API 2278e8a7b6dSSamuel Ortiz 2288e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud 2298e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP 2308e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the 2318e8a7b6dSSamuel Ortiznext release cycle. 2328e8a7b6dSSamuel Ortiz 2338e8a7b6dSSamuel Ortiz### Memory mapped virtio transport 2348e8a7b6dSSamuel Ortiz 2358e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the 2368e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002) 2378e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest 2388e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation. 2398e8a7b6dSSamuel Ortiz 2408e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU 2418e8a7b6dSSamuel Ortiz 2428e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing 2438ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md) 2448e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly 2458e8a7b6dSSamuel Ortizassigned devices support. 2468e8a7b6dSSamuel Ortiz 2478e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor 2488e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual 2498e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be 2508e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]` 2518e8a7b6dSSamuel Ortizsetting. 2528e8a7b6dSSamuel Ortiz 2538e8a7b6dSSamuel Ortiz### Ubuntu 19.10 2548e8a7b6dSSamuel Ortiz 2558ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware), 2568e8a7b6dSSamuel Ortizwe can now support the latest 2578e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images. 2588e8a7b6dSSamuel Ortiz 2598e8a7b6dSSamuel Ortiz### Large memory guests 2608e8a7b6dSSamuel Ortiz 2618e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now 2628e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB). 2637688e6e2SSamuel Ortiz 264d784ac29SSamuel Ortiz# v0.2.0 265d784ac29SSamuel Ortiz 2668ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2). 267d784ac29SSamuel Ortiz 268d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include: 269d784ac29SSamuel Ortiz 270d784ac29SSamuel Ortiz### Network device offloading 271d784ac29SSamuel Ortiz 272d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external 273d784ac29SSamuel Ortizprocesses, we added support for 274d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This 275d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device 276d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend. 277d784ac29SSamuel Ortiz 278d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI 279d784ac29SSamuel Ortiz 280d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented 281d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with 282d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to 283d784ac29SSamuel Ortizcleanly reboot and shutdown. 284d784ac29SSamuel Ortiz 285d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is 286d784ac29SSamuel Ortizenabled by default. 287d784ac29SSamuel Ortiz 288d784ac29SSamuel Ortiz### Debug I/O port 289d784ac29SSamuel Ortiz 290d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest 291d784ac29SSamuel Ortizboot times, we added support for logging guest events through the 292d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html) 293d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time 2948ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md) 295d784ac29SSamuel Ortizfor more details. 296d784ac29SSamuel Ortiz 297d784ac29SSamuel Ortiz### Improved direct device assignment 298d784ac29SSamuel Ortiz 299d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When 300d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads 301d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from 302d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from 303d784ac29SSamuel Ortizdirectly assigned devices. 304d784ac29SSamuel Ortiz 305d784ac29SSamuel Ortiz### Improved shared filesystem 306d784ac29SSamuel Ortiz 307d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt) 308d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system. 309d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest 310d784ac29SSamuel Ortizmemory footprint. 311d784ac29SSamuel Ortiz 312d784ac29SSamuel Ortiz### Ubuntu bionic based CI 313d784ac29SSamuel Ortiz 3148ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 315d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to 316d784ac29SSamuel Ortizour CI pipeline. 317d784ac29SSamuel Ortiz 31893b77530SSamuel Ortiz# v0.1.0 31993b77530SSamuel Ortiz 3208ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1). 32193b77530SSamuel Ortiz 32293b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include: 32393b77530SSamuel Ortiz 32493b77530SSamuel Ortiz### Shared filesystem 32593b77530SSamuel Ortiz 32693b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file 32793b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem 32893b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest. 32993b77530SSamuel Ortiz 3308ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md) 33193b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`. 33293b77530SSamuel Ortiz 33393b77530SSamuel Ortiz### Initial direct device assignment support 33493b77530SSamuel Ortiz 33593b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device 33693b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host 33793b77530SSamuel Ortizphysical devices into its guest. 33893b77530SSamuel Ortiz 3398ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md) 34093b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to 34193b77530SSamuel Ortiz`cloud-hypervisor` guests. 34293b77530SSamuel Ortiz 34393b77530SSamuel Ortiz### Userspace IOAPIC 34493b77530SSamuel Ortiz 34593b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by 34693b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC). 34793b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space, 34893b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode. 34993b77530SSamuel Ortiz 35093b77530SSamuel Ortiz### Virtual persistent memory 35193b77530SSamuel Ortiz 35293b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device 35393b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device 35493b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint. 35593b77530SSamuel Ortiz 35693b77530SSamuel Ortiz### Linux kernel bzImage 35793b77530SSamuel Ortiz 35893b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from 35993b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions 36093b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host 36193b77530SSamuel Ortizdistribution kernel image. 36293b77530SSamuel Ortiz 36393b77530SSamuel Ortiz### Console over virtio 36493b77530SSamuel Ortiz 36593b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although 36693b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot 36793b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console 36893b77530SSamuel Ortizimplementation. 36993b77530SSamuel Ortiz 37093b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console. 37193b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting 37293b77530SSamuel Ortiz`--serial tty --console off` from the command line. 37393b77530SSamuel Ortiz 37493b77530SSamuel Ortiz### Unit testing 37593b77530SSamuel Ortiz 37693b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI. 37793b77530SSamuel Ortiz 37893b77530SSamuel Ortiz### Integration tests parallelization 37993b77530SSamuel Ortiz 38093b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our 38193b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel. 382