xref: /cloud-hypervisor/release-notes.md (revision 198bd55122806a7508b6232e1402b923b8b88c7f)
1*198bd551SRob Bradford- [v0.10.0](#v0100)
2*198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
3*198bd551SRob Bradford    - [Memory Zones](#memory-zones)
4*198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
5*198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
652b83969SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes)
752b83969SRob Bradford    - [Contributors](#contributors)
8d714cf81SRob Bradford- [v0.9.0](#v090)
9d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
10d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
11d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
12d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
13d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
14d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
15d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
16d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
17d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
18d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
19*198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
20*198bd551SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-1)
21*198bd551SRob Bradford    - [Contributors](#contributors-1)
22d714cf81SRob Bradford- [v0.8.0](#v080)
23d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
24d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
25d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
26d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
27d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
28*198bd551SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-2)
29d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
30*198bd551SRob Bradford    - [Contributors](#contributors-2)
3196be8229SRob Bradford- [v0.7.0](#v070)
3296be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
3396be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
3496be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
3596be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
3696be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
3796be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
3896be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
3952b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
40*198bd551SRob Bradford    - [Contributors](#contributors-3)
4103cb26ccSSamuel Ortiz- [v0.6.0](#v060)
4203cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
4303cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
4403cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
4503cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
4603cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
47*198bd551SRob Bradford    - [Contributors](#contributors-4)
4894f2fc33SRob Bradford- [v0.5.1](#v051)
492f395e60SSamuel Ortiz- [v0.5.0](#v050)
5094f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
5194f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
5294f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
5394f2fc33SRob Bradford    - [Development Tools](#development-tools)
5494f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
55*198bd551SRob Bradford    - [Contributors](#contributors-5)
56cec884e8SSamuel Ortiz- [v0.4.0](#v040)
5794f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
5894f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
5994f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
6094f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
6194f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
6294f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
6394f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
64*198bd551SRob Bradford    - [Contributors](#contributors-6)
658e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
6694f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
6794f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
6894f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
6994f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
7094f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
7194f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
7294f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
7394f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
747688e6e2SSamuel Ortiz- [v0.2.0](#v020)
7594f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
7694f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
7794f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
7894f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
7994f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
8094f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
817688e6e2SSamuel Ortiz- [v0.1.0](#v010)
8294f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
8394f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
8494f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
8594f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
8694f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
8794f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
8894f2fc33SRob Bradford    - [Unit testing](#unit-testing)
8994f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
9094f2fc33SRob Bradford
91*198bd551SRob Bradford# v0.10.0
92*198bd551SRob Bradford
93*198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
94*198bd551SRob Bradford
95*198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
96*198bd551SRob Bradford
97*198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
98*198bd551SRob Bradford
99*198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
100*198bd551SRob Bradford
101*198bd551SRob Bradford### Memory Zones
102*198bd551SRob Bradford
103*198bd551SRob BradfordSupport has been added for fine grained control of memory allocation for the guest. This includes controlling the backing of sections of guest memory, assigning to specific host NUMA nodes and assigning memory and vCPUs to specific memory nodes inside the guest. Full details of this can be found in the [memory documentation](docs/memory.md).
104*198bd551SRob Bradford
105*198bd551SRob Bradford### `Seccomp` Sandbox Improvements
106*198bd551SRob Bradford
107*198bd551SRob BradfordAll the remaining threads and devices are now isolated within their own `seccomp` filters. This provides a layer of sandboxing and enhances the security model of `cloud-hypervisor`.
108*198bd551SRob Bradford
109*198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
110*198bd551SRob Bradford
111*198bd551SRob BradfordA new option (`kvm_hyperv`) has been added to `--cpus` to provide an option to toggle on KVM's HyperV emulation support. This enables progress towards booting Windows without adding extra emulated devices.
112*198bd551SRob Bradford
113*198bd551SRob Bradford### Notable Bug Fixes
114*198bd551SRob Bradford
115*198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
116*198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
117*198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
118*198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
119*198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
120*198bd551SRob Bradford
121*198bd551SRob Bradford### Contributors
122*198bd551SRob Bradford
123*198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
124*198bd551SRob Bradford
125*198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
126*198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
127*198bd551SRob Bradford* Anatol Belski <ab@php.net>
128*198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
129*198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
130*198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
131*198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
132*198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
133*198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
134*198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
135*198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
136*198bd551SRob Bradford
137d714cf81SRob Bradford# v0.9.0
138d714cf81SRob Bradford
139d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
140d714cf81SRob Bradford
141d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
142d714cf81SRob Bradford
143d714cf81SRob Bradford### `io_uring` Based Block Device Support
144d714cf81SRob Bradford
145d714cf81SRob BradfordIf the `io_uring` feature is enabled and the host kernel supports it then `io_uring` will be used for block devices. This results a very significant performance improvement.
146d714cf81SRob Bradford
147d714cf81SRob Bradford### Block and Network Device Statistics
148d714cf81SRob Bradford
149d714cf81SRob BradfordStatistics for activity of the `virtio` network and block devices is now exposed through a new `vm.counters` HTTP API entry point. These take the form of simple counters which can be used to observe the activity of the VM.
150d714cf81SRob Bradford
151d714cf81SRob Bradford### HTTP API Responses
152d714cf81SRob Bradford
153d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
154d714cf81SRob Bradford
155d714cf81SRob Bradford### CPU Topology
156d714cf81SRob Bradford
157d714cf81SRob BradfordA `topology` parameter has been added to `--cpus` which allows the configuration of the guest CPU topology allowing the user to specify the numbers of sockets, packages per socket, cores per package and threads per core.
158d714cf81SRob Bradford
159d714cf81SRob Bradford### Release Build Optimization
160d714cf81SRob Bradford
161d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
162d714cf81SRob Bradford
163d714cf81SRob Bradford### Hypervisor Abstraction
164d714cf81SRob Bradford
165d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
166d714cf81SRob Bradford
167d714cf81SRob Bradford### Snapshot/Restore Improvements
168d714cf81SRob Bradford
169d714cf81SRob BradfordMultiple improvements have been made to the VM snapshot/restore support that was added in the last release. This includes persisting more vCPU state and in particular preserving the guest paravirtualized clock in order to avoid vCPU hangs inside the guest when running with multiple vCPUs.
170d714cf81SRob Bradford
171d714cf81SRob Bradford### Virtio Memory Ballooning Support
172d714cf81SRob Bradford
173d714cf81SRob BradfordA `virtio-balloon` device has been added, controlled through the `resize` control, which allows the reclamation of host memory by resizing a memory balloon inside the guest.
174d714cf81SRob Bradford
175d714cf81SRob Bradford### Enhancements to ARM64 Support
176d714cf81SRob Bradford
177d714cf81SRob BradfordThe ARM64 support introduced in the last release has been further enhanced with support for using PCI for exposing devices into the guest as well as multiple bug fixes. It also now supports using an initramfs when booting.
178d714cf81SRob Bradford
179d714cf81SRob Bradford### Intel SGX Support
180d714cf81SRob Bradford
181d714cf81SRob BradfordThe guest can now use Intel SGX if the host supports it. Details can be found in the dedicated [SGX documentation](docs/intel_sgx.md).
182d714cf81SRob Bradford
183d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
184d714cf81SRob Bradford
185d714cf81SRob BradfordThe most frequently used virtio devices are now isolated with their own `seccomp` filters. It is also now possible to pass `--seccomp=log` which result in the logging of requests that would have otherwise been denied to further aid development.
186d714cf81SRob Bradford
187d714cf81SRob Bradford### Notable Bug Fixes
188d714cf81SRob Bradford
189d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
190d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
191d714cf81SRob Bradford* A workaround is now in place for when KVM reports MSRs available MSRs that are in fact unreadable preventing snapshot/restore from working correctly (#1543).
192d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
193d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
194d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
195d714cf81SRob Bradford
196d714cf81SRob Bradford### Contributors
197d714cf81SRob Bradford
198d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
199d714cf81SRob Bradford
200d714cf81SRob Bradford* Anatol Belski <ab@php.net>
201d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
202d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
203d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
204d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
205d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
206d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
207d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
208d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
209d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
210d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
211d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
212d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
213d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
214d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
215d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
216d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
217d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
218d714cf81SRob Bradford
219d714cf81SRob Bradford
22052b83969SRob Bradford# v0.8.0
22152b83969SRob Bradford
22252b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
22352b83969SRob Bradford
22452b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
22552b83969SRob Bradford
22652b83969SRob Bradford### Experimental Snapshot and Restore Support
22752b83969SRob Bradford
22852b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
22952b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
23052b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
23152b83969SRob Bradfordoriginal VM at the point it was paused.
23252b83969SRob Bradford
23352b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
23452b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
23552b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
23652b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
23752b83969SRob Bradford(#1176).
23852b83969SRob Bradford
23952b83969SRob Bradford### Experimental ARM64 Support
24052b83969SRob Bradford
24152b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
24252b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
24352b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
24452b83969SRob Bradford
24552b83969SRob Bradford### Support for Using 5-level Paging in Guests
24652b83969SRob Bradford
24752b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
24852b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
24952b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
25052b83969SRob Bradfordwork due to current limitations in the PVH boot process.
25152b83969SRob Bradford
25252b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
25352b83969SRob Bradford
25452b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
25552b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
25652b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
25752b83969SRob Bradfordthe guest must service.
25852b83969SRob Bradford
25952b83969SRob Bradford### `vhost_user_fs` Improvements
26052b83969SRob Bradford
26152b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
26252b83969SRob Bradford
26352b83969SRob Bradford
26452b83969SRob Bradford### Notable Bug Fixes
26552b83969SRob Bradford
26652b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
26752b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
26852b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
26952b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
27052b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
27152b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
27252b83969SRob Bradford  #1216).
27352b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
27452b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
27552b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
27652b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
27752b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
27852b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
27952b83969SRob Bradford  (#751).
28052b83969SRob Bradford
28152b83969SRob Bradford### Command Line and API Changes
28252b83969SRob Bradford
28352b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
28452b83969SRob Bradford
28552b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
28652b83969SRob Bradford  rather than `sock` in some cases.
28752b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
28852b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
28952b83969SRob Bradford  offered for negotiation.
29052b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
29152b83969SRob Bradford  address for the `tap` device on the host.
29252b83969SRob Bradford
29352b83969SRob Bradford### Contributors
29452b83969SRob Bradford
29552b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
29652b83969SRob Bradford
29752b83969SRob Bradford* Anatol Belski <ab@php.net>
29852b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
29952b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
30052b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
30152b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
30252b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
30352b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
30452b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
30552b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
30652b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
30752b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
30852b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
30952b83969SRob Bradford
31096be8229SRob Bradford# v0.7.0
31196be8229SRob Bradford
31296be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
31396be8229SRob Bradford
31496be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
31596be8229SRob Bradford
31696be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
31796be8229SRob Bradford
31896be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
31996be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
32096be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
32196be8229SRob Bradfordbased tranport and is exposed through the HTTP API. The `ch-remote` utility
32296be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
32396be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
32496be8229SRob Bradforddevices to ease their removal.
32596be8229SRob Bradford
32696be8229SRob Bradford### Alternative `libc` Support
32796be8229SRob Bradford
32896be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
32996be8229SRob Bradfordcontains a static binary compiled using that toolchain.
33096be8229SRob Bradford
33196be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
33296be8229SRob Bradford
33396be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
33496be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
33596be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
33696be8229SRob Bradfordis passed when the devices are created.
33796be8229SRob Bradford
33896be8229SRob Bradford### Initial RamFS Support
33996be8229SRob Bradford
34096be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
34196be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
34296be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
34396be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
34496be8229SRob Bradfordminimal image.
34596be8229SRob Bradford
34696be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
34796be8229SRob Bradford
34896be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
34996be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
35096be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
35196be8229SRob Bradfordrequires kernel patches to be able to support it.
35296be8229SRob Bradford
35396be8229SRob Bradford### `Seccomp` Sandboxing
35496be8229SRob Bradford
35596be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
35696be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
35796be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
35896be8229SRob Bradford
35996be8229SRob Bradford### Updated Distribution Support
36096be8229SRob Bradford
36196be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
36296be8229SRob Bradforddistributions and is part of our regular testing programme.
36396be8229SRob Bradford
36496be8229SRob Bradford### Command Line and API Changes
36596be8229SRob Bradford
36696be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
36796be8229SRob Bradford
36896be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
36996be8229SRob Bradford  If no name is specified the VMM chooses one.
37096be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
37196be8229SRob Bradford  memory instead of providing a path.
37296be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
37396be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
37496be8229SRob Bradford  option and replaced it with a single optional field.
37596be8229SRob Bradford* There is enhanced validation of the command line and API provided
37696be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
37796be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
37896be8229SRob Bradford  device.
37996be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
38096be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
38196be8229SRob Bradford  has appropriate new HTTP endpoints too.
38296be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
38396be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
38496be8229SRob Bradford  to provide the equivalent of a read-only file.
38596be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
38696be8229SRob Bradford  with those used by `--disk`.
38796be8229SRob Bradford
38896be8229SRob Bradford### Contributors
38996be8229SRob Bradford
39096be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
39196be8229SRob Bradford
39296be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
39396be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
39496be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
39596be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
39696be8229SRob Bradford* Dean Sheather <dean@coder.com>
39796be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
39896be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
39996be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
40096be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
40196be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
40296be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
40396be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
40496be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
40596be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
40696be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
40796be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
40896be8229SRob Bradford
40903cb26ccSSamuel Ortiz# v0.6.0
41003cb26ccSSamuel Ortiz
41103cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
41203cb26ccSSamuel Ortiz
41303cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
41403cb26ccSSamuel Ortiz
41503cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
41603cb26ccSSamuel Ortiz
41703cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
41803cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
41903cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
42003cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
42103cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
42203cb26ccSSamuel Ortiz
42303cb26ccSSamuel Ortiz### Shared Filesystem Improvements
42403cb26ccSSamuel Ortiz
42503cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
42603cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
42703cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
42803cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
42903cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
43003cb26ccSSamuel Ortiz
43103cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
43203cb26ccSSamuel Ortiz
43303cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
43403cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
43503cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
43603cb26ccSSamuel Ortizinto their own, separate processes.
43703cb26ccSSamuel OrtizThis provides a seamless parvirtualized I/O user experience for those who want
43803cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
43903cb26ccSSamuel Ortiz
44003cb26ccSSamuel Ortiz### Command Line Interface
44103cb26ccSSamuel Ortiz
44203cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
44303cb26ccSSamuel Ortiz[Rest API](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/vmm/src/api/openapi/cloud-hypervisor.yaml)
44403cb26ccSSamuel Ortizand thus only accessible via relatively cumbersome HTTP calls. In order
44503cb26ccSSamuel Ortizto abstract those calls into a more user friendly tool, we created a Cloud
44603cb26ccSSamuel OrtizHypervisor Command Line Interface (CLI) called `ch-remote`.
44703cb26ccSSamuel OrtizThe `ch-remote` binary is created with each build and available e.g. at
44803cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
44903cb26ccSSamuel Ortiz
45003cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
45103cb26ccSSamuel Ortizcommands.
45203cb26ccSSamuel Ortiz
45303cb26ccSSamuel Ortiz### PVH Boot
45403cb26ccSSamuel Ortiz
45503cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
45603cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
45703cb26ccSSamuel Ortiz
45803cb26ccSSamuel Ortiz### Contributors
45903cb26ccSSamuel Ortiz
46003cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
46103cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
46203cb26ccSSamuel Ortiz
46303cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
46403cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
46503cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
46603cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
46703cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
46803cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
46903cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
47003cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
47103cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
47203cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
47303cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
47403cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
47503cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
47603cb26ccSSamuel Ortiz
47794f2fc33SRob Bradford# v0.5.1
47894f2fc33SRob Bradford
47994f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
48094f2fc33SRob Bradford
48194f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
48294f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
48394f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
48494f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
48594f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
4868e8a7b6dSSamuel Ortiz
4872f395e60SSamuel Ortiz# v0.5.0
4882f395e60SSamuel Ortiz
4892f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
4902f395e60SSamuel Ortiz
4912f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
4922f395e60SSamuel Ortiz
4932f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
4942f395e60SSamuel Ortiz
4952f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
4962f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
4972f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
4982f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
4992f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
5002f395e60SSamuel Ortiz
5012f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
5022f395e60SSamuel Ortiz
5032f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
5042f395e60SSamuel Ortiz
5052f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
5062f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
5072f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
5082f395e60SSamuel Ortiz
5092f395e60SSamuel Ortiz### New Interrupt Management Framework
5102f395e60SSamuel Ortiz
5112f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
5122f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
5132f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
5142f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
5152f395e60SSamuel Ortizvirtio ones.
5162f395e60SSamuel Ortiz
5172f395e60SSamuel Ortiz### Development Tools
5182f395e60SSamuel Ortiz
5192f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
5202f395e60SSamuel Ortizbuild, development and testing tools.
5212f395e60SSamuel OrtizSomehow similar to the excellent
5222f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
5232f395e60SSamuel Ortizwe now provide a [dev_cli script](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/scripts/dev_cli.sh).
5242f395e60SSamuel Ortiz
5252f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
5262f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
5272f395e60SSamuel Ortiz
5282f395e60SSamuel Ortiz### Kata Containers Integration
5292f395e60SSamuel Ortiz
5302f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
5312f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
5322f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
5332f395e60SSamuel Ortizintegrated into the project's CI.
5342f395e60SSamuel Ortiz
5352f395e60SSamuel Ortiz### Contributors
5362f395e60SSamuel Ortiz
5372f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
5382f395e60SSamuel Ortiz
5392f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
5402f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
5412f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
5422f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
5432f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
5442f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
5452f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
5462f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
5472f395e60SSamuel Ortiz
548cec884e8SSamuel Ortiz# v0.4.0
549cec884e8SSamuel Ortiz
550cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
551cec884e8SSamuel Ortiz
552cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
553cec884e8SSamuel Ortiz
554cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
555cec884e8SSamuel Ortiz
556cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
557cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
558cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
559cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
560cec884e8SSamuel Ortizdocumented [here](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/hotplug.md)
561cec884e8SSamuel Ortiz
562cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
563cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
564cec884e8SSamuel Ortiz
565cec884e8SSamuel Ortiz### Programmatic firmware tables generation
566cec884e8SSamuel Ortiz
567cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
568cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
569cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
570cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
571cec884e8SSamuel Ortiztables based on the VMM device model and topology.
572cec884e8SSamuel Ortiz
573cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
574cec884e8SSamuel Ortiz
575cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
576cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
577cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
578cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
579cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
580cec884e8SSamuel Ortiz
581cec884e8SSamuel Ortiz### Guest pause and resume
582cec884e8SSamuel Ortiz
583cec884e8SSamuel OrtizAs an initial requiremnt for enabling live migration, we added support for
584cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
585cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
586cec884e8SSamuel Ortizand resume capabilities.
587cec884e8SSamuel Ortiz
588cec884e8SSamuel Ortiz### Userspace IOAPIC by default
589cec884e8SSamuel Ortiz
590cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
591cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
592cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
593cec884e8SSamuel Ortizdefault.
594cec884e8SSamuel Ortiz
595cec884e8SSamuel Ortiz### PCI BAR reprogramming
596cec884e8SSamuel Ortiz
597cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
598cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
599cec884e8SSamuel Ortizreprogramming.
600cec884e8SSamuel Ortiz
601cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
602cec884e8SSamuel Ortiz
603cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
604cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
605cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
606cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
607cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
608cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
609cec884e8SSamuel Ortiztemporarily fork.
610cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
611cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
612cec884e8SSamuel Ortiz
613cec884e8SSamuel Ortiz### Contributors
614cec884e8SSamuel Ortiz
615cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
616cec884e8SSamuel Ortiz
617cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
618cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
619cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
620cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
621cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
622cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
623cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
624cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
625cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
626cec884e8SSamuel Ortiz
6278e8a7b6dSSamuel Ortiz# v0.3.0
6288e8a7b6dSSamuel Ortiz
6298ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
6308e8a7b6dSSamuel Ortiz
6318e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
6328e8a7b6dSSamuel Ortiz
6338e8a7b6dSSamuel Ortiz### Block device offloading
6348e8a7b6dSSamuel Ortiz
6358e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
6368e8a7b6dSSamuel Ortizand we added support for
6378e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
6388e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
6398e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
6408e8a7b6dSSamuel Ortizbackend.
6418e8a7b6dSSamuel Ortiz
6428e8a7b6dSSamuel Ortiz### Network device backend
6438e8a7b6dSSamuel Ortiz
6448e8a7b6dSSamuel OrtizThe previous release provided support for
6458e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
6468e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
6478e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
6488e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
6498e8a7b6dSSamuel Ortiz
6508e8a7b6dSSamuel Ortiz### Virtual sockets
6518e8a7b6dSSamuel Ortiz
6528e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
6538e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
6548e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
6558e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
6568e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
6578e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
6588e8a7b6dSSamuel Ortiz
6598e8a7b6dSSamuel Ortiz### HTTP based API
6608e8a7b6dSSamuel Ortiz
6618e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
6628e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
6638e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
6648e8a7b6dSSamuel Ortiznext release cycle.
6658e8a7b6dSSamuel Ortiz
6668e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
6678e8a7b6dSSamuel Ortiz
6688e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
6698e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
6708e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
6718e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
6728e8a7b6dSSamuel Ortiz
6738e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
6748e8a7b6dSSamuel Ortiz
6758e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
6768ec89bc8SRob Bradforda [paravirtualized IOMMU](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/iommu.md)
6778e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly
6788e8a7b6dSSamuel Ortizassigned devices support.
6798e8a7b6dSSamuel Ortiz
6808e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
6818e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
6828e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
6838e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
6848e8a7b6dSSamuel Ortizsetting.
6858e8a7b6dSSamuel Ortiz
6868e8a7b6dSSamuel Ortiz### Ubuntu 19.10
6878e8a7b6dSSamuel Ortiz
6888ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
6898e8a7b6dSSamuel Ortizwe can now support the latest
6908e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
6918e8a7b6dSSamuel Ortiz
6928e8a7b6dSSamuel Ortiz### Large memory guests
6938e8a7b6dSSamuel Ortiz
6948e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
6958e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
6967688e6e2SSamuel Ortiz
697d784ac29SSamuel Ortiz# v0.2.0
698d784ac29SSamuel Ortiz
6998ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
700d784ac29SSamuel Ortiz
701d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
702d784ac29SSamuel Ortiz
703d784ac29SSamuel Ortiz### Network device offloading
704d784ac29SSamuel Ortiz
705d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
706d784ac29SSamuel Ortizprocesses, we added support for
707d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
708d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
709d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
710d784ac29SSamuel Ortiz
711d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
712d784ac29SSamuel Ortiz
713d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
714d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
715d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
716d784ac29SSamuel Ortizcleanly reboot and shutdown.
717d784ac29SSamuel Ortiz
718d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
719d784ac29SSamuel Ortizenabled by default.
720d784ac29SSamuel Ortiz
721d784ac29SSamuel Ortiz### Debug I/O port
722d784ac29SSamuel Ortiz
723d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
724d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
725d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
726d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
7278ec89bc8SRob Bradfordmeasurements. See our [debug port documentation](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/debug-port.md)
728d784ac29SSamuel Ortizfor more details.
729d784ac29SSamuel Ortiz
730d784ac29SSamuel Ortiz### Improved direct device assignment
731d784ac29SSamuel Ortiz
732d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
733d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
734d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
735d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
736d784ac29SSamuel Ortizdirectly assigned devices.
737d784ac29SSamuel Ortiz
738d784ac29SSamuel Ortiz### Improved shared filesystem
739d784ac29SSamuel Ortiz
740d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
741d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
742d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
743d784ac29SSamuel Ortizmemory footprint.
744d784ac29SSamuel Ortiz
745d784ac29SSamuel Ortiz### Ubuntu bionic based CI
746d784ac29SSamuel Ortiz
7478ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
748d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
749d784ac29SSamuel Ortizour CI pipeline.
750d784ac29SSamuel Ortiz
75193b77530SSamuel Ortiz# v0.1.0
75293b77530SSamuel Ortiz
7538ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
75493b77530SSamuel Ortiz
75593b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
75693b77530SSamuel Ortiz
75793b77530SSamuel Ortiz### Shared filesystem
75893b77530SSamuel Ortiz
75993b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
76093b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
76193b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
76293b77530SSamuel Ortiz
7638ec89bc8SRob BradfordSee our [filesystem sharing](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/fs.md)
76493b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`.
76593b77530SSamuel Ortiz
76693b77530SSamuel Ortiz### Initial direct device assignment support
76793b77530SSamuel Ortiz
76893b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
76993b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
77093b77530SSamuel Ortizphysical devices into its guest.
77193b77530SSamuel Ortiz
7728ec89bc8SRob BradfordSee our [VFIO](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/master/docs/vfio.md)
77393b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to
77493b77530SSamuel Ortiz`cloud-hypervisor` guests.
77593b77530SSamuel Ortiz
77693b77530SSamuel Ortiz### Userspace IOAPIC
77793b77530SSamuel Ortiz
77893b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
77993b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
78093b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
78193b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
78293b77530SSamuel Ortiz
78393b77530SSamuel Ortiz### Virtual persistent memory
78493b77530SSamuel Ortiz
78593b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
78693b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
78793b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
78893b77530SSamuel Ortiz
78993b77530SSamuel Ortiz### Linux kernel bzImage
79093b77530SSamuel Ortiz
79193b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
79293b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
79393b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
79493b77530SSamuel Ortizdistribution kernel image.
79593b77530SSamuel Ortiz
79693b77530SSamuel Ortiz### Console over virtio
79793b77530SSamuel Ortiz
79893b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
79993b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
80093b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
80193b77530SSamuel Ortizimplementation.
80293b77530SSamuel Ortiz
80393b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
80493b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
80593b77530SSamuel Ortiz`--serial tty --console off` from the command line.
80693b77530SSamuel Ortiz
80793b77530SSamuel Ortiz### Unit testing
80893b77530SSamuel Ortiz
80993b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
81093b77530SSamuel Ortiz
81193b77530SSamuel Ortiz### Integration tests parallelization
81293b77530SSamuel Ortiz
81393b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
81493b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
815