xref: /cloud-hypervisor/release-notes.md (revision 2c4f8d2218b2ba1213e088f928d6dfcdbdd8c6f1)
1*2c4f8d22SRob Bradford- [v18.0](#v180)
2*2c4f8d22SRob Bradford    - [Experimental User Device (`vfio-user`) support](#experimental-user-device-vfio-user-support)
3*2c4f8d22SRob Bradford    - [Migration support for `vhost-user` devices](#migration-support-for-vhost-user-devices)
4*2c4f8d22SRob Bradford    - [VHDX disk image support](#vhdx-disk-image-support)
5*2c4f8d22SRob Bradford    - [Device pass through on MSHV hypervisor](#device-pass-through-on-mshv-hypervisor)
6*2c4f8d22SRob Bradford    - [AArch64 for support `virtio-mem`](#aarch64-for-support-virtio-mem)
7*2c4f8d22SRob Bradford    - [Live migration on MSHV hypervisor](#live-migration-on-mshv-hypervisor)
8*2c4f8d22SRob Bradford    - [AArch64 CPU topology support](#aarch64-cpu-topology-support)
9*2c4f8d22SRob Bradford    - [Power button support on AArch64](#power-button-support-on-aarch64)
10*2c4f8d22SRob Bradford    - [Notable bug fixes](#notable-bug-fixes)
11*2c4f8d22SRob Bradford    - [Contributors](#contributors)
12e6db5999SRob Bradford- [v17.0](#v170)
13e6db5999SRob Bradford    - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi)
14e6db5999SRob Bradford    - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend)
15e6db5999SRob Bradford    - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices)
16e6db5999SRob Bradford    - [Improved SGX support](#improved-sgx-support)
17e6db5999SRob Bradford    - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices)
18*2c4f8d22SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-1)
19*2c4f8d22SRob Bradford    - [Contributors](#contributors-1)
205ed8e01fSRob Bradford- [v16.0](#v160)
215ed8e01fSRob Bradford    - [Improved live migration support](#improved-live-migration-support)
225ed8e01fSRob Bradford    - [Improved `vhost-user` support](#improved-vhost-user-support)
235ed8e01fSRob Bradford    - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support)
24*2c4f8d22SRob Bradford    - [Notable bug fixes](#notable-bug-fixes-2)
255ed8e01fSRob Bradford    - [Removed functionality](#removed-functionality)
26*2c4f8d22SRob Bradford    - [Contributors](#contributors-2)
2730a01277SRob Bradford- [v15.0](#v150)
2830a01277SRob Bradford    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
2930a01277SRob Bradford    - [Network device rate limiting](#network-device-rate-limiting)
3030a01277SRob Bradford    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
3130a01277SRob Bradford    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
3230a01277SRob Bradford    - [Bug fixes](#bug-fixes)
3330a01277SRob Bradford    - [Deprecations](#deprecations)
34*2c4f8d22SRob Bradford    - [Contributors](#contributors-3)
3530a01277SRob Bradford- [v0.14.1](#v0141)
3640c63dcfSRob Bradford- [v0.14.0](#v0140)
3740c63dcfSRob Bradford    - [Structured event monitoring](#structured-event-monitoring)
3840c63dcfSRob Bradford    - [MSHV improvements](#mshv-improvements)
3940c63dcfSRob Bradford    - [Improved aarch64 platform](#improved-aarch64-platform)
4040c63dcfSRob Bradford    - [Updated hotplug documentation](#updated-hotplug-documentation)
4140c63dcfSRob Bradford    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
4240c63dcfSRob Bradford    - [Block device rate limiting](#block-device-rate-limiting)
4330a01277SRob Bradford    - [Deprecations](#deprecations-1)
44*2c4f8d22SRob Bradford    - [Contributors](#contributors-4)
45f58b6f84SRob Bradford- [v0.13.0](#v0130)
46f58b6f84SRob Bradford    - [Wider VFIO device support](#wider-vfio-device-support)
4740c63dcfSRob Bradford    - [Improved huge page support](#improved-huge-page-support)
48f58b6f84SRob Bradford    - [MACvTAP support](#macvtap-support)
49f58b6f84SRob Bradford    - [VHD disk image support](#vhd-disk-image-support)
50f58b6f84SRob Bradford    - [Improved Virtio device threading](#improved-virtio-device-threading)
51f58b6f84SRob Bradford    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
52*2c4f8d22SRob Bradford    - [Contributors](#contributors-5)
53d42b5084SRob Bradford- [v0.12.0](#v0120)
54d42b5084SRob Bradford    - [ARM64 enhancements](#arm64-enhancements)
55d42b5084SRob Bradford    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
56d42b5084SRob Bradford    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
57d42b5084SRob Bradford    - [Enhanced "info" API](#enhanced-info-api)
58*2c4f8d22SRob Bradford    - [Contributors](#contributors-6)
597dcd3affSRob Bradford- [v0.11.0](#v0110)
607dcd3affSRob Bradford    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
617dcd3affSRob Bradford    - [Windows Guest Support](#windows-guest-support)
627dcd3affSRob Bradford    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
637dcd3affSRob Bradford    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
647dcd3affSRob Bradford    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
657dcd3affSRob Bradford    - [Improved Linux Boot Time](#improved-linux-boot-time)
667dcd3affSRob Bradford    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
677dcd3affSRob Bradford    - [Default Log Level Changed](#default-log-level-changed)
687dcd3affSRob Bradford    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
697dcd3affSRob Bradford    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
70*2c4f8d22SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-3)
71*2c4f8d22SRob Bradford    - [Contributors](#contributors-7)
72198bd551SRob Bradford- [v0.10.0](#v0100)
73198bd551SRob Bradford    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
74198bd551SRob Bradford    - [Memory Zones](#memory-zones)
75198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
76198bd551SRob Bradford    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
77*2c4f8d22SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-4)
78*2c4f8d22SRob Bradford    - [Contributors](#contributors-8)
79d714cf81SRob Bradford- [v0.9.0](#v090)
80d714cf81SRob Bradford    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
81d714cf81SRob Bradford    - [Block and Network Device Statistics](#block-and-network-device-statistics)
82d714cf81SRob Bradford    - [HTTP API Responses](#http-api-responses)
83d714cf81SRob Bradford    - [CPU Topology](#cpu-topology)
84d714cf81SRob Bradford    - [Release Build Optimization](#release-build-optimization)
85d714cf81SRob Bradford    - [Hypervisor Abstraction](#hypervisor-abstraction)
86d714cf81SRob Bradford    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
87d714cf81SRob Bradford    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
88d714cf81SRob Bradford    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
89d714cf81SRob Bradford    - [Intel SGX Support](#intel-sgx-support)
90198bd551SRob Bradford    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
91*2c4f8d22SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-5)
92*2c4f8d22SRob Bradford    - [Contributors](#contributors-9)
93d714cf81SRob Bradford- [v0.8.0](#v080)
94d714cf81SRob Bradford    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
95d714cf81SRob Bradford    - [Experimental ARM64 Support](#experimental-arm64-support)
96d714cf81SRob Bradford    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
97d714cf81SRob Bradford    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
98d714cf81SRob Bradford    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
99*2c4f8d22SRob Bradford    - [Notable Bug Fixes](#notable-bug-fixes-6)
100d714cf81SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes)
101*2c4f8d22SRob Bradford    - [Contributors](#contributors-10)
10296be8229SRob Bradford- [v0.7.0](#v070)
10396be8229SRob Bradford    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
10496be8229SRob Bradford    - [Alternative `libc` Support](#alternative-libc-support)
10596be8229SRob Bradford    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
10696be8229SRob Bradford    - [Initial RamFS Support](#initial-ramfs-support)
10796be8229SRob Bradford    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
10896be8229SRob Bradford    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
10996be8229SRob Bradford    - [Updated Distribution Support](#updated-distribution-support)
11052b83969SRob Bradford    - [Command Line and API Changes](#command-line-and-api-changes-1)
111*2c4f8d22SRob Bradford    - [Contributors](#contributors-11)
11203cb26ccSSamuel Ortiz- [v0.6.0](#v060)
11303cb26ccSSamuel Ortiz    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
11403cb26ccSSamuel Ortiz    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
11503cb26ccSSamuel Ortiz    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
11603cb26ccSSamuel Ortiz    - [Command Line Interface](#command-line-interface)
11703cb26ccSSamuel Ortiz    - [PVH Boot](#pvh-boot)
118*2c4f8d22SRob Bradford    - [Contributors](#contributors-12)
11994f2fc33SRob Bradford- [v0.5.1](#v051)
1202f395e60SSamuel Ortiz- [v0.5.0](#v050)
12194f2fc33SRob Bradford    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
12294f2fc33SRob Bradford    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
12394f2fc33SRob Bradford    - [New Interrupt Management Framework](#new-interrupt-management-framework)
12494f2fc33SRob Bradford    - [Development Tools](#development-tools)
12594f2fc33SRob Bradford    - [Kata Containers Integration](#kata-containers-integration)
126*2c4f8d22SRob Bradford    - [Contributors](#contributors-13)
127cec884e8SSamuel Ortiz- [v0.4.0](#v040)
12894f2fc33SRob Bradford    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
12994f2fc33SRob Bradford    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
13094f2fc33SRob Bradford    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
13194f2fc33SRob Bradford    - [Guest pause and resume](#guest-pause-and-resume)
13294f2fc33SRob Bradford    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
13394f2fc33SRob Bradford    - [PCI BAR reprogramming](#pci-bar-reprogramming)
13494f2fc33SRob Bradford    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
135*2c4f8d22SRob Bradford    - [Contributors](#contributors-14)
1368e8a7b6dSSamuel Ortiz- [v0.3.0](#v030)
13794f2fc33SRob Bradford    - [Block device offloading](#block-device-offloading)
13894f2fc33SRob Bradford    - [Network device backend](#network-device-backend)
13994f2fc33SRob Bradford    - [Virtual sockets](#virtual-sockets)
14094f2fc33SRob Bradford    - [HTTP based API](#http-based-api)
14194f2fc33SRob Bradford    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
14294f2fc33SRob Bradford    - [Paravirtualized IOMMU](#paravirtualized-iommu)
14394f2fc33SRob Bradford    - [Ubuntu 19.10](#ubuntu-1910)
14494f2fc33SRob Bradford    - [Large memory guests](#large-memory-guests)
1457688e6e2SSamuel Ortiz- [v0.2.0](#v020)
14694f2fc33SRob Bradford    - [Network device offloading](#network-device-offloading)
14794f2fc33SRob Bradford    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
14894f2fc33SRob Bradford    - [Debug I/O port](#debug-io-port)
14994f2fc33SRob Bradford    - [Improved direct device assignment](#improved-direct-device-assignment)
15094f2fc33SRob Bradford    - [Improved shared filesystem](#improved-shared-filesystem)
15194f2fc33SRob Bradford    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
1527688e6e2SSamuel Ortiz- [v0.1.0](#v010)
15394f2fc33SRob Bradford    - [Shared filesystem](#shared-filesystem)
15494f2fc33SRob Bradford    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
15594f2fc33SRob Bradford    - [Userspace IOAPIC](#userspace-ioapic)
15694f2fc33SRob Bradford    - [Virtual persistent memory](#virtual-persistent-memory)
15794f2fc33SRob Bradford    - [Linux kernel bzImage](#linux-kernel-bzimage)
15894f2fc33SRob Bradford    - [Console over virtio](#console-over-virtio)
15994f2fc33SRob Bradford    - [Unit testing](#unit-testing)
16094f2fc33SRob Bradford    - [Integration tests parallelization](#integration-tests-parallelization)
16194f2fc33SRob Bradford
162*2c4f8d22SRob Bradford# v18.0
163*2c4f8d22SRob Bradford
164*2c4f8d22SRob BradfordThis release has been tracked through the [v18.0
165*2c4f8d22SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/21).
166*2c4f8d22SRob Bradford
167*2c4f8d22SRob Bradford### Experimental User Device (`vfio-user`) support
168*2c4f8d22SRob Bradford
169*2c4f8d22SRob BradfordExperimental support for running PCI devices in userspace via `vfio-user`
170*2c4f8d22SRob Bradfordhas been included. This allows the use of the SPDK NVMe `vfio-user` controller
171*2c4f8d22SRob Bradfordwith Cloud Hypervisor. This is enabled by `--user-device` on the command line.
172*2c4f8d22SRob Bradford
173*2c4f8d22SRob Bradford### Migration support for `vhost-user` devices
174*2c4f8d22SRob Bradford
175*2c4f8d22SRob BradfordDevices exposed into the VM via `vhost-user` can now be migrated using the live
176*2c4f8d22SRob Bradfordmigration support. This requires support from the backend however the commonly
177*2c4f8d22SRob Bradfordused DPDK `vhost-user` backend does support this.
178*2c4f8d22SRob Bradford
179*2c4f8d22SRob Bradford### VHDX disk image support
180*2c4f8d22SRob Bradford
181*2c4f8d22SRob BradfordImages using the VHDX disk image format can now be used with Cloud Hypervisor.
182*2c4f8d22SRob Bradford
183*2c4f8d22SRob Bradford### Device pass through on MSHV hypervisor
184*2c4f8d22SRob Bradford
185*2c4f8d22SRob BradfordWhen running on the MSHV hypervisor it is possible to pass through devices from
186*2c4f8d22SRob Bradfordthe host through to the guest (e.g with `--device`)
187*2c4f8d22SRob Bradford
188*2c4f8d22SRob Bradford### AArch64 for support `virtio-mem`
189*2c4f8d22SRob Bradford
190*2c4f8d22SRob BradfordThe reference Linux kernel we recommend for using with Cloud Hypervisor now supports `virtio-mem` on AArch64.
191*2c4f8d22SRob Bradford
192*2c4f8d22SRob Bradford### Live migration on MSHV hypervisor
193*2c4f8d22SRob Bradford
194*2c4f8d22SRob BradfordLive migration is now supported when running on the MSHV hypervisor including
195*2c4f8d22SRob Bradfordefficient tracking of dirty pages.
196*2c4f8d22SRob Bradford
197*2c4f8d22SRob Bradford### AArch64 CPU topology support
198*2c4f8d22SRob Bradford
199*2c4f8d22SRob BradfordThe CPU topology (as configured through `--cpu topology=`) can now be
200*2c4f8d22SRob Bradfordconfigured on AArch64 platforms and is conveyed through either ACPI or device
201*2c4f8d22SRob Bradfordtree.
202*2c4f8d22SRob Bradford
203*2c4f8d22SRob Bradford### Power button support on AArch64
204*2c4f8d22SRob Bradford
205*2c4f8d22SRob BradfordUse of the ACPI power button (e.g `ch-remote --api-socket=<API socket> power-button`)
206*2c4f8d22SRob Bradfordis now supported when running on AArch64.
207*2c4f8d22SRob Bradford
208*2c4f8d22SRob Bradford### Notable bug fixes
209*2c4f8d22SRob Bradford
210*2c4f8d22SRob Bradford* Using two PTY outputs e.g. `--serial pty --console pty` now works correctly (#3012)
211*2c4f8d22SRob Bradford* TTY input is now always sent to the correct destination (#3005)
212*2c4f8d22SRob Bradford* The boot is no longer blocked when using a unattached PTY on the serial console (#3004)
213*2c4f8d22SRob Bradford* Live migration is now supported on AArch64 (#3049)
214*2c4f8d22SRob Bradford* Ensure signal handlers are run on the correct thread (#3069)
215*2c4f8d22SRob Bradford
216*2c4f8d22SRob Bradford### Contributors
217*2c4f8d22SRob Bradford
218*2c4f8d22SRob BradfordMany thanks to everyone who has contributed to our release:
219*2c4f8d22SRob Bradford
220*2c4f8d22SRob Bradford* Alyssa Ross <hi@alyssa.is>
221*2c4f8d22SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
222*2c4f8d22SRob Bradford* Arafatms <arafatms@outlook.com>
223*2c4f8d22SRob Bradford* Bo Chen <chen.bo@intel.com>
224*2c4f8d22SRob Bradford* Fazla Mehrab <akm.fazla.mehrab@vt.edu>
225*2c4f8d22SRob Bradford* Henry Wang <Henry.Wang@arm.com>
226*2c4f8d22SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
227*2c4f8d22SRob Bradford* Jiaqi Gao <jiaqi.gao@intel.com>
228*2c4f8d22SRob Bradford* Markus Theil <markus.theil@tu-ilmenau.de>
229*2c4f8d22SRob Bradford* Muminul Islam <muislam@microsoft.com>
230*2c4f8d22SRob Bradford* Rob Bradford <robert.bradford@intel.com>
231*2c4f8d22SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
232*2c4f8d22SRob Bradford* Wei Liu <liuwe@microsoft.com>
233*2c4f8d22SRob Bradford* Yu Li <liyu.yukiteru@bytedance.com>
234e6db5999SRob Bradford
235e6db5999SRob Bradford# v17.0
236e6db5999SRob Bradford
237e6db5999SRob BradfordThis release has been tracked through the [v17.0
238e6db5999SRob Bradfordproject](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20).
239e6db5999SRob Bradford
240e6db5999SRob Bradford### ARM64 NUMA support using ACPI
241e6db5999SRob Bradford
242e6db5999SRob BradfordThe support for ACPI on ARM64 has been enhanced to include support for
243e6db5999SRob Bradfordspecifying a NUMA configuration using the existing control options.
244e6db5999SRob Bradford
245e6db5999SRob Bradford### `Seccomp` support for MSHV backend
246e6db5999SRob Bradford
247e6db5999SRob BradfordThe `seccomp` rules have now been extended to support running against the MSHV
248e6db5999SRob Bradfordhypervisor backend.
249e6db5999SRob Bradford
250e6db5999SRob Bradford### Hotplug of `macvtap` devices
251e6db5999SRob Bradford
252e6db5999SRob BradfordHotplug of `macvtap` devices is now supported with the file descriptor for the
253e6db5999SRob Bradfordnetwork device if opened by the user and passed to the VMM. The `ch-remote`
254e6db5999SRob Bradfordtool supports this functionality when adding a network device.
255e6db5999SRob Bradford
256e6db5999SRob Bradford### Improved SGX support
257e6db5999SRob Bradford
258e6db5999SRob BradfordThe SGX support has been updated to match the latest Linux kernel support and
259e6db5999SRob Bradfordnow supports SGX provisioning and associating EPC sections to NUMA nodes.
260e6db5999SRob Bradford
261e6db5999SRob Bradford### Inflight tracking for `vhost-user` devices
262e6db5999SRob Bradford
263e6db5999SRob BradfordSupport for handling inflight tracking of I/O requests has been added to the
264e6db5999SRob Bradford`vhost-user` devices allowing recovery after device reconnection.
265e6db5999SRob Bradford
266e6db5999SRob Bradford### Notable bug fixes
267e6db5999SRob Bradford
268e6db5999SRob Bradford* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
269e6db5999SRob Bradford* The VMM side of `vhost-user` devices no longer advertise the
270e6db5999SRob Bradford  `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM
271e6db5999SRob Bradford(#2833).
272e6db5999SRob Bradford* On ARM64 VMs can be created with more than 16 vCPUs (#2763).
273e6db5999SRob Bradford
274e6db5999SRob Bradford### Contributors
275e6db5999SRob Bradford
276e6db5999SRob BradfordMany thanks to everyone who has contributed to our release:
277e6db5999SRob Bradford
278e6db5999SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
279e6db5999SRob Bradford* Arafatms <arafatms@outlook.com>
280e6db5999SRob Bradford* Bo Chen <chen.bo@intel.com>
281e6db5999SRob Bradford* Fei Li <lifei.shirley@bytedance.com>
282e6db5999SRob Bradford* Henry Wang <Henry.Wang@arm.com>
283e6db5999SRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
284e6db5999SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
285e6db5999SRob Bradford* Li Hangjing <lihangjing@bytedance.com>
286e6db5999SRob Bradford* Michael Zhao <michael.zhao@arm.com>
287e6db5999SRob Bradford* Muminul Islam <muislam@microsoft.com>
288e6db5999SRob Bradford* Rob Bradford <robert.bradford@intel.com>
289e6db5999SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
290e6db5999SRob Bradford* Wei Liu <liuwe@microsoft.com>
291e6db5999SRob Bradford* Yukiteru <wfly1998@sina.com>
292e6db5999SRob Bradford
2935ed8e01fSRob Bradford# v16.0
2945ed8e01fSRob Bradford
2955ed8e01fSRob BradfordThis release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19).
2965ed8e01fSRob Bradford
2975ed8e01fSRob Bradford### Improved live migration support
2985ed8e01fSRob Bradford
2995ed8e01fSRob BradfordThe live migration support inside Cloud Hypervisor has been improved with the addition of the tracking of dirty pages written by the VMM to complement the tracking of dirty pages made by the guest itself. Further the internal state of the VMM now is versioned which allows the safe migration of VMs from one version of the VMM to a newer one. However further testing is required so this should be done with care. See the [live migration documentation](docs/live_migration.md) for more details.
3005ed8e01fSRob Bradford
3015ed8e01fSRob Bradford### Improved `vhost-user` support
3025ed8e01fSRob Bradford
3035ed8e01fSRob BradfordWhen using `vhost-user` to access devices implemented in different processes there is now support for reconnection of those devices in the case of a restart of the backend. In addition it is now possible to operate with the direction of the `vhost-user-net` connection reversed with the server in the VMM and the client in the backend. This is aligns with the default approach recommended by Open vSwitch.
3045ed8e01fSRob Bradford
3055ed8e01fSRob Bradford### ARM64 ACPI and UEFI support
3065ed8e01fSRob Bradford
3075ed8e01fSRob BradfordCloud Hypervisor now supports using ACPI and booting from a UEFI image on ARM64. This allows the use of stock OS images without direct kernel boot.
3085ed8e01fSRob Bradford
3095ed8e01fSRob Bradford### Notable bug fixes
3105ed8e01fSRob Bradford
3115ed8e01fSRob Bradford* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
3125ed8e01fSRob Bradford* When using MQ with `virtio` devices Cloud Hypervisor now enforces a minimum vCPU count which ensures that the user will not see adverse guest performance (#2563).
3135ed8e01fSRob Bradford* The KVM clock is now correctly handled during live migration / snapshot & restore.
3145ed8e01fSRob Bradford
3155ed8e01fSRob Bradford### Removed functionality
3165ed8e01fSRob Bradford
3175ed8e01fSRob BradfordThe following formerly deprecated features have been removed:
3185ed8e01fSRob Bradford
3195ed8e01fSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
3205ed8e01fSRob Bradford  binaries has been deprecated. When using direct boot users should configure
3215ed8e01fSRob Bradford  their kernel with `CONFIG_PVH=y`.
3225ed8e01fSRob Bradford
3235ed8e01fSRob Bradford### Contributors
3245ed8e01fSRob Bradford
3255ed8e01fSRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
3265ed8e01fSRob Bradford
3275ed8e01fSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
3285ed8e01fSRob Bradford* Bo Chen <chen.bo@intel.com>
3295ed8e01fSRob Bradford* Dayu Liu <liu.dayu@zte.com.cn>
3305ed8e01fSRob Bradford* Henry Wang <Henry.Wang@arm.com>
3315ed8e01fSRob Bradford* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
3325ed8e01fSRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
3335ed8e01fSRob Bradford* Michael Zhao <michael.zhao@arm.com>
3345ed8e01fSRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
3355ed8e01fSRob Bradford* Muminul Islam <muislam@microsoft.com>
3365ed8e01fSRob Bradford* Ren Lei <ren.lei4@zte.com.cn>
3375ed8e01fSRob Bradford* Rob Bradford <robert.bradford@intel.com>
3385ed8e01fSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
3395ed8e01fSRob Bradford* Wei Liu <liuwe@microsoft.com>
3405ed8e01fSRob Bradford* Yi Wang <wang.yi59@zte.com.cn>
3415ed8e01fSRob Bradford
34230a01277SRob Bradford# v15.0
34330a01277SRob Bradford
34430a01277SRob BradfordThis release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
34530a01277SRob Bradford
34630a01277SRob BradfordHighlights for `cloud-hypervisor` version v15.0 include:
34730a01277SRob Bradford
34830a01277SRob Bradford### Version numbering and stability guarantees
34930a01277SRob Bradford
35030a01277SRob BradfordThis release is the first in a new version numbering scheme to represent that
35130a01277SRob Bradfordwe believe Cloud Hypervisor is maturing and entering a period of stability.
35230a01277SRob BradfordWith this new release we are beginning our new stability guarantees:
35330a01277SRob Bradford
35430a01277SRob Bradford* The API (including command line options) will not be removed or changed in a
35530a01277SRob Bradford  breaking way without a minimum of 2 releases notice. Where possible warnings
35630a01277SRob Bradford  will be given about the use of deprecated functionality and the deprecations
35730a01277SRob Bradford  will be documented in the release notes.
35830a01277SRob Bradford* Point releases will be made between individual releases where there are
35930a01277SRob Bradford  substantial bug fixes or security issues that need to be fixed.
36030a01277SRob Bradford
36130a01277SRob BradfordCurrently the following items are **not** guaranteed across updates:
36230a01277SRob Bradford
36330a01277SRob Bradford* Snapshot/restore is not supported across different versions
36430a01277SRob Bradford* Live migration is not supported across different versions
36530a01277SRob Bradford* The following features are considered experimental and may change
36630a01277SRob Bradford  substantially between releases: TDX, SGX.
36730a01277SRob Bradford
36830a01277SRob Bradford### Network device rate limiting
36930a01277SRob Bradford
37030a01277SRob BradfordBuilding on our existing support for rate limiting block activity the network
37130a01277SRob Bradforddevice also now supports rate limiting. Full details of the controls are in the
37230a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
37330a01277SRob Bradford
37430a01277SRob Bradford### Support for runtime control of `virtio-net` guest offload
37530a01277SRob Bradford
37630a01277SRob BradfordThe guest is now able to change the offload settings for the `virtio-net`
37730a01277SRob Bradforddevice. As well as providing a useful control this mitigates an issue in the
37830a01277SRob BradfordLinux kernel where the guest will attempt to reprogram the offload settings
37930a01277SRob Bradfordeven if they are not advertised as configurable (#2528).
38030a01277SRob Bradford
38130a01277SRob Bradford### `--api-socket` supports file descriptor parameter
38230a01277SRob Bradford
38330a01277SRob BradfordThe `--api-socket` can now take an `fd=` parameter to specify an existing file
38430a01277SRob Bradforddescriptor to use. This is particularly beneficial for frameworks that need to
38530a01277SRob Bradfordprogrammatically control Cloud Hypervisor.
38630a01277SRob Bradford
38730a01277SRob Bradford### Bug fixes
38830a01277SRob Bradford
38930a01277SRob Bradford* A workaround has been put in place to mitigate a Linux kernel issues that
39030a01277SRob Bradford  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
39130a01277SRob Bradford* PCI BARs are now correctly aligned removing the need for the guest to
39230a01277SRob Bradford  reprogram them (#1797,#1798)
39330a01277SRob Bradford* Handle TAP interface not being writable within virtio-net (due to the buffer
39430a01277SRob Bradford  exhaustion on the host) (#2517)
39530a01277SRob Bradford* The recommended Linux kernel is now v5.12.0 as it contains a fix that
39630a01277SRob Bradford  prevents snapshot & restore working (#2535)
39730a01277SRob Bradford
39830a01277SRob Bradford### Deprecations
39930a01277SRob Bradford
40030a01277SRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
40130a01277SRob Bradford
40230a01277SRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
40330a01277SRob Bradford  binaries has been deprecated. When using direct boot users should configure
40430a01277SRob Bradford  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
40530a01277SRob Bradford
40630a01277SRob Bradford### Contributors
40730a01277SRob Bradford
40830a01277SRob BradfordMany thanks to everyone who has contributed to our release including some new faces.
40930a01277SRob Bradford
41030a01277SRob Bradford* Alyssa Ross <hi@alyssa.is>
41130a01277SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
41230a01277SRob Bradford* Bo Chen <chen.bo@intel.com>
41330a01277SRob Bradford* Gaelan Steele <gbs@canishe.com>
41430a01277SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
41530a01277SRob Bradford* Michael Zhao <michael.zhao@arm.com>
41630a01277SRob Bradford* Muminul Islam <muislam@microsoft.com>
41730a01277SRob Bradford* Rob Bradford <robert.bradford@intel.com>
41830a01277SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
41930a01277SRob Bradford* Wei Liu <liuwe@microsoft.com>
42030a01277SRob Bradford* William Douglas <william.douglas@intel.com>
42130a01277SRob Bradford
42230a01277SRob Bradford# v0.14.1
42330a01277SRob Bradford
42430a01277SRob BradfordBug fix release branched off the v0.14.0 release. The following bugs were fixed
42530a01277SRob Bradfordin this release:
42630a01277SRob Bradford
42730a01277SRob Bradford* CPU hotplug on Windows failed due to misreported CPU state information and
42830a01277SRob Bradford  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
42930a01277SRob Bradford* A seccomp rule was missing that was triggered on CPU unplug (#2455)
43030a01277SRob Bradford* A bounds check in VIRTIO queue validation was erroneously generating
43130a01277SRob Bradford  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
43230a01277SRob Bradford
43340c63dcfSRob Bradford# v0.14.0
43440c63dcfSRob Bradford
43540c63dcfSRob BradfordThis release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
43640c63dcfSRob Bradford
43740c63dcfSRob BradfordHighlights for `cloud-hypervisor` version 0.14.0 include:
43840c63dcfSRob Bradford
43940c63dcfSRob Bradford### Structured event monitoring
44040c63dcfSRob Bradford
44140c63dcfSRob BradfordA new option was added to the VMM `--event-monitor` which reports structured
44240c63dcfSRob Bradfordevents (JSON) over a file or file descriptor at key events in the lifecycle of
44340c63dcfSRob Bradfordthe VM. The list of events is limited at the moment but will be further
44440c63dcfSRob Bradfordextended over subsequent releases. The events exposed form part of the Cloud
44540c63dcfSRob BradfordHypervisor API surface.
44640c63dcfSRob Bradford
44740c63dcfSRob Bradford### MSHV improvements
44840c63dcfSRob Bradford
44940c63dcfSRob BradfordBasic support has been added for running Windows guests atop the MSHV
45040c63dcfSRob Bradfordhypervisor as an alternative to KVM and further improvements have been made to
45140c63dcfSRob Bradfordthe MSHV support.
45240c63dcfSRob Bradford
45340c63dcfSRob Bradford### Improved aarch64 platform
45440c63dcfSRob Bradford
45540c63dcfSRob BradfordThe aarch64 platform has been enhanced with more devices exposed to the running
45640c63dcfSRob BradfordVM including an enhanced serial UART.
45740c63dcfSRob Bradford
45840c63dcfSRob Bradford### Updated hotplug documentation
45940c63dcfSRob Bradford
46040c63dcfSRob BradfordThe documentation for the hotplug support has been updated to reflect the use
46140c63dcfSRob Bradfordof the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
46240c63dcfSRob Bradfordwell as documenting hotplug of paravirtualised and VFIO devices.
46340c63dcfSRob Bradford
46440c63dcfSRob Bradford### PTY control for serial and `virtio-console`
46540c63dcfSRob Bradford
46640c63dcfSRob BradfordThe `--serial` and `--console` parameters can now direct the console to a PTY
46740c63dcfSRob Bradfordallowing programmatic control of the console from another process through the
46840c63dcfSRob BradfordPTY subsystem.
46940c63dcfSRob Bradford
47040c63dcfSRob Bradford### Block device rate limiting
47140c63dcfSRob Bradford
47240c63dcfSRob BradfordThe block device performance can now be constrained as part of the VM
47340c63dcfSRob Bradfordconfiguration allowing rate limiting. Full details of the controls are in the
47430a01277SRob Bradford[IO throttling documentation.](docs/io_throttling.md)
47540c63dcfSRob Bradford
47640c63dcfSRob Bradford
47740c63dcfSRob Bradford### Deprecations
47840c63dcfSRob Bradford
47940c63dcfSRob BradfordDeprecated features will be removed in a subsequent release and users should plan to use alternatives
48040c63dcfSRob Bradford
48140c63dcfSRob Bradford* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
48240c63dcfSRob Bradford  binaries has been deprecated. When using direct boot users should configure
48340c63dcfSRob Bradford  their kernel with `CONFIG_PVH=y`.
48440c63dcfSRob Bradford
48540c63dcfSRob Bradford
48640c63dcfSRob Bradford### Contributors
48740c63dcfSRob Bradford
48840c63dcfSRob BradfordMany thanks to everyone who has contributed to our 0.14.0 release including
48940c63dcfSRob Bradfordsome new faces.
49040c63dcfSRob Bradford
49140c63dcfSRob BradfordBo Chen <chen.bo@intel.com>
49240c63dcfSRob BradfordHenry Wang <Henry.Wang@arm.com>
49340c63dcfSRob BradfordIggy Jackson <iggy@theiggy.com>
49440c63dcfSRob BradfordJiachen Zhang <zhangjiachen.jaycee@bytedance.com>
49540c63dcfSRob BradfordMichael Zhao <michael.zhao@arm.com>
49640c63dcfSRob BradfordMuminul Islam <muislam@microsoft.com>
49740c63dcfSRob BradfordPenny Zheng <Penny.Zheng@arm.com>
49840c63dcfSRob BradfordRob Bradford <robert.bradford@intel.com>
49940c63dcfSRob BradfordSebastien Boeuf <sebastien.boeuf@intel.com>
50040c63dcfSRob BradfordVineeth Pillai <viremana@linux.microsoft.com>
50140c63dcfSRob BradfordWei Liu <liuwe@microsoft.com>
50240c63dcfSRob BradfordWilliam Douglas <william.r.douglas@gmail.com>
50340c63dcfSRob BradfordZide Chen <zide.chen@intel.com>
50440c63dcfSRob Bradford
505f58b6f84SRob Bradford# v0.13.0
506f58b6f84SRob Bradford
507f58b6f84SRob BradfordThis release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
508f58b6f84SRob Bradford
509f58b6f84SRob BradfordHighlights for `cloud-hypervisor` version 0.13.0 include:
510f58b6f84SRob Bradford
511f58b6f84SRob Bradford### Wider VFIO device support
512f58b6f84SRob Bradford
513f58b6f84SRob BradfordIt is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
514f58b6f84SRob Bradforddevices that do not support MSI or MSI-X and instead rely on INTx interrupts.
515f58b6f84SRob BradfordMost notably this widens the support to most NVIDIA cards with the proprietary
516f58b6f84SRob Bradforddrivers.
517f58b6f84SRob Bradford
51840c63dcfSRob Bradford### Improved huge page support
519f58b6f84SRob Bradford
520f58b6f84SRob BradfordThrough the addition of `hugepage_size` on `--memory` it is now possible to
521f58b6f84SRob Bradfordspecify the desired size of the huge pages used when allocating the guest
522f58b6f84SRob Bradfordmemory. The user is required to ensure they have sufficient pages of the
523f58b6f84SRob Bradforddesired size in their pool.
524f58b6f84SRob Bradford
525f58b6f84SRob Bradford### MACvTAP support
526f58b6f84SRob Bradford
527f58b6f84SRob BradfordIt is now possible to provide file descriptors using the `fd` parameter to
528f58b6f84SRob Bradford`--net` which point at TAP devices that have already been opened by the user.
529f58b6f84SRob BradfordThis aids integration with `libvirt` but also permits the use of MACvTAP
530f58b6f84SRob Bradfordsupport. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
531f58b6f84SRob Bradford
532f58b6f84SRob Bradford### VHD disk image support
533f58b6f84SRob Bradford
534f58b6f84SRob BradfordIt is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
535f58b6f84SRob Bradforddisk image with Cloud Hypervisor.
536f58b6f84SRob Bradford
537f58b6f84SRob Bradford### Improved Virtio device threading
538f58b6f84SRob Bradford
539f58b6f84SRob BradfordDevice threads are now derived from the main VMM thread which allows more
540f58b6f84SRob Bradfordrestrictive seccomp filters to be applied to them. The threads also have a
541f58b6f84SRob Bradfordpredictable name derived from the device id.
542f58b6f84SRob Bradford
543f58b6f84SRob Bradford### Clean shutdown support via synthetic power button
544f58b6f84SRob Bradford
545f58b6f84SRob BradfordIt is now possible to request that the guest VM shut itself down by triggering
546f58b6f84SRob Bradforda synthetic ACPI power button press from the VMM. If the guest is listening for
547f58b6f84SRob Bradfordsuch an event (e.g. using systemd) then it will process the event and cleanly
548f58b6f84SRob Bradfordshut down. This functionality is exposed through the HTTP API and can be
549f58b6f84SRob Bradfordtriggered via `ch-remote --api-socket=<API socket> power-button`.
550f58b6f84SRob Bradford
551f58b6f84SRob Bradford### Contributors
552f58b6f84SRob Bradford
553f58b6f84SRob BradfordMany thanks to everyone who has contributed to our 0.13.0 release including
554f58b6f84SRob Bradfordsome new faces.
555f58b6f84SRob Bradford
556f58b6f84SRob Bradford* Bo Chen <chen.bo@intel.com>
557f58b6f84SRob Bradford* Mikko Ylinen <mikko.ylinen@intel.com>
558f58b6f84SRob Bradford* Muminul Islam <muislam@microsoft.com>
559f58b6f84SRob Bradford* Rob Bradford <robert.bradford@intel.com>
560f58b6f84SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
561f58b6f84SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
562f58b6f84SRob Bradford* Vineeth Pillai <viremana@linux.microsoft.com>
563f58b6f84SRob Bradford* Wei Liu <liuwe@microsoft.com>
564f58b6f84SRob Bradford* William Douglas <william.r.douglas@gmail.com>
565f58b6f84SRob Bradford* Xie Yongji <xieyongji@bytedance.com>
566f58b6f84SRob Bradford
567d42b5084SRob Bradford# v0.12.0
568d42b5084SRob Bradford
569d42b5084SRob BradfordThis release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
570d42b5084SRob Bradford
571d42b5084SRob BradfordHighlights for `cloud-hypervisor` version 0.12.0 include:
572d42b5084SRob Bradford
573d42b5084SRob Bradford### ARM64 enhancements
574d42b5084SRob Bradford
575d42b5084SRob BradfordThe use of `--watchdog` is now fully supported as is the ability to reboot the
576d42b5084SRob BradfordVM from within the guest when running Cloud Hypervisor on an ARM64 system.
577d42b5084SRob Bradford
578d42b5084SRob Bradford### Removal of `vhost-user-net` and `vhost-user-block` self spawning
579d42b5084SRob Bradford
580d42b5084SRob BradfordIn order to use `vhost-user-net` or `vhost-user-block` backends the user is now
581d42b5084SRob Bradfordresponsible for starting the backend and providing the socket for the VMM to
582d42b5084SRob Bradforduse. This functionality was deprecated in the last release and how now been
583d42b5084SRob Bradfordremoved.
584d42b5084SRob Bradford
585d42b5084SRob Bradford### Migration of `vhost-user-fs` backend
586d42b5084SRob Bradford
587d42b5084SRob BradfordThe `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
588d42b5084SRob Bradfordinstead hosted in [it's own
589d42b5084SRob Bradfordrepository](https://gitlab.com/virtio-fs/virtiofsd-rs)
590d42b5084SRob Bradford
591d42b5084SRob Bradford### Enhanced "info" API
592d42b5084SRob Bradford
593d42b5084SRob BradfordThe `vm.info` HTTP API endpoint has been extended to include the details of the
594d42b5084SRob Bradforddevices used by the VM including any VFIO devices used.
595d42b5084SRob Bradford
596d42b5084SRob Bradford### Contributors
597d42b5084SRob Bradford
598d42b5084SRob BradfordMany thanks to everyone who has contributed to our 0.12.0 release:
599d42b5084SRob Bradford
600d42b5084SRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
601d42b5084SRob Bradford* Julio Montes <julio.montes@intel.com>
602d42b5084SRob Bradford* Michael Zhao <michael.zhao@arm.com>
603d42b5084SRob Bradford* Muminul Islam <muislam@microsoft.com>
604d42b5084SRob Bradford* Rob Bradford <robert.bradford@intel.com>
605d42b5084SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
606d42b5084SRob Bradford* Wei Liu <liuwe@microsoft.com>
607d42b5084SRob Bradford
6087dcd3affSRob Bradford# v0.11.0
6097dcd3affSRob Bradford
6107dcd3affSRob BradfordThis release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
6117dcd3affSRob Bradford
6127dcd3affSRob BradfordHighlights for `cloud-hypervisor` version 0.11.0 include:
6137dcd3affSRob Bradford
6147dcd3affSRob Bradford### `io_uring` support by default for `virtio-block`
6157dcd3affSRob Bradford
6167dcd3affSRob BradfordProvided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
6177dcd3affSRob Bradfordbe used for a significantly higher performance block device.
6187dcd3affSRob Bradford
6197dcd3affSRob Bradford### Windows Guest Support
6207dcd3affSRob Bradford
6217dcd3affSRob BradfordThis is the first release where we officially support Windows running as a
6227dcd3affSRob Bradfordguest. Full details of how to setup the image and run Cloud Hypervisor with a
6237dcd3affSRob BradfordWindows guest can be found in the dedicated [Windows
6247dcd3affSRob Bradforddocumentation](docs/windows.md).
6257dcd3affSRob Bradford
6267dcd3affSRob Bradford### `vhost-user` "Self Spawning" Deprecation
6277dcd3affSRob Bradford
6287dcd3affSRob BradfordAutomatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
6297dcd3affSRob Bradforddeprecated. Users of this functionality will receive a warning and should make
6307dcd3affSRob Bradfordadjustments. The functionality will be removed in the next release.
6317dcd3affSRob Bradford
6327dcd3affSRob Bradford### `virtio-mmmio` Removal
6337dcd3affSRob Bradford
6347dcd3affSRob BradfordSupport for using the `virtio-mmio` transport, rather than using PCI, has been
6357dcd3affSRob Bradfordremoved. This has been to simplify the code and significantly
6367dcd3affSRob Bradfordreduce the testing burden of the project.
6377dcd3affSRob Bradford
6387dcd3affSRob Bradford### Snapshot/Restore support for ARM64
6397dcd3affSRob Bradford
6407dcd3affSRob BradfordWhen running on the ARM64 architecture snapshot and restore has now been
6417dcd3affSRob Bradfordimplemented.
6427dcd3affSRob Bradford
6437dcd3affSRob Bradford### Improved Linux Boot Time
6447dcd3affSRob Bradford
6457dcd3affSRob BradfordThe time to boot the Linux kernel has been significantly improved by the
6467dcd3affSRob Bradfordidentifying some areas of delays around PCI bus probing, IOAPIC programming and
6477dcd3affSRob BradfordMPTABLE issues. Full details can be seen in #1728.
6487dcd3affSRob Bradford
6497dcd3affSRob Bradford### `SIGTERM/SIGINT` Interrupt Signal Handling
6507dcd3affSRob Bradford
6517dcd3affSRob BradfordWhen the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
6527dcd3affSRob Bradfordtrigger the VMM process to cleanly deallocate resources before exiting. The
6537dcd3affSRob Bradfordguest VM will not be cleanly shutdown but the VMM process will clean up its
6547dcd3affSRob Bradfordresources.
6557dcd3affSRob Bradford
6567dcd3affSRob Bradford### Default Log Level Changed
6577dcd3affSRob Bradford
6587dcd3affSRob BradfordThe default logging level was changed to include warnings which should make it
6597dcd3affSRob Bradfordeasier to see potential issues. New [logging
6607dcd3affSRob Bradforddocumentation](docs/logging) was also added.
6617dcd3affSRob Bradford
6627dcd3affSRob Bradford### New `--balloon` Parameter Added
6637dcd3affSRob Bradford
6647dcd3affSRob BradfordControl of the setup of `virtio-balloon` has been moved from `--memory` to its
6657dcd3affSRob Bradfordown dedicated parameter. This makes it easier to add more balloon specific
6667dcd3affSRob Bradfordcontrols without overloading `--memory`.
6677dcd3affSRob Bradford
6687dcd3affSRob Bradford### Experimental `virtio-watchdog` Support
6697dcd3affSRob Bradford
6707dcd3affSRob BradfordSupport for using a new `virtio-watchdog` has been added which can be used to
6717dcd3affSRob Bradfordhave the VMM reboot the guest if the guest userspace fails to ping the
6727dcd3affSRob Bradfordwatchdog. This is enabled with `--watchdog` and requires kernel support.
6737dcd3affSRob Bradford
6747dcd3affSRob Bradford### Notable Bug Fixes
6757dcd3affSRob Bradford
6767dcd3affSRob Bradford* MTRR bit was missing from CPUID advertised to guest
6777dcd3affSRob Bradford* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
6787dcd3affSRob Bradford* CPU identification string is now exposed to the guest
6797dcd3affSRob Bradford* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
6807dcd3affSRob Bradford  read only so avoids excessive VM exits (#1795)
6817dcd3affSRob Bradford* PCI device hotplug after an unplug was fixed (#1802)
6827dcd3affSRob Bradford* When using the ACPI method to resize the guest memory the full reserved size
6837dcd3affSRob Bradford  can be used (#1803)
6847dcd3affSRob Bradford* Snapshot and restore followed by a second snapshot and restore now works
6857dcd3affSRob Bradford  correctly
6867dcd3affSRob Bradford* Snapshot and restore of VMs with more than 2GiB in one region now work
6877dcd3affSRob Bradford  correctly
6887dcd3affSRob Bradford
6897dcd3affSRob Bradford### Contributors
6907dcd3affSRob Bradford
6917dcd3affSRob BradfordMany thanks to everyone who has contributed to our 0.11.0 release including some new faces.
6927dcd3affSRob Bradford
6937dcd3affSRob Bradford* Anatol Belski <anbelski@linux.microsoft.com>
6947dcd3affSRob Bradford* Bo Chen <chen.bo@intel.com>
6957dcd3affSRob Bradford* Daniel Verkamp <dverkamp@chromium.org>
6967dcd3affSRob Bradford* Henry Wang <Henry.Wang@arm.com>
6977dcd3affSRob Bradford* Hui Zhu <teawater@antfin.com>
6987dcd3affSRob Bradford* Jiangbo Wu <jiangbo.wu@intel.com>
6997dcd3affSRob Bradford* Josh Soref <jsoref@users.noreply.github.com>
7007dcd3affSRob Bradford* Julio Montes <julio.montes@intel.com>
7017dcd3affSRob Bradford* Michael Zhao <michael.zhao@arm.com>
7027dcd3affSRob Bradford* Muminul Islam <muislam@microsoft.com>
7037dcd3affSRob Bradford* pierwill <19642016+pierwill@users.noreply.github.com>
7047dcd3affSRob Bradford* Praveen Paladugu <prapal@microsoft.com>
7057dcd3affSRob Bradford* Rob Bradford <robert.bradford@intel.com>
7067dcd3affSRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
7077dcd3affSRob Bradford* Wei Liu <liuwe@microsoft.com>
7087dcd3affSRob Bradford
7097dcd3affSRob Bradford
710198bd551SRob Bradford# v0.10.0
711198bd551SRob Bradford
712198bd551SRob BradfordThis release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
713198bd551SRob Bradford
714198bd551SRob BradfordHighlights for `cloud-hypervisor` version 0.10.0 include:
715198bd551SRob Bradford
716198bd551SRob Bradford### `virtio-block` Support for Multiple Descriptors
717198bd551SRob Bradford
718198bd551SRob BradfordSome `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
719198bd551SRob Bradford
720198bd551SRob Bradford### Memory Zones
721198bd551SRob Bradford
722198bd551SRob 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).
723198bd551SRob Bradford
724198bd551SRob Bradford### `Seccomp` Sandbox Improvements
725198bd551SRob Bradford
726198bd551SRob 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`.
727198bd551SRob Bradford
728198bd551SRob Bradford### Preliminary KVM HyperV Emulation Control
729198bd551SRob Bradford
730198bd551SRob 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.
731198bd551SRob Bradford
732198bd551SRob Bradford### Notable Bug Fixes
733198bd551SRob Bradford
734198bd551SRob Bradford- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
735198bd551SRob Bradford- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
736198bd551SRob Bradford- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
737198bd551SRob Bradford- `--version` shows the version for released binaries (#1669)
738198bd551SRob Bradford- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
739198bd551SRob Bradford
740198bd551SRob Bradford### Contributors
741198bd551SRob Bradford
742198bd551SRob BradfordMany thanks to everyone who has contributed to our 0.10.0 release including some new faces.
743198bd551SRob Bradford
744198bd551SRob Bradford* Alyssa Ross <hi@alyssa.is>
745198bd551SRob Bradford* Amey Narkhede <ameynarkhede02@gmail.com>
746198bd551SRob Bradford* Anatol Belski <ab@php.net>
747198bd551SRob Bradford* Bo Chen <chen.bo@intel.com>
748198bd551SRob Bradford* Hui Zhu <teawater@antfin.com>
749198bd551SRob Bradford* Michael Zhao <michael.zhao@arm.com>
750198bd551SRob Bradford* Muminul Islam <muislam@microsoft.com>
751198bd551SRob Bradford* Rob Bradford <robert.bradford@intel.com>
752198bd551SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
753198bd551SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
754198bd551SRob Bradford* Wei Liu <liuwe@microsoft.com>
755198bd551SRob Bradford
756d714cf81SRob Bradford# v0.9.0
757d714cf81SRob Bradford
758d714cf81SRob BradfordThis release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
759d714cf81SRob Bradford
760d714cf81SRob BradfordHighlights for `cloud-hypervisor` version 0.9.0 include:
761d714cf81SRob Bradford
762d714cf81SRob Bradford### `io_uring` Based Block Device Support
763d714cf81SRob Bradford
764d714cf81SRob 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.
765d714cf81SRob Bradford
766d714cf81SRob Bradford### Block and Network Device Statistics
767d714cf81SRob Bradford
768d714cf81SRob 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.
769d714cf81SRob Bradford
770d714cf81SRob Bradford### HTTP API Responses
771d714cf81SRob Bradford
772d714cf81SRob BradfordThe HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
773d714cf81SRob Bradford
774d714cf81SRob Bradford### CPU Topology
775d714cf81SRob Bradford
776d714cf81SRob 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.
777d714cf81SRob Bradford
778d714cf81SRob Bradford### Release Build Optimization
779d714cf81SRob Bradford
780d714cf81SRob BradfordOur release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
781d714cf81SRob Bradford
782d714cf81SRob Bradford### Hypervisor Abstraction
783d714cf81SRob Bradford
784d714cf81SRob BradfordA new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
785d714cf81SRob Bradford
786d714cf81SRob Bradford### Snapshot/Restore Improvements
787d714cf81SRob Bradford
788d714cf81SRob 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.
789d714cf81SRob Bradford
790d714cf81SRob Bradford### Virtio Memory Ballooning Support
791d714cf81SRob Bradford
792d714cf81SRob 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.
793d714cf81SRob Bradford
794d714cf81SRob Bradford### Enhancements to ARM64 Support
795d714cf81SRob Bradford
796d714cf81SRob 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.
797d714cf81SRob Bradford
798d714cf81SRob Bradford### Intel SGX Support
799d714cf81SRob Bradford
800d714cf81SRob 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).
801d714cf81SRob Bradford
802d714cf81SRob Bradford### `Seccomp` Sandbox Improvements
803d714cf81SRob Bradford
804d714cf81SRob 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.
805d714cf81SRob Bradford
806d714cf81SRob Bradford### Notable Bug Fixes
807d714cf81SRob Bradford
808d714cf81SRob Bradford* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
809d714cf81SRob Bradford* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
810d714cf81SRob 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).
811d714cf81SRob Bradford* `virtio-mmio` based devices are now more widely tested (#275).
812d714cf81SRob Bradford* Multiple issues have been fixed with virtio device configuration (#1217)
813d714cf81SRob Bradford* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
814d714cf81SRob Bradford
815d714cf81SRob Bradford### Contributors
816d714cf81SRob Bradford
817d714cf81SRob BradfordMany thanks to everyone who has contributed to our 0.9.0 release including some new faces.
818d714cf81SRob Bradford
819d714cf81SRob Bradford* Anatol Belski <ab@php.net>
820d714cf81SRob Bradford* Bo Chen <chen.bo@intel.com>
821d714cf81SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
822d714cf81SRob Bradford* Henry Wang <Henry.Wang@arm.com>
823d714cf81SRob Bradford* Howard Zhang <howard.zhang@arm.com>
824d714cf81SRob Bradford* Hui Zhu <teawater@antfin.com>
825d714cf81SRob Bradford* Jianyong Wu <jianyong.wu@arm.com>
826d714cf81SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
827d714cf81SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
828d714cf81SRob Bradford* Michael Zhao <michael.zhao@arm.com>
829d714cf81SRob Bradford* Muminul Islam <muislam@microsoft.com>
830d714cf81SRob Bradford* Praveen Paladugu <prapal@microsoft.com>
831d714cf81SRob Bradford* Ricardo Koller <ricarkol@gmail.com>
832d714cf81SRob Bradford* Rob Bradford <robert.bradford@intel.com>
833d714cf81SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
834d714cf81SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
835d714cf81SRob Bradford* Stefano Garzarella <sgarzare@redhat.com>
836d714cf81SRob Bradford* Wei Liu <liuwe@microsoft.com>
837d714cf81SRob Bradford
838d714cf81SRob Bradford
83952b83969SRob Bradford# v0.8.0
84052b83969SRob Bradford
84152b83969SRob BradfordThis release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
84252b83969SRob Bradford
84352b83969SRob BradfordHighlights for `cloud-hypervisor` version 0.8.0 include:
84452b83969SRob Bradford
84552b83969SRob Bradford### Experimental Snapshot and Restore Support
84652b83969SRob Bradford
84752b83969SRob BradfordThis release includes the first version of the snapshot and restore feature.
84852b83969SRob BradfordThis allows a VM to be paused and then subsequently snapshotted. At a later
84952b83969SRob Bradfordpoint that snapshot may be restored into a new running VM identical to the
85052b83969SRob Bradfordoriginal VM at the point it was paused.
85152b83969SRob Bradford
85252b83969SRob BradfordThis feature can be used for offline migration from one VM host to another, to
85352b83969SRob Bradfordallow the upgrading or rebooting of the host machine transparently to the guest
85452b83969SRob Bradfordor for templating the VM. This is an experimental feature and cannot be used on
85552b83969SRob Bradforda VM using passthrough (VFIO) devices. Issues with SMP have also been observed
85652b83969SRob Bradford(#1176).
85752b83969SRob Bradford
85852b83969SRob Bradford### Experimental ARM64 Support
85952b83969SRob Bradford
86052b83969SRob BradfordIncluded in this release is experimental support for running on ARM64.
86152b83969SRob BradfordCurrently only `virtio-mmio` devices and a serial port are supported. Full
86252b83969SRob Bradforddetails can be found in the [ARM64 documentation](docs/arm64.md).
86352b83969SRob Bradford
86452b83969SRob Bradford### Support for Using 5-level Paging in Guests
86552b83969SRob Bradford
86652b83969SRob BradfordIf the host supports it the guest is now enabled for 5-level paging (aka LA57).
86752b83969SRob BradfordThis works when booting the Linux kernel with a vmlinux, bzImage or firmware
86852b83969SRob Bradfordbased boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
86952b83969SRob Bradfordwork due to current limitations in the PVH boot process.
87052b83969SRob Bradford
87152b83969SRob Bradford### Virtio Device Interrupt Suppression for Network Devices
87252b83969SRob Bradford
87352b83969SRob BradfordWith `virtio-net` and `vhost-user-net` devices the guest can suppress
87452b83969SRob Bradfordinterrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
87552b83969SRob Bradfordcan lead to an improvement in performance by reducing the number of interrupts
87652b83969SRob Bradfordthe guest must service.
87752b83969SRob Bradford
87852b83969SRob Bradford### `vhost_user_fs` Improvements
87952b83969SRob Bradford
88052b83969SRob BradfordThe implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
88152b83969SRob Bradford
88252b83969SRob Bradford
88352b83969SRob Bradford### Notable Bug Fixes
88452b83969SRob Bradford
88552b83969SRob Bradford* VMs that have not yet been booted can now be deleted (#1110).
88652b83969SRob Bradford* By creating the `tap` device ahead of creating the VM it is not required to
88752b83969SRob Bradford  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
88852b83969SRob Bradford* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
88952b83969SRob Bradford  the specification and synchronizes to the underlying filesystem as required
89052b83969SRob Bradford  based on guest feature negotiation. This avoids potential data loss (#399,
89152b83969SRob Bradford  #1216).
89252b83969SRob Bradford* When booting with a large number of vCPUs then the ACPI table would be
89352b83969SRob Bradford  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
89452b83969SRob Bradford  `MPTABLE` will no longer be generated (#1132).
89552b83969SRob Bradford* Shutting down VMs that have been paused is now supported (#816).
89652b83969SRob Bradford* Created socket files are deleted on shutdown (#1083).
89752b83969SRob Bradford* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
89852b83969SRob Bradford  (#751).
89952b83969SRob Bradford
90052b83969SRob Bradford### Command Line and API Changes
90152b83969SRob Bradford
90252b83969SRob BradfordThis is non exhaustive list of HTTP API and command line changes:
90352b83969SRob Bradford
90452b83969SRob Bradford* All user visible socket parameters are now consistently called `socket`
90552b83969SRob Bradford  rather than `sock` in some cases.
90652b83969SRob Bradford* The `ch-remote` tool now shows any error message generated by the VMM
90752b83969SRob Bradford* The `wce` parameter has been removed from `--disk` as the feature is always
90852b83969SRob Bradford  offered for negotiation.
90952b83969SRob Bradford* `--net` has gained a `host_mac` option that allows the setting of the MAC
91052b83969SRob Bradford  address for the `tap` device on the host.
91152b83969SRob Bradford
91252b83969SRob Bradford### Contributors
91352b83969SRob Bradford
91452b83969SRob BradfordMany thanks to everyone who has contributed to our 0.8.0 release including some new faces.
91552b83969SRob Bradford
91652b83969SRob Bradford* Anatol Belski <ab@php.net>
91752b83969SRob Bradford* Arron Wang <arron.wang@intel.com>
91852b83969SRob Bradford* Bo Chen <chen.bo@intel.com>
91952b83969SRob Bradford* Dr. David Alan Gilbert <dgilbert@redhat.com>
92052b83969SRob Bradford* Henry Wang <Henry.Wang@arm.com>
92152b83969SRob Bradford* Hui Zhu <teawater@antfin.com>
92252b83969SRob Bradford* LiYa'nan <oliverliyn@gmail.com>
92352b83969SRob Bradford* Michael Zhao <michael.zhao@arm.com>
92452b83969SRob Bradford* Rob Bradford <robert.bradford@intel.com>
92552b83969SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
92652b83969SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
92752b83969SRob Bradford* Sergio Lopez <slp@redhat.com>
92852b83969SRob Bradford
92996be8229SRob Bradford# v0.7.0
93096be8229SRob Bradford
93196be8229SRob BradfordThis release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
93296be8229SRob Bradford
93396be8229SRob BradfordHighlights for `cloud-hypervisor` version 0.7.0 include:
93496be8229SRob Bradford
93596be8229SRob Bradford### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
93696be8229SRob Bradford
93796be8229SRob BradfordFurther to our effort to support modifying a running guest we now support
93896be8229SRob Bradfordhotplug and unplug of the following virtio backed devices: block, network,
93996be8229SRob Bradfordpmem, virtio-fs and vsock. This functionality is available on the (default) PCI
9405c3f4dbeSJosh Sorefbased transport and is exposed through the HTTP API. The `ch-remote` utility
94196be8229SRob Bradfordprovides a CLI for adding or removing these device types after the VM has
94296be8229SRob Bradfordbooted. User can use the `id` parameter on the devices to choose names for
94396be8229SRob Bradforddevices to ease their removal.
94496be8229SRob Bradford
94596be8229SRob Bradford### Alternative `libc` Support
94696be8229SRob Bradford
94796be8229SRob BradfordCloud Hypervisor can now be compiled with the `musl` C library and this release
94896be8229SRob Bradfordcontains a static binary compiled using that toolchain.
94996be8229SRob Bradford
95096be8229SRob Bradford### Multithreaded Multi Queued `vhost-user` Backends
95196be8229SRob Bradford
95296be8229SRob BradfordThe `vhost-user` backends for network and block support that are shipped by
95396be8229SRob BradfordCloud Hypervisor have been enhanced to support multiple threads and queues to
95496be8229SRob Bradfordimprove throughput. These backends are used automatically if `vhost_user=true`
95596be8229SRob Bradfordis passed when the devices are created.
95696be8229SRob Bradford
95796be8229SRob Bradford### Initial RamFS Support
95896be8229SRob Bradford
95996be8229SRob BradfordBy passing the `--initramfs` command line option the user can specify a file to
96096be8229SRob Bradfordbe loaded into the guest memory to be used as the kernel initial filesystem.
96196be8229SRob BradfordThis is usually used to allow the loading of drivers needed to be able to
96296be8229SRob Bradfordaccess the real root filesystem but it can also be used standalone for a very
96396be8229SRob Bradfordminimal image.
96496be8229SRob Bradford
96596be8229SRob Bradford### Alternative Memory Hotplug: `virtio-mem`
96696be8229SRob Bradford
96796be8229SRob BradfordAs well as supporting ACPI based hotplug Cloud Hypervisor now supports using
96896be8229SRob Bradfordthe `virtio-mem` hotplug alternative. This can be controlled by the
96996be8229SRob Bradford`hotplug_method` parameter on the `--memory` command line option. It currently
97096be8229SRob Bradfordrequires kernel patches to be able to support it.
97196be8229SRob Bradford
97296be8229SRob Bradford### `Seccomp` Sandboxing
97396be8229SRob Bradford
97496be8229SRob BradfordCloud Hypervisor now has support for restricting the system calls that the
97596be8229SRob Bradfordprocess can use via the `seccomp` security API. This on by default and is
97696be8229SRob Bradfordcontrolled by the `--seccomp` command line option.
97796be8229SRob Bradford
97896be8229SRob Bradford### Updated Distribution Support
97996be8229SRob Bradford
98096be8229SRob BradfordWith the release of Ubuntu 20.04 we have added that to the list of supported
98196be8229SRob Bradforddistributions and is part of our regular testing programme.
98296be8229SRob Bradford
98396be8229SRob Bradford### Command Line and API Changes
98496be8229SRob Bradford
98596be8229SRob BradfordThis is non exhaustive list of HTTP API and command line changes
98696be8229SRob Bradford
98796be8229SRob Bradford* New `id` fields added for devices to allow them to be named to ease removal.
98896be8229SRob Bradford  If no name is specified the VMM chooses one.
98996be8229SRob Bradford* Use `--memory`'s `shared` and `hugepages` controls for determining backing
99096be8229SRob Bradford  memory instead of providing a path.
99196be8229SRob Bradford* The `--vsock` parameter only takes one device as the Linux kernel only
99296be8229SRob Bradford  supports a single Vsock device. The REST API has removed the vector for this
99396be8229SRob Bradford  option and replaced it with a single optional field.
99496be8229SRob Bradford* There is enhanced validation of the command line and API provided
99596be8229SRob Bradford  configurations to ensure that the provided options are compatible e.g. that
99696be8229SRob Bradford  shared memory is in use if any attempt is made to used a `vhost-user` backed
99796be8229SRob Bradford  device.
99896be8229SRob Bradford* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
99996be8229SRob Bradford  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
100096be8229SRob Bradford  has appropriate new HTTP endpoints too.
100196be8229SRob Bradford* Specifying a `size` with `--pmem` is no longer required and instead the size
100296be8229SRob Bradford  will be obtained from the file. A `discard_writes` option has also been added
100396be8229SRob Bradford  to provide the equivalent of a read-only file.
100496be8229SRob Bradford* The parameters to `--block-backend` have been changed to more closely align
100596be8229SRob Bradford  with those used by `--disk`.
100696be8229SRob Bradford
100796be8229SRob Bradford### Contributors
100896be8229SRob Bradford
100996be8229SRob BradfordMany thanks to everyone who has contributed to our 0.7.0 release including some new faces.
101096be8229SRob Bradford
101196be8229SRob Bradford* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
101296be8229SRob Bradford* Bo Chen <chen.bo@intel.com>
101396be8229SRob Bradford* Cathy Zhang <cathy.zhang@intel.com>
101496be8229SRob Bradford* Damjan Georgievski <gdamjan@gmail.com>
101596be8229SRob Bradford* Dean Sheather <dean@coder.com>
101696be8229SRob Bradford* Eryu Guan <eguan@linux.alibaba.com>
101796be8229SRob Bradford* Hui Zhu <teawater@antfin.com>
101896be8229SRob Bradford* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
101996be8229SRob Bradford* Martin Xu <martin.xu@intel.com>
102096be8229SRob Bradford* Muminul Islam <muislam@microsoft.com>
102196be8229SRob Bradford* Rob Bradford <robert.bradford@intel.com>
102296be8229SRob Bradford* Samuel Ortiz <sameo@linux.intel.com>
102396be8229SRob Bradford* Sebastien Boeuf <sebastien.boeuf@intel.com>
102496be8229SRob Bradford* Sergio Lopez <slp@redhat.com>
102596be8229SRob Bradford* Yang Zhong <yang.zhong@intel.com>
102696be8229SRob Bradford* Yi Sun <yi.y.sun@linux.intel.com>
102796be8229SRob Bradford
102803cb26ccSSamuel Ortiz# v0.6.0
102903cb26ccSSamuel Ortiz
103003cb26ccSSamuel OrtizThis release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
103103cb26ccSSamuel Ortiz
103203cb26ccSSamuel OrtizHighlights for `cloud-hypervisor` version 0.6.0 include:
103303cb26ccSSamuel Ortiz
103403cb26ccSSamuel Ortiz### Directly Assigned Devices Hotplug
103503cb26ccSSamuel Ortiz
103603cb26ccSSamuel OrtizWe continued our efforts around supporting dynamically changing the guest
103703cb26ccSSamuel Ortizresources. After adding support for CPU and memory hotplug, Cloud Hypervisor
103803cb26ccSSamuel Ortiznow supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
103903cb26ccSSamuel Ortizdevices into an already running guest. This closes the features gap for
104003cb26ccSSamuel Ortizproviding a complete Kata Containers workloads support with Cloud Hypervisor.
104103cb26ccSSamuel Ortiz
104203cb26ccSSamuel Ortiz### Shared Filesystem Improvements
104303cb26ccSSamuel Ortiz
104403cb26ccSSamuel OrtizWe enhanced our shared filesystem support through many `virtio-fs` improvements.
104503cb26ccSSamuel OrtizBy adding support for DAX, parallel processing of multiple requests, `FS_IO`,
104603cb26ccSSamuel Ortiz`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
104703cb26ccSSamuel Ortizimproved our filesystem sharing performance, but also made it more stable and
104803cb26ccSSamuel Ortizcompatible with other `virtio-fs` implementations.
104903cb26ccSSamuel Ortiz
105003cb26ccSSamuel Ortiz### Block and Networking IO Self Offloading
105103cb26ccSSamuel Ortiz
105203cb26ccSSamuel OrtizWhen choosing to offload the paravirtualized block and networking I/O to an
105303cb26ccSSamuel Ortizexternal process (through the `vhost-user` protocol), Cloud Hypervisor now
105403cb26ccSSamuel Ortizautomatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
105503cb26ccSSamuel Ortizinto their own, separate processes.
10565c3f4dbeSJosh SorefThis provides a seamless paravirtualized I/O user experience for those who want
105703cb26ccSSamuel Ortizto run their guest I/O into separate executions contexts.
105803cb26ccSSamuel Ortiz
105903cb26ccSSamuel Ortiz### Command Line Interface
106003cb26ccSSamuel Ortiz
106103cb26ccSSamuel OrtizMore and more Cloud Hypervisor services are exposed through the
106237a2c13aSAlyssa Ross[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
106337a2c13aSAlyssa Rossaccessible via relatively cumbersome HTTP calls. In order to abstract
106437a2c13aSAlyssa Rossthose calls into a more user friendly tool, we created a Cloud Hypervisor
106537a2c13aSAlyssa RossCommand Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
106637a2c13aSAlyssa Rossis created with each build and available e.g. at
106703cb26ccSSamuel Ortiz`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
106803cb26ccSSamuel Ortiz
106903cb26ccSSamuel OrtizPlease check `ch-remote --help` for a complete description of all available
107003cb26ccSSamuel Ortizcommands.
107103cb26ccSSamuel Ortiz
107203cb26ccSSamuel Ortiz### PVH Boot
107303cb26ccSSamuel Ortiz
107403cb26ccSSamuel OrtizIn addition to the traditional Linux boot protocol, Cloud Hypervisor now
107503cb26ccSSamuel Ortizsupports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
107603cb26ccSSamuel Ortiz
107703cb26ccSSamuel Ortiz### Contributors
107803cb26ccSSamuel Ortiz
107903cb26ccSSamuel OrtizWith the 0.6.0 release, we are welcoming a few new contributors. Many thanks
108003cb26ccSSamuel Ortizto them and to everyone that contributed to this release:
108103cb26ccSSamuel Ortiz
108203cb26ccSSamuel Ortiz* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
108303cb26ccSSamuel Ortiz* Arron Wang <arron.wang@intel.com>
108403cb26ccSSamuel Ortiz* Bin Liu <liubin0329@gmail.com>
108503cb26ccSSamuel Ortiz* Bo Chen <chen.bo@intel.com>
108603cb26ccSSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
108703cb26ccSSamuel Ortiz* Eryu Guan <eguan@linux.alibaba.com>
108803cb26ccSSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
108903cb26ccSSamuel Ortiz* Liu Bo <bo.liu@linux.alibaba.com>
109003cb26ccSSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
109103cb26ccSSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
109203cb26ccSSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
109303cb26ccSSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
109403cb26ccSSamuel Ortiz* Sergio Lopez <slp@redhat.com>
109503cb26ccSSamuel Ortiz
109694f2fc33SRob Bradford# v0.5.1
109794f2fc33SRob Bradford
109894f2fc33SRob BradfordThis is a bugfix release branched off v0.5.0. It contains the following fixes:
109994f2fc33SRob Bradford
110094f2fc33SRob Bradford* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
110194f2fc33SRob Bradford* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
110294f2fc33SRob Bradford* Fixed error reporting for resize command - Samuel Ortiz
110394f2fc33SRob Bradford* Double reboot workaround (#783) - Rob Bradford
110494f2fc33SRob Bradford* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
11058e8a7b6dSSamuel Ortiz
11062f395e60SSamuel Ortiz# v0.5.0
11072f395e60SSamuel Ortiz
11082f395e60SSamuel OrtizThis release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
11092f395e60SSamuel Ortiz
11102f395e60SSamuel OrtizHighlights for `cloud-hypervisor` version 0.5.0 include:
11112f395e60SSamuel Ortiz
11122f395e60SSamuel Ortiz### Virtual Machine Dynamic Resizing
11132f395e60SSamuel Ortiz
11142f395e60SSamuel OrtizWith 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
11152f395e60SSamuel Ortizmemory hot plug as well. This allows to dynamically resize Cloud Hypervisor
11162f395e60SSamuel Ortizguests which is needed for e.g. Kubernetes related use cases.
11172f395e60SSamuel OrtizThe memory hot plug implementation is based on the same framework as the CPU hot
11182f395e60SSamuel Ortizplug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
11192f395e60SSamuel Ortiz
11202f395e60SSamuel OrtizNext on our VM resizing roadmap is the PCI devices hotplug feature.
11212f395e60SSamuel Ortiz
11222f395e60SSamuel Ortiz### Multi-Queue, Multi-Threaded Paravirtualization
11232f395e60SSamuel Ortiz
11242f395e60SSamuel OrtizWe enhanced our virtio networking and block support by having both devices use
11252f395e60SSamuel Ortizmultiple I/O queues handled by multiple threads. This improves our default
11262f395e60SSamuel Ortizparavirtualized networking and block devices throughput.
11272f395e60SSamuel Ortiz
11282f395e60SSamuel Ortiz### New Interrupt Management Framework
11292f395e60SSamuel Ortiz
11302f395e60SSamuel OrtizWe improved our interrupt management implementation by introducing an Interrupt
11312f395e60SSamuel OrtizManager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
11322f395e60SSamuel Ortizcrates discussions. This move made the code significantly cleaner, and allowed
11332f395e60SSamuel Ortizus to remove several KVM related dependencies from crates like the PCI and
11342f395e60SSamuel Ortizvirtio ones.
11352f395e60SSamuel Ortiz
11362f395e60SSamuel Ortiz### Development Tools
11372f395e60SSamuel Ortiz
11382f395e60SSamuel OrtizIn order to provide a better developer experience, we worked on improving our
11392f395e60SSamuel Ortizbuild, development and testing tools.
11402f395e60SSamuel OrtizSomehow similar to the excellent
11412f395e60SSamuel Ortiz[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
114237a2c13aSAlyssa Rosswe now provide a [dev_cli script](scripts/dev_cli.sh).
11432f395e60SSamuel Ortiz
11442f395e60SSamuel OrtizWith this new tool, our users and contributors will be able to build and test
11452f395e60SSamuel OrtizCloud Hypervisor through a containerized environment.
11462f395e60SSamuel Ortiz
11472f395e60SSamuel Ortiz### Kata Containers Integration
11482f395e60SSamuel Ortiz
11492f395e60SSamuel OrtizWe spent some significant time and efforts debugging and fixing our integration
11502f395e60SSamuel Ortizwith the [Kata Containers](https://github.com/kata-containers) project. Cloud
11512f395e60SSamuel OrtizHypervisor is now a fully supported Kata Containers hypervisor, and is
11522f395e60SSamuel Ortizintegrated into the project's CI.
11532f395e60SSamuel Ortiz
11542f395e60SSamuel Ortiz### Contributors
11552f395e60SSamuel Ortiz
11562f395e60SSamuel OrtizMany thanks to everyone that contributed to the 0.5.0 release:
11572f395e60SSamuel Ortiz
11582f395e60SSamuel Ortiz* Bo Chen <chen.bo@intel.com>
11592f395e60SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
11602f395e60SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
11612f395e60SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
11622f395e60SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
11632f395e60SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
11642f395e60SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
11652f395e60SSamuel Ortiz* Yang Zhong <yang.zhong@intel.com>
11662f395e60SSamuel Ortiz
1167cec884e8SSamuel Ortiz# v0.4.0
1168cec884e8SSamuel Ortiz
1169cec884e8SSamuel OrtizThis release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
1170cec884e8SSamuel Ortiz
1171cec884e8SSamuel OrtizHighlights for `cloud-hypervisor` version 0.4.0 include:
1172cec884e8SSamuel Ortiz
1173cec884e8SSamuel Ortiz### Dynamic virtual CPUs addition
1174cec884e8SSamuel Ortiz
1175cec884e8SSamuel OrtizAs a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
1176cec884e8SSamuel Ortizadding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
1177cec884e8SSamuel OrtizThrough hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
1178cec884e8SSamuel Ortizto an already running guest and the high level operations for that process are
117937a2c13aSAlyssa Rossdocumented [here](docs/hotplug.md)
1180cec884e8SSamuel Ortiz
1181cec884e8SSamuel OrtizDuring the next release cycles we are planning to extend Cloud Hypervisor
1182cec884e8SSamuel Ortizhot plug framework to other resources, namely PCI devices and memory.
1183cec884e8SSamuel Ortiz
1184cec884e8SSamuel Ortiz### Programmatic firmware tables generation
1185cec884e8SSamuel Ortiz
1186cec884e8SSamuel OrtizAs part of the CPU hot plug feature enablement, and as a requirement for hot
1187cec884e8SSamuel Ortizplugging other resources like devices or RAM, we added support for
1188cec884e8SSamuel Ortizprogrammatically generating the needed ACPI tables. Through a dedicated
1189cec884e8SSamuel Ortiz`acpi-tables` crate, we now have a flexible and clean way of generating those
1190cec884e8SSamuel Ortiztables based on the VMM device model and topology.
1191cec884e8SSamuel Ortiz
1192cec884e8SSamuel Ortiz### Filesystem and block devices vhost-user backends
1193cec884e8SSamuel Ortiz
1194cec884e8SSamuel OrtizOur objective of running all Cloud Hypervisor paravirtualized I/O to a
1195cec884e8SSamuel Ortizvhost-user based framework is getting closer as we've added Rust based
1196cec884e8SSamuel Ortizimplementations for vhost-user-blk and virtiofs backends. Together with the
1197cec884e8SSamuel Ortizvhost-user-net backend that came with the 0.3.0 release, this will form the
1198cec884e8SSamuel Ortizdefault Cloud Hypervisor I/O architecture.
1199cec884e8SSamuel Ortiz
1200cec884e8SSamuel Ortiz### Guest pause and resume
1201cec884e8SSamuel Ortiz
12025c3f4dbeSJosh SorefAs an initial requirement for enabling live migration, we added support for
1203cec884e8SSamuel Ortizpausing and resuming any VMM components. As an intermediate step towards live
1204cec884e8SSamuel Ortizmigration, the upcoming guest snapshotting feature will be based on the pause
1205cec884e8SSamuel Ortizand resume capabilities.
1206cec884e8SSamuel Ortiz
1207cec884e8SSamuel Ortiz### Userspace IOAPIC by default
1208cec884e8SSamuel Ortiz
1209cec884e8SSamuel OrtizAs a way to simplify our device manager implementation, but also in order to
1210cec884e8SSamuel Ortizstay away from privileged rings as often as possible, any device that relies on
1211cec884e8SSamuel Ortizpin based interrupts will be using the userspace IOAPIC implementation by
1212cec884e8SSamuel Ortizdefault.
1213cec884e8SSamuel Ortiz
1214cec884e8SSamuel Ortiz### PCI BAR reprogramming
1215cec884e8SSamuel Ortiz
1216cec884e8SSamuel OrtizIn order to allow for a more flexible device model, and also support guests
1217cec884e8SSamuel Ortizthat would want to move PCI devices, we added support for PCI devices BAR
1218cec884e8SSamuel Ortizreprogramming.
1219cec884e8SSamuel Ortiz
1220cec884e8SSamuel Ortiz### New `cloud-hypervisor` organization
1221cec884e8SSamuel Ortiz
1222cec884e8SSamuel OrtizAs we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1223cec884e8SSamuel Ortizwe decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1224cec884e8SSamuel OrtizTogether with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1225cec884e8SSamuel Ortizproject, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1226cec884e8SSamuel Ortizand [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1227cec884e8SSamuel Ortizrepositories. We may also use it to host any rust-vmm that we'd need to
1228cec884e8SSamuel Ortiztemporarily fork.
1229cec884e8SSamuel OrtizThanks to GitHub's seamless repository redirections, the move is completely
1230cec884e8SSamuel Ortiztransparent to all Cloud Hypervisor contributors, users and followers.
1231cec884e8SSamuel Ortiz
1232cec884e8SSamuel Ortiz### Contributors
1233cec884e8SSamuel Ortiz
1234cec884e8SSamuel OrtizMany thanks to everyone that contributed to the 0.4.0 release:
1235cec884e8SSamuel Ortiz
1236cec884e8SSamuel Ortiz* Cathy Zhang <cathy.zhang@intel.com>
1237cec884e8SSamuel Ortiz* Emin Ghuliev <drmint80@gmail.com>
1238cec884e8SSamuel Ortiz* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1239cec884e8SSamuel Ortiz* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1240cec884e8SSamuel Ortiz* Rob Bradford <robert.bradford@intel.com>
1241cec884e8SSamuel Ortiz* Samuel Ortiz <sameo@linux.intel.com>
1242cec884e8SSamuel Ortiz* Sebastien Boeuf <sebastien.boeuf@intel.com>
1243cec884e8SSamuel Ortiz* Sergio Lopez <slp@redhat.com>
1244cec884e8SSamuel Ortiz* Wu Zongyong <wuzongyong@linux.alibaba.com>
1245cec884e8SSamuel Ortiz
12468e8a7b6dSSamuel Ortiz# v0.3.0
12478e8a7b6dSSamuel Ortiz
12488ec89bc8SRob BradfordThis release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
12498e8a7b6dSSamuel Ortiz
12508e8a7b6dSSamuel OrtizHighlights for `cloud-hypervisor` version 0.3.0 include:
12518e8a7b6dSSamuel Ortiz
12528e8a7b6dSSamuel Ortiz### Block device offloading
12538e8a7b6dSSamuel Ortiz
12548e8a7b6dSSamuel OrtizWe continue to work on offloading paravirtualized I/O to external processes,
12558e8a7b6dSSamuel Ortizand we added support for
12568e8a7b6dSSamuel Ortiz[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
12578e8a7b6dSSamuel OrtizThis enables `cloud-hypervisor` users to plug a `vhost-user` based block device
12588e8a7b6dSSamuel Ortizlike [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
12598e8a7b6dSSamuel Ortizbackend.
12608e8a7b6dSSamuel Ortiz
12618e8a7b6dSSamuel Ortiz### Network device backend
12628e8a7b6dSSamuel Ortiz
12638e8a7b6dSSamuel OrtizThe previous release provided support for
12648e8a7b6dSSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
12658e8a7b6dSSamuel Ortizalso provide a TAP based vhost-user-net backend, implemented in Rust. Together
12668e8a7b6dSSamuel Ortizwith the vhost-user-net device implementation, this will eventually become the
12678e8a7b6dSSamuel OrtizCloud Hypervisor default paravirtualized networking architecture.
12688e8a7b6dSSamuel Ortiz
12698e8a7b6dSSamuel Ortiz### Virtual sockets
12708e8a7b6dSSamuel Ortiz
12718e8a7b6dSSamuel OrtizIn order to more efficiently and securely communicate between host and guest,
12728e8a7b6dSSamuel Ortizwe added an hybrid implementation of the
12738e8a7b6dSSamuel Ortiz[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
12748e8a7b6dSSamuel Ortizfamily over virtio. Credits go to the
12758e8a7b6dSSamuel Ortiz[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
12768e8a7b6dSSamuel Ortizproject as our implementation is a copy of theirs.
12778e8a7b6dSSamuel Ortiz
12788e8a7b6dSSamuel Ortiz### HTTP based API
12798e8a7b6dSSamuel Ortiz
12808e8a7b6dSSamuel OrtizIn anticipation of the need to support asynchronous operations to Cloud
12818e8a7b6dSSamuel OrtizHypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
12828e8a7b6dSSamuel Ortizbased API to the VMM. The API will be more extensively documented during the
12838e8a7b6dSSamuel Ortiznext release cycle.
12848e8a7b6dSSamuel Ortiz
12858e8a7b6dSSamuel Ortiz### Memory mapped virtio transport
12868e8a7b6dSSamuel Ortiz
12878e8a7b6dSSamuel OrtizIn order to support potential PCI-free use cases, we added support for the
12888e8a7b6dSSamuel Ortiz[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
12898e8a7b6dSSamuel Ortiztransport layer. This will allow us to support simple, minimal guest
12908e8a7b6dSSamuel Ortizconfigurations that do not require a PCI bus emulation.
12918e8a7b6dSSamuel Ortiz
12928e8a7b6dSSamuel Ortiz### Paravirtualized IOMMU
12938e8a7b6dSSamuel Ortiz
12948e8a7b6dSSamuel OrtizAs we want to improve our nested guests support, we added support for exposing
129537a2c13aSAlyssa Rossa [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
129637a2c13aSAlyssa Rossfor a safer nested virtio and directly assigned devices support.
12978e8a7b6dSSamuel Ortiz
12988e8a7b6dSSamuel OrtizTo add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
12998e8a7b6dSSamuel Ortizusers to be able to specify if devices had to be handled through this virtual
13008e8a7b6dSSamuel OrtizIOMMU or not. In particular, the `--disk` option now expects disk paths to be
13018e8a7b6dSSamuel Ortizprefixed with a `path=` string, and supports an optional `iommu=[on|off]`
13028e8a7b6dSSamuel Ortizsetting.
13038e8a7b6dSSamuel Ortiz
13048e8a7b6dSSamuel Ortiz### Ubuntu 19.10
13058e8a7b6dSSamuel Ortiz
13068ec89bc8SRob BradfordWith the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
13078e8a7b6dSSamuel Ortizwe can now support the latest
13088e8a7b6dSSamuel Ortiz[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
13098e8a7b6dSSamuel Ortiz
13108e8a7b6dSSamuel Ortiz### Large memory guests
13118e8a7b6dSSamuel Ortiz
13128e8a7b6dSSamuel OrtizAfter simplifying and changing our guest address space handling, we can now
13138e8a7b6dSSamuel Ortizsupport guests with large amount of memory (more than 64GB).
13147688e6e2SSamuel Ortiz
1315d784ac29SSamuel Ortiz# v0.2.0
1316d784ac29SSamuel Ortiz
13178ec89bc8SRob BradfordThis release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1318d784ac29SSamuel Ortiz
1319d784ac29SSamuel OrtizHighlights for `cloud-hypervisor` version 0.2.0 include:
1320d784ac29SSamuel Ortiz
1321d784ac29SSamuel Ortiz### Network device offloading
1322d784ac29SSamuel Ortiz
1323d784ac29SSamuel OrtizAs part of our general effort to offload paravirtualized I/O to external
1324d784ac29SSamuel Ortizprocesses, we added support for
1325d784ac29SSamuel Ortiz[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1326d784ac29SSamuel Ortizenables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1327d784ac29SSamuel Ortiz(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1328d784ac29SSamuel Ortiz
1329d784ac29SSamuel Ortiz### Minimal hardware-reduced ACPI
1330d784ac29SSamuel Ortiz
1331d784ac29SSamuel OrtizIn order to properly implement and guest reset and shutdown, we implemented
1332d784ac29SSamuel Ortiza minimal version of the hardware-reduced ACPI specification. Together with
1333d784ac29SSamuel Ortiza tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1334d784ac29SSamuel Ortizcleanly reboot and shutdown.
1335d784ac29SSamuel Ortiz
1336d784ac29SSamuel OrtizThe ACPI implementation is a `cloud-hypervisor` build time option that is
1337d784ac29SSamuel Ortizenabled by default.
1338d784ac29SSamuel Ortiz
1339d784ac29SSamuel Ortiz### Debug I/O port
1340d784ac29SSamuel Ortiz
1341d784ac29SSamuel OrtizBased on the Firecracker idea of using a dedicated I/O port to measure guest
1342d784ac29SSamuel Ortizboot times, we added support for logging guest events through the
1343d784ac29SSamuel Ortiz[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1344d784ac29SSamuel OrtizPC debug port. This allows, among other things, for granular guest boot time
134537a2c13aSAlyssa Rossmeasurements. See our [debug port documentation](docs/debug-port.md) for more
134637a2c13aSAlyssa Rossdetails.
1347d784ac29SSamuel Ortiz
1348d784ac29SSamuel Ortiz### Improved direct device assignment
1349d784ac29SSamuel Ortiz
1350d784ac29SSamuel OrtizWe fixed a major performance issue with our initial VFIO implementation: When
1351d784ac29SSamuel Ortizenabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1352d784ac29SSamuel Ortizwere (in many cases) not cached. After correctly tagging the guest memory from
1353d784ac29SSamuel Ortiz`cloud-hypervisor` we're now able to reach the expected performance from
1354d784ac29SSamuel Ortizdirectly assigned devices.
1355d784ac29SSamuel Ortiz
1356d784ac29SSamuel Ortiz### Improved shared filesystem
1357d784ac29SSamuel Ortiz
1358d784ac29SSamuel OrtizWe added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1359d784ac29SSamuel Ortizsupport to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1360d784ac29SSamuel OrtizThis provides better shared filesystem IO performance with a smaller guest
1361d784ac29SSamuel Ortizmemory footprint.
1362d784ac29SSamuel Ortiz
1363d784ac29SSamuel Ortiz### Ubuntu bionic based CI
1364d784ac29SSamuel Ortiz
13658ec89bc8SRob BradfordThanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1366d784ac29SSamuel Ortizimprovements, we are now able to boot Ubuntu bionic images. We added those to
1367d784ac29SSamuel Ortizour CI pipeline.
1368d784ac29SSamuel Ortiz
136993b77530SSamuel Ortiz# v0.1.0
137093b77530SSamuel Ortiz
13718ec89bc8SRob BradfordThis release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
137293b77530SSamuel Ortiz
137393b77530SSamuel OrtizHighlights for `cloud-hypervisor` version 0.1.0 include:
137493b77530SSamuel Ortiz
137593b77530SSamuel Ortiz### Shared filesystem
137693b77530SSamuel Ortiz
137793b77530SSamuel OrtizWe added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
137893b77530SSamuel Ortizsystem, allowing for an efficient and reliable way of sharing a filesystem
137993b77530SSamuel Ortizbetween the host and the `cloud-hypervisor` guest.
138093b77530SSamuel Ortiz
138137a2c13aSAlyssa RossSee our [filesystem sharing](docs/fs.md) documentation for more details on how
138237a2c13aSAlyssa Rossto use virtio-fs with `cloud-hypervisor`.
138393b77530SSamuel Ortiz
138493b77530SSamuel Ortiz### Initial direct device assignment support
138593b77530SSamuel Ortiz
138693b77530SSamuel OrtizVFIO (Virtual Function I/O) is a kernel framework that exposes direct device
138793b77530SSamuel Ortizaccess to userspace. `cloud-hypervisor` uses VFIO to directly assign host
138893b77530SSamuel Ortizphysical devices into its guest.
138993b77530SSamuel Ortiz
139037a2c13aSAlyssa RossSee our [VFIO](docs/vfio.md) documentation for more detail on how to directly
139137a2c13aSAlyssa Rossassign host devices to `cloud-hypervisor` guests.
139293b77530SSamuel Ortiz
139393b77530SSamuel Ortiz### Userspace IOAPIC
139493b77530SSamuel Ortiz
139593b77530SSamuel Ortiz`cloud-hypervisor` supports a so-called split IRQ chip implementation by
139693b77530SSamuel Ortizimplementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
139793b77530SSamuel OrtizBy moving part of the IRQ chip implementation from kernel space to user space,
139893b77530SSamuel Ortizthe IRQ chip emulation does not always run in a fully privileged mode.
139993b77530SSamuel Ortiz
140093b77530SSamuel Ortiz### Virtual persistent memory
140193b77530SSamuel Ortiz
140293b77530SSamuel OrtizThe `virtio-pmem` implementation emulates a virtual persistent memory device
140393b77530SSamuel Ortizthat `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
140493b77530SSamuel Ortizallows to bypass the guest page cache and improve the guest memory footprint.
140593b77530SSamuel Ortiz
140693b77530SSamuel Ortiz### Linux kernel bzImage
140793b77530SSamuel Ortiz
140893b77530SSamuel OrtizThe `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
140993b77530SSamuel Ortiz`bzImage` kernel images, which is usually the format that Linux distributions
141093b77530SSamuel Ortizuse to ship their kernels. For example, this allows for booting from the host
141193b77530SSamuel Ortizdistribution kernel image.
141293b77530SSamuel Ortiz
141393b77530SSamuel Ortiz### Console over virtio
141493b77530SSamuel Ortiz
141593b77530SSamuel Ortiz`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
141693b77530SSamuel Ortizusing this device as a guest console can potentially cut some early boot
141793b77530SSamuel Ortizmessages, it can reduce the guest boot time and provides a complete console
141893b77530SSamuel Ortizimplementation.
141993b77530SSamuel Ortiz
142093b77530SSamuel OrtizThe `virtio-console` device is enabled by default for the guest console.
142193b77530SSamuel OrtizSwitching back to the legacy serial port is done by selecting
142293b77530SSamuel Ortiz`--serial tty --console off` from the command line.
142393b77530SSamuel Ortiz
142493b77530SSamuel Ortiz### Unit testing
142593b77530SSamuel Ortiz
142693b77530SSamuel OrtizWe now run all unit tests from all our crates directly from our CI.
142793b77530SSamuel Ortiz
142893b77530SSamuel Ortiz### Integration tests parallelization
142993b77530SSamuel Ortiz
143093b77530SSamuel OrtizThe CI cycle run time has been significantly reduced by refactoring our
143193b77530SSamuel Ortizintegration tests; allowing them to all be run in parallel.
1432