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