xref: /cloud-hypervisor/release-notes.md (revision 8e8a7b6d0757d2241d1bc9b3b01e83ab1fbac64c)
1*8e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
2*8e8a7b6dSSamuel Ortiz    + [Block device offloading](#block-device-offloading)
3*8e8a7b6dSSamuel Ortiz    + [Network device backend](#network-device-backend)
4*8e8a7b6dSSamuel Ortiz    + [Virtual sockets](#virtual-sockets)
5*8e8a7b6dSSamuel Ortiz    + [HTTP based API](#http-based-api)
6*8e8a7b6dSSamuel Ortiz    + [Memory mapped virtio transport](#memory-mapped-virtio-transport)
7*8e8a7b6dSSamuel Ortiz    + [Paravirtualized IOMMU](#paravirtualized-iommu)
8*8e8a7b6dSSamuel Ortiz    + [Ubuntu 19.10](#ubuntu-1910)
9*8e8a7b6dSSamuel Ortiz    + [Guest large memory](#guest-large-memory)
107688e6e2SSamuel Ortiz- [v0.2.0](#v020)
11*8e8a7b6dSSamuel Ortiz    + [Network device offloading](#network-device-offloading)
12*8e8a7b6dSSamuel Ortiz    + [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
13*8e8a7b6dSSamuel Ortiz    + [Debug I/O port](#debug-i-o-port)
14*8e8a7b6dSSamuel Ortiz    + [Improved direct device assignment](#improved-direct-device-assignment)
15*8e8a7b6dSSamuel Ortiz    + [Improved shared filesystem](#improved-shared-filesystem)
16*8e8a7b6dSSamuel Ortiz    + [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
177688e6e2SSamuel Ortiz- [v0.1.0](#v010)
18*8e8a7b6dSSamuel Ortiz    + [Shared filesystem](#shared-filesystem)
19*8e8a7b6dSSamuel Ortiz    + [Initial direct device assignment support](#initial-direct-device-assignment-support)
20*8e8a7b6dSSamuel Ortiz    + [Userspace IOAPIC](#userspace-ioapic)
21*8e8a7b6dSSamuel Ortiz    + [Virtual persistent memory](#virtual-persistent-memory)
22*8e8a7b6dSSamuel Ortiz    + [Linux kernel bzImage](#linux-kernel-bzimage)
23*8e8a7b6dSSamuel Ortiz    + [Console over virtio](#console-over-virtio)
24*8e8a7b6dSSamuel Ortiz    + [Unit testing](#unit-testing)
25*8e8a7b6dSSamuel Ortiz    + [Integration tests parallelization](#integration-tests-parallelization)
26*8e8a7b6dSSamuel Ortiz
27*8e8a7b6dSSamuel Ortiz# v0.3.0
28*8e8a7b6dSSamuel Ortiz
29*8e8a7b6dSSamuel OrtizThis release has been tracked through the [0.3.0 project](https://github.com/intel/cloud-hypervisor/projects/3).
30*8e8a7b6dSSamuel Ortiz
31*8e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
32*8e8a7b6dSSamuel Ortiz
33*8e8a7b6dSSamuel Ortiz### Block device offloading
34*8e8a7b6dSSamuel Ortiz
35*8e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
36*8e8a7b6dSSamuel Ortizand we added support for
37*8e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
38*8e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
39*8e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
40*8e8a7b6dSSamuel Ortizbackend.
41*8e8a7b6dSSamuel Ortiz
42*8e8a7b6dSSamuel Ortiz### Network device backend
43*8e8a7b6dSSamuel Ortiz
44*8e8a7b6dSSamuel OrtizThe previous release provided support for
45*8e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
46*8e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
47*8e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
48*8e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
49*8e8a7b6dSSamuel Ortiz
50*8e8a7b6dSSamuel Ortiz### Virtual sockets
51*8e8a7b6dSSamuel Ortiz
52*8e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
53*8e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
54*8e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
55*8e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
56*8e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
57*8e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
58*8e8a7b6dSSamuel Ortiz
59*8e8a7b6dSSamuel Ortiz### HTTP based API
60*8e8a7b6dSSamuel Ortiz
61*8e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
62*8e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
63*8e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
64*8e8a7b6dSSamuel Ortiznext release cycle.
65*8e8a7b6dSSamuel Ortiz
66*8e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
67*8e8a7b6dSSamuel Ortiz
68*8e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
69*8e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
70*8e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
71*8e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
72*8e8a7b6dSSamuel Ortiz
73*8e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
74*8e8a7b6dSSamuel Ortiz
75*8e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
76*8e8a7b6dSSamuel Ortiza [paravirtualized IOMMU](https://github.com/intel/cloud-hypervisor/blob/master/docs/iommu.md)
77*8e8a7b6dSSamuel Ortizdevice through virtio. This allows for a safer nested virtio and directly
78*8e8a7b6dSSamuel Ortizassigned devices support.
79*8e8a7b6dSSamuel Ortiz
80*8e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
81*8e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
82*8e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
83*8e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
84*8e8a7b6dSSamuel Ortizsetting.
85*8e8a7b6dSSamuel Ortiz
86*8e8a7b6dSSamuel Ortiz### Ubuntu 19.10
87*8e8a7b6dSSamuel Ortiz
88*8e8a7b6dSSamuel OrtizWith the latest [hypervisor firmware](https://github.com/intel/rust-hypervisor-firmware),
89*8e8a7b6dSSamuel Ortizwe can now support the latest
90*8e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
91*8e8a7b6dSSamuel Ortiz
92*8e8a7b6dSSamuel Ortiz### Large memory guests
93*8e8a7b6dSSamuel Ortiz
94*8e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
95*8e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
967688e6e2SSamuel Ortiz
97d784ac29SSamuel Ortiz# v0.2.0
98d784ac29SSamuel Ortiz
99d784ac29SSamuel OrtizThis release has been tracked through the [0.2.0 project](https://github.com/intel/cloud-hypervisor/projects/2).
100d784ac29SSamuel Ortiz
101d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
102d784ac29SSamuel Ortiz
103d784ac29SSamuel Ortiz### Network device offloading
104d784ac29SSamuel Ortiz
105d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
106d784ac29SSamuel Ortizprocesses, we added support for
107d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
108d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
109d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
110d784ac29SSamuel Ortiz
111d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
112d784ac29SSamuel Ortiz
113d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
114d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
115d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
116d784ac29SSamuel Ortizcleanly reboot and shutdown.
117d784ac29SSamuel Ortiz
118d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
119d784ac29SSamuel Ortizenabled by default.
120d784ac29SSamuel Ortiz
121d784ac29SSamuel Ortiz### Debug I/O port
122d784ac29SSamuel Ortiz
123d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
124d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
125d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
126d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
127d784ac29SSamuel Ortizmeasurements. See our [debug port documentation](https://github.com/intel/cloud-hypervisor/blob/master/docs/debug-port.md)
128d784ac29SSamuel Ortizfor more details.
129d784ac29SSamuel Ortiz
130d784ac29SSamuel Ortiz### Improved direct device assignment
131d784ac29SSamuel Ortiz
132d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
133d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
134d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
135d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
136d784ac29SSamuel Ortizdirectly assigned devices.
137d784ac29SSamuel Ortiz
138d784ac29SSamuel Ortiz### Improved shared filesystem
139d784ac29SSamuel Ortiz
140d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
141d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
142d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
143d784ac29SSamuel Ortizmemory footprint.
144d784ac29SSamuel Ortiz
145d784ac29SSamuel Ortiz### Ubuntu bionic based CI
146d784ac29SSamuel Ortiz
147d784ac29SSamuel OrtizThanks to our [simple KVM firmware](https://github.com/intel/rust-hypervisor-firmware)
148d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
149d784ac29SSamuel Ortizour CI pipeline.
150d784ac29SSamuel Ortiz
15193b77530SSamuel Ortiz# v0.1.0
15293b77530SSamuel Ortiz
15393b77530SSamuel OrtizThis release has been tracked through the [0.1.0 project](https://github.com/intel/cloud-hypervisor/projects/1).
15493b77530SSamuel Ortiz
15593b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
15693b77530SSamuel Ortiz
15793b77530SSamuel Ortiz### Shared filesystem
15893b77530SSamuel Ortiz
15993b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
16093b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
16193b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
16293b77530SSamuel Ortiz
16393b77530SSamuel OrtizSee our [filesystem sharing](https://github.com/intel/cloud-hypervisor/blob/master/docs/fs.md)
16493b77530SSamuel Ortizdocumentation for more details on how to use virtio-fs with `cloud-hypervisor`.
16593b77530SSamuel Ortiz
16693b77530SSamuel Ortiz### Initial direct device assignment support
16793b77530SSamuel Ortiz
16893b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
16993b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
17093b77530SSamuel Ortizphysical devices into its guest.
17193b77530SSamuel Ortiz
17293b77530SSamuel OrtizSee our [VFIO](https://github.com/intel/cloud-hypervisor/blob/master/docs/vfio.md)
17393b77530SSamuel Ortizdocumentation for more detail on how to directly assign host devices to
17493b77530SSamuel Ortiz`cloud-hypervisor` guests.
17593b77530SSamuel Ortiz
17693b77530SSamuel Ortiz### Userspace IOAPIC
17793b77530SSamuel Ortiz
17893b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
17993b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
18093b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
18193b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
18293b77530SSamuel Ortiz
18393b77530SSamuel Ortiz### Virtual persistent memory
18493b77530SSamuel Ortiz
18593b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
18693b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
18793b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
18893b77530SSamuel Ortiz
18993b77530SSamuel Ortiz### Linux kernel bzImage
19093b77530SSamuel Ortiz
19193b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
19293b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
19393b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
19493b77530SSamuel Ortizdistribution kernel image.
19593b77530SSamuel Ortiz
19693b77530SSamuel Ortiz### Console over virtio
19793b77530SSamuel Ortiz
19893b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
19993b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
20093b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
20193b77530SSamuel Ortizimplementation.
20293b77530SSamuel Ortiz
20393b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
20493b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
20593b77530SSamuel Ortiz`--serial tty --console off` from the command line.
20693b77530SSamuel Ortiz
20793b77530SSamuel Ortiz### Unit testing
20893b77530SSamuel Ortiz
20993b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
21093b77530SSamuel Ortiz
21193b77530SSamuel Ortiz### Integration tests parallelization
21293b77530SSamuel Ortiz
21393b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
21493b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
215