1*96be8229SRob Bradford- [v0.7.0](#v070) 2*96be8229SRob Bradford - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug) 3*96be8229SRob Bradford - [Alternative `libc` Support](#alternative-libc-support) 4*96be8229SRob Bradford - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends) 5*96be8229SRob Bradford - [Initial RamFS Support](#initial-ramfs-support) 6*96be8229SRob Bradford - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem) 7*96be8229SRob Bradford - [`Seccomp` Sandboxing](#seccomp-sandboxing) 8*96be8229SRob Bradford - [Updated Distribution Support](#updated-distribution-support) 9*96be8229SRob Bradford - [Command Line and API Changes](#command-line-and-api-changes) 10*96be8229SRob Bradford - [Contributors](#contributors) 1103cb26ccSSamuel Ortiz- [v0.6.0](#v060) 1203cb26ccSSamuel Ortiz - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug) 1303cb26ccSSamuel Ortiz - [Shared Filesystem Improvements](#shared-filesystem-improvements) 1403cb26ccSSamuel Ortiz - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading) 1503cb26ccSSamuel Ortiz - [Command Line Interface](#command-line-interface) 1603cb26ccSSamuel Ortiz - [PVH Boot](#pvh-boot) 17*96be8229SRob Bradford - [Contributors](#contributors-1) 1894f2fc33SRob Bradford- [v0.5.1](#v051) 192f395e60SSamuel Ortiz- [v0.5.0](#v050) 2094f2fc33SRob Bradford - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing) 2194f2fc33SRob Bradford - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization) 2294f2fc33SRob Bradford - [New Interrupt Management Framework](#new-interrupt-management-framework) 2394f2fc33SRob Bradford - [Development Tools](#development-tools) 2494f2fc33SRob Bradford - [Kata Containers Integration](#kata-containers-integration) 25*96be8229SRob Bradford - [Contributors](#contributors-2) 26cec884e8SSamuel Ortiz- [v0.4.0](#v040) 2794f2fc33SRob Bradford - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition) 2894f2fc33SRob Bradford - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation) 2994f2fc33SRob Bradford - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends) 3094f2fc33SRob Bradford - [Guest pause and resume](#guest-pause-and-resume) 3194f2fc33SRob Bradford - [Userspace IOAPIC by default](#userspace-ioapic-by-default) 3294f2fc33SRob Bradford - [PCI BAR reprogramming](#pci-bar-reprogramming) 3394f2fc33SRob Bradford - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization) 34*96be8229SRob Bradford - [Contributors](#contributors-3) 358e8a7b6dSSamuel Ortiz- [v0.3.0](#v030) 3694f2fc33SRob Bradford - [Block device offloading](#block-device-offloading) 3794f2fc33SRob Bradford - [Network device backend](#network-device-backend) 3894f2fc33SRob Bradford - [Virtual sockets](#virtual-sockets) 3994f2fc33SRob Bradford - [HTTP based API](#http-based-api) 4094f2fc33SRob Bradford - [Memory mapped virtio transport](#memory-mapped-virtio-transport) 4194f2fc33SRob Bradford - [Paravirtualized IOMMU](#paravirtualized-iommu) 4294f2fc33SRob Bradford - [Ubuntu 19.10](#ubuntu-1910) 4394f2fc33SRob Bradford - [Large memory guests](#large-memory-guests) 447688e6e2SSamuel Ortiz- [v0.2.0](#v020) 4594f2fc33SRob Bradford - [Network device offloading](#network-device-offloading) 4694f2fc33SRob Bradford - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi) 4794f2fc33SRob Bradford - [Debug I/O port](#debug-io-port) 4894f2fc33SRob Bradford - [Improved direct device assignment](#improved-direct-device-assignment) 4994f2fc33SRob Bradford - [Improved shared filesystem](#improved-shared-filesystem) 5094f2fc33SRob Bradford - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci) 517688e6e2SSamuel Ortiz- [v0.1.0](#v010) 5294f2fc33SRob Bradford - [Shared filesystem](#shared-filesystem) 5394f2fc33SRob Bradford - [Initial direct device assignment support](#initial-direct-device-assignment-support) 5494f2fc33SRob Bradford - [Userspace IOAPIC](#userspace-ioapic) 5594f2fc33SRob Bradford - [Virtual persistent memory](#virtual-persistent-memory) 5694f2fc33SRob Bradford - [Linux kernel bzImage](#linux-kernel-bzimage) 5794f2fc33SRob Bradford - [Console over virtio](#console-over-virtio) 5894f2fc33SRob Bradford - [Unit testing](#unit-testing) 5994f2fc33SRob Bradford - [Integration tests parallelization](#integration-tests-parallelization) 6094f2fc33SRob Bradford 61*96be8229SRob Bradford# v0.7.0 62*96be8229SRob Bradford 63*96be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 64*96be8229SRob Bradford 65*96be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include: 66*96be8229SRob Bradford 67*96be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug 68*96be8229SRob Bradford 69*96be8229SRob BradfordFurther to our effort to support modifying a running guest we now support 70*96be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network, 71*96be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI 72*96be8229SRob Bradfordbased tranport and is exposed through the HTTP API. The `ch-remote` utility 73*96be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has 74*96be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for 75*96be8229SRob Bradforddevices to ease their removal. 76*96be8229SRob Bradford 77*96be8229SRob Bradford### Alternative `libc` Support 78*96be8229SRob Bradford 79*96be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release 80*96be8229SRob Bradfordcontains a static binary compiled using that toolchain. 81*96be8229SRob Bradford 82*96be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends 83*96be8229SRob Bradford 84*96be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by 85*96be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to 86*96be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true` 87*96be8229SRob Bradfordis passed when the devices are created. 88*96be8229SRob Bradford 89*96be8229SRob Bradford### Initial RamFS Support 90*96be8229SRob Bradford 91*96be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to 92*96be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem. 93*96be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to 94*96be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very 95*96be8229SRob Bradfordminimal image. 96*96be8229SRob Bradford 97*96be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem` 98*96be8229SRob Bradford 99*96be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using 100*96be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the 101*96be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently 102*96be8229SRob Bradfordrequires kernel patches to be able to support it. 103*96be8229SRob Bradford 104*96be8229SRob Bradford### `Seccomp` Sandboxing 105*96be8229SRob Bradford 106*96be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the 107*96be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is 108*96be8229SRob Bradfordcontrolled by the `--seccomp` command line option. 109*96be8229SRob Bradford 110*96be8229SRob Bradford### Updated Distribution Support 111*96be8229SRob Bradford 112*96be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported 113*96be8229SRob Bradforddistributions and is part of our regular testing programme. 114*96be8229SRob Bradford 115*96be8229SRob Bradford### Command Line and API Changes 116*96be8229SRob Bradford 117*96be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes 118*96be8229SRob Bradford 119*96be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal. 120*96be8229SRob Bradford If no name is specified the VMM chooses one. 121*96be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing 122*96be8229SRob Bradford memory instead of providing a path. 123*96be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only 124*96be8229SRob Bradford supports a single Vsock device. The REST API has removed the vector for this 125*96be8229SRob Bradford option and replaced it with a single optional field. 126*96be8229SRob Bradford* There is enhanced validation of the command line and API provided 127*96be8229SRob Bradford configurations to ensure that the provided options are compatible e.g. that 128*96be8229SRob Bradford shared memory is in use if any attempt is made to used a `vhost-user` backed 129*96be8229SRob Bradford device. 130*96be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and 131*96be8229SRob Bradford `add-vsock` subcommands. For removal `remove-device` is used. The REST API 132*96be8229SRob Bradford has appropriate new HTTP endpoints too. 133*96be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size 134*96be8229SRob Bradford will be obtained from the file. A `discard_writes` option has also been added 135*96be8229SRob Bradford to provide the equivalent of a read-only file. 136*96be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align 137*96be8229SRob Bradford with those used by `--disk`. 138*96be8229SRob Bradford 139*96be8229SRob Bradford### Contributors 140*96be8229SRob Bradford 141*96be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces. 142*96be8229SRob Bradford 143*96be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 144*96be8229SRob Bradford* Bo Chen <chen.bo@intel.com> 145*96be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com> 146*96be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com> 147*96be8229SRob Bradford* Dean Sheather <dean@coder.com> 148*96be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com> 149*96be8229SRob Bradford* Hui Zhu <teawater@antfin.com> 150*96be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 151*96be8229SRob Bradford* Martin Xu <martin.xu@intel.com> 152*96be8229SRob Bradford* Muminul Islam <muislam@microsoft.com> 153*96be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com> 154*96be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com> 155*96be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com> 156*96be8229SRob Bradford* Sergio Lopez <slp@redhat.com> 157*96be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com> 158*96be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com> 159*96be8229SRob Bradford 16003cb26ccSSamuel Ortiz# v0.6.0 16103cb26ccSSamuel Ortiz 16203cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7). 16303cb26ccSSamuel Ortiz 16403cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include: 16503cb26ccSSamuel Ortiz 16603cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug 16703cb26ccSSamuel Ortiz 16803cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest 16903cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor 17003cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`) 17103cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for 17203cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor. 17303cb26ccSSamuel Ortiz 17403cb26ccSSamuel Ortiz### Shared Filesystem Improvements 17503cb26ccSSamuel Ortiz 17603cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements. 17703cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`, 17803cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we 17903cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and 18003cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations. 18103cb26ccSSamuel Ortiz 18203cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading 18303cb26ccSSamuel Ortiz 18403cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an 18503cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now 18603cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends 18703cb26ccSSamuel Ortizinto their own, separate processes. 18803cb26ccSSamuel OrtizThis provides a seamless parvirtualized I/O user experience for those who want 18903cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts. 19003cb26ccSSamuel Ortiz 19103cb26ccSSamuel Ortiz### Command Line Interface 19203cb26ccSSamuel Ortiz 19303cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the 19403cb26ccSSamuel Ortiz[Rest API](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml) 19503cb26ccSSamuel Ortizand thus only accessible via relatively cumbersome HTTP calls. In order 19603cb26ccSSamuel Ortizto abstract those calls into a more user friendly tool, we created a Cloud 19703cb26ccSSamuel OrtizHypervisor Command Line Interface (CLI) called `ch-remote`. 19803cb26ccSSamuel OrtizThe `ch-remote` binary is created with each build and available e.g. at 19903cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build. 20003cb26ccSSamuel Ortiz 20103cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available 20203cb26ccSSamuel Ortizcommands. 20303cb26ccSSamuel Ortiz 20403cb26ccSSamuel Ortiz### PVH Boot 20503cb26ccSSamuel Ortiz 20603cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now 20703cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html). 20803cb26ccSSamuel Ortiz 20903cb26ccSSamuel Ortiz### Contributors 21003cb26ccSSamuel Ortiz 21103cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks 21203cb26ccSSamuel Ortizto them and to everyone that contributed to this release: 21303cb26ccSSamuel Ortiz 21403cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com> 21503cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com> 21603cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com> 21703cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com> 21803cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 21903cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com> 22003cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 22103cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com> 22203cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 22303cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 22403cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 22503cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 22603cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com> 22703cb26ccSSamuel Ortiz 22894f2fc33SRob Bradford# v0.5.1 22994f2fc33SRob Bradford 23094f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes: 23194f2fc33SRob Bradford 23294f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez 23394f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf 23494f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz 23594f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford 23694f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford 2378e8a7b6dSSamuel Ortiz 2382f395e60SSamuel Ortiz# v0.5.0 2392f395e60SSamuel Ortiz 2402f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6). 2412f395e60SSamuel Ortiz 2422f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include: 2432f395e60SSamuel Ortiz 2442f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing 2452f395e60SSamuel Ortiz 2462f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and 2472f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor 2482f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases. 2492f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot 2502f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest. 2512f395e60SSamuel Ortiz 2522f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature. 2532f395e60SSamuel Ortiz 2542f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization 2552f395e60SSamuel Ortiz 2562f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use 2572f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default 2582f395e60SSamuel Ortizparavirtualized networking and block devices throughput. 2592f395e60SSamuel Ortiz 2602f395e60SSamuel Ortiz### New Interrupt Management Framework 2612f395e60SSamuel Ortiz 2622f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt 2632f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device) 2642f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed 2652f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and 2662f395e60SSamuel Ortizvirtio ones. 2672f395e60SSamuel Ortiz 2682f395e60SSamuel Ortiz### Development Tools 2692f395e60SSamuel Ortiz 2702f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our 2712f395e60SSamuel Ortizbuild, development and testing tools. 2722f395e60SSamuel OrtizSomehow similar to the excellent 2732f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool), 2742f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh). 2752f395e60SSamuel Ortiz 2762f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test 2772f395e60SSamuel OrtizCloud Hypervisor through a containerized environment. 2782f395e60SSamuel Ortiz 2792f395e60SSamuel Ortiz### Kata Containers Integration 2802f395e60SSamuel Ortiz 2812f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration 2822f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud 2832f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is 2842f395e60SSamuel Ortizintegrated into the project's CI. 2852f395e60SSamuel Ortiz 2862f395e60SSamuel Ortiz### Contributors 2872f395e60SSamuel Ortiz 2882f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release: 2892f395e60SSamuel Ortiz 2902f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com> 2912f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 2922f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 2932f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 2942f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 2952f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 2962f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 2972f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com> 2982f395e60SSamuel Ortiz 299cec884e8SSamuel Ortiz# v0.4.0 300cec884e8SSamuel Ortiz 301cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4). 302cec884e8SSamuel Ortiz 303cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include: 304cec884e8SSamuel Ortiz 305cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition 306cec884e8SSamuel Ortiz 307cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically 308cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug. 309cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs 310cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are 311cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md) 312cec884e8SSamuel Ortiz 313cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor 314cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory. 315cec884e8SSamuel Ortiz 316cec884e8SSamuel Ortiz### Programmatic firmware tables generation 317cec884e8SSamuel Ortiz 318cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot 319cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for 320cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated 321cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those 322cec884e8SSamuel Ortiztables based on the VMM device model and topology. 323cec884e8SSamuel Ortiz 324cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends 325cec884e8SSamuel Ortiz 326cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a 327cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based 328cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the 329cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the 330cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture. 331cec884e8SSamuel Ortiz 332cec884e8SSamuel Ortiz### Guest pause and resume 333cec884e8SSamuel Ortiz 334cec884e8SSamuel OrtizAs an initial requiremnt for enabling live migration, we added support for 335cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live 336cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause 337cec884e8SSamuel Ortizand resume capabilities. 338cec884e8SSamuel Ortiz 339cec884e8SSamuel Ortiz### Userspace IOAPIC by default 340cec884e8SSamuel Ortiz 341cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to 342cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on 343cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by 344cec884e8SSamuel Ortizdefault. 345cec884e8SSamuel Ortiz 346cec884e8SSamuel Ortiz### PCI BAR reprogramming 347cec884e8SSamuel Ortiz 348cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests 349cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR 350cec884e8SSamuel Ortizreprogramming. 351cec884e8SSamuel Ortiz 352cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization 353cec884e8SSamuel Ortiz 354cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project, 355cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor). 356cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 357cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux) 358cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 359cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to 360cec884e8SSamuel Ortiztemporarily fork. 361cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely 362cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers. 363cec884e8SSamuel Ortiz 364cec884e8SSamuel Ortiz### Contributors 365cec884e8SSamuel Ortiz 366cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release: 367cec884e8SSamuel Ortiz 368cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com> 369cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com> 370cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com> 371cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn> 372cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com> 373cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com> 374cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com> 375cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com> 376cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com> 377cec884e8SSamuel Ortiz 3788e8a7b6dSSamuel Ortiz# v0.3.0 3798e8a7b6dSSamuel Ortiz 3808ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3). 3818e8a7b6dSSamuel Ortiz 3828e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include: 3838e8a7b6dSSamuel Ortiz 3848e8a7b6dSSamuel Ortiz### Block device offloading 3858e8a7b6dSSamuel Ortiz 3868e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes, 3878e8a7b6dSSamuel Ortizand we added support for 3888e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends. 3898e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device 3908e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage 3918e8a7b6dSSamuel Ortizbackend. 3928e8a7b6dSSamuel Ortiz 3938e8a7b6dSSamuel Ortiz### Network device backend 3948e8a7b6dSSamuel Ortiz 3958e8a7b6dSSamuel OrtizThe previous release provided support for 3968e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we 3978e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together 3988e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the 3998e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture. 4008e8a7b6dSSamuel Ortiz 4018e8a7b6dSSamuel Ortiz### Virtual sockets 4028e8a7b6dSSamuel Ortiz 4038e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest, 4048e8a7b6dSSamuel Ortizwe added an hybrid implementation of the 4058e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address 4068e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the 4078e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md) 4088e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs. 4098e8a7b6dSSamuel Ortiz 4108e8a7b6dSSamuel Ortiz### HTTP based API 4118e8a7b6dSSamuel Ortiz 4128e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud 4138e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP 4148e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the 4158e8a7b6dSSamuel Ortiznext release cycle. 4168e8a7b6dSSamuel Ortiz 4178e8a7b6dSSamuel Ortiz### Memory mapped virtio transport 4188e8a7b6dSSamuel Ortiz 4198e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the 4208e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002) 4218e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest 4228e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation. 4238e8a7b6dSSamuel Ortiz 4248e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU 4258e8a7b6dSSamuel Ortiz 4268e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing 4278ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md) 4288e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly 4298e8a7b6dSSamuel Ortizassigned devices support. 4308e8a7b6dSSamuel Ortiz 4318e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor 4328e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual 4338e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be 4348e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]` 4358e8a7b6dSSamuel Ortizsetting. 4368e8a7b6dSSamuel Ortiz 4378e8a7b6dSSamuel Ortiz### Ubuntu 19.10 4388e8a7b6dSSamuel Ortiz 4398ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware), 4408e8a7b6dSSamuel Ortizwe can now support the latest 4418e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images. 4428e8a7b6dSSamuel Ortiz 4438e8a7b6dSSamuel Ortiz### Large memory guests 4448e8a7b6dSSamuel Ortiz 4458e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now 4468e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB). 4477688e6e2SSamuel Ortiz 448d784ac29SSamuel Ortiz# v0.2.0 449d784ac29SSamuel Ortiz 4508ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2). 451d784ac29SSamuel Ortiz 452d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include: 453d784ac29SSamuel Ortiz 454d784ac29SSamuel Ortiz### Network device offloading 455d784ac29SSamuel Ortiz 456d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external 457d784ac29SSamuel Ortizprocesses, we added support for 458d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This 459d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device 460d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend. 461d784ac29SSamuel Ortiz 462d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI 463d784ac29SSamuel Ortiz 464d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented 465d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with 466d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to 467d784ac29SSamuel Ortizcleanly reboot and shutdown. 468d784ac29SSamuel Ortiz 469d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is 470d784ac29SSamuel Ortizenabled by default. 471d784ac29SSamuel Ortiz 472d784ac29SSamuel Ortiz### Debug I/O port 473d784ac29SSamuel Ortiz 474d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest 475d784ac29SSamuel Ortizboot times, we added support for logging guest events through the 476d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html) 477d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time 4788ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md) 479d784ac29SSamuel Ortizfor more details. 480d784ac29SSamuel Ortiz 481d784ac29SSamuel Ortiz### Improved direct device assignment 482d784ac29SSamuel Ortiz 483d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When 484d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads 485d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from 486d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from 487d784ac29SSamuel Ortizdirectly assigned devices. 488d784ac29SSamuel Ortiz 489d784ac29SSamuel Ortiz### Improved shared filesystem 490d784ac29SSamuel Ortiz 491d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt) 492d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system. 493d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest 494d784ac29SSamuel Ortizmemory footprint. 495d784ac29SSamuel Ortiz 496d784ac29SSamuel Ortiz### Ubuntu bionic based CI 497d784ac29SSamuel Ortiz 4988ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) 499d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to 500d784ac29SSamuel Ortizour CI pipeline. 501d784ac29SSamuel Ortiz 50293b77530SSamuel Ortiz# v0.1.0 50393b77530SSamuel Ortiz 5048ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1). 50593b77530SSamuel Ortiz 50693b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include: 50793b77530SSamuel Ortiz 50893b77530SSamuel Ortiz### Shared filesystem 50993b77530SSamuel Ortiz 51093b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file 51193b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem 51293b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest. 51393b77530SSamuel Ortiz 5148ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md) 51593b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`. 51693b77530SSamuel Ortiz 51793b77530SSamuel Ortiz### Initial direct device assignment support 51893b77530SSamuel Ortiz 51993b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device 52093b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host 52193b77530SSamuel Ortizphysical devices into its guest. 52293b77530SSamuel Ortiz 5238ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md) 52493b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to 52593b77530SSamuel Ortiz`cloud-hypervisor` guests. 52693b77530SSamuel Ortiz 52793b77530SSamuel Ortiz### Userspace IOAPIC 52893b77530SSamuel Ortiz 52993b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by 53093b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC). 53193b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space, 53293b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode. 53393b77530SSamuel Ortiz 53493b77530SSamuel Ortiz### Virtual persistent memory 53593b77530SSamuel Ortiz 53693b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device 53793b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device 53893b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint. 53993b77530SSamuel Ortiz 54093b77530SSamuel Ortiz### Linux kernel bzImage 54193b77530SSamuel Ortiz 54293b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from 54393b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions 54493b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host 54593b77530SSamuel Ortizdistribution kernel image. 54693b77530SSamuel Ortiz 54793b77530SSamuel Ortiz### Console over virtio 54893b77530SSamuel Ortiz 54993b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although 55093b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot 55193b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console 55293b77530SSamuel Ortizimplementation. 55393b77530SSamuel Ortiz 55493b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console. 55593b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting 55693b77530SSamuel Ortiz`--serial tty --console off` from the command line. 55793b77530SSamuel Ortiz 55893b77530SSamuel Ortiz### Unit testing 55993b77530SSamuel Ortiz 56093b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI. 56193b77530SSamuel Ortiz 56293b77530SSamuel Ortiz### Integration tests parallelization 56393b77530SSamuel Ortiz 56493b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our 56593b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel. 566