xref: /cloud-hypervisor/release-notes.md (revision f67b3f79ea19c9a66e04074cbbf5d292f6529e43)
1- [v18.0](#v180)
2    - [Experimental User Device (`vfio-user`) support](#experimental-user-device-vfio-user-support)
3    - [Migration support for `vhost-user` devices](#migration-support-for-vhost-user-devices)
4    - [VHDX disk image support](#vhdx-disk-image-support)
5    - [Device pass through on MSHV hypervisor](#device-pass-through-on-mshv-hypervisor)
6    - [AArch64 for support `virtio-mem`](#aarch64-for-support-virtio-mem)
7    - [Live migration on MSHV hypervisor](#live-migration-on-mshv-hypervisor)
8    - [AArch64 CPU topology support](#aarch64-cpu-topology-support)
9    - [Power button support on AArch64](#power-button-support-on-aarch64)
10    - [Notable bug fixes](#notable-bug-fixes)
11    - [Contributors](#contributors)
12- [v17.0](#v170)
13    - [ARM64 NUMA support using ACPI](#arm64-numa-support-using-acpi)
14    - [`Seccomp` support for MSHV backend](#seccomp-support-for-mshv-backend)
15    - [Hotplug of `macvtap` devices](#hotplug-of-macvtap-devices)
16    - [Improved SGX support](#improved-sgx-support)
17    - [Inflight tracking for `vhost-user` devices](#inflight-tracking-for-vhost-user-devices)
18    - [Notable bug fixes](#notable-bug-fixes-1)
19    - [Contributors](#contributors-1)
20- [v16.0](#v160)
21    - [Improved live migration support](#improved-live-migration-support)
22    - [Improved `vhost-user` support](#improved-vhost-user-support)
23    - [ARM64 ACPI and UEFI support](#arm64-acpi-and-uefi-support)
24    - [Notable bug fixes](#notable-bug-fixes-2)
25    - [Removed functionality](#removed-functionality)
26    - [Contributors](#contributors-2)
27- [v15.0](#v150)
28    - [Version numbering and stability guarantees](#version-numbering-and-stability-guarantees)
29    - [Network device rate limiting](#network-device-rate-limiting)
30    - [Support for runtime control of `virtio-net` guest offload](#support-for-runtime-control-of-virtio-net-guest-offload)
31    - [`--api-socket` supports file descriptor parameter](#--api-socket-supports-file-descriptor-parameter)
32    - [Bug fixes](#bug-fixes)
33    - [Deprecations](#deprecations)
34    - [Contributors](#contributors-3)
35- [v0.14.1](#v0141)
36- [v0.14.0](#v0140)
37    - [Structured event monitoring](#structured-event-monitoring)
38    - [MSHV improvements](#mshv-improvements)
39    - [Improved aarch64 platform](#improved-aarch64-platform)
40    - [Updated hotplug documentation](#updated-hotplug-documentation)
41    - [PTY control for serial and `virtio-console`](#pty-control-for-serial-and-virtio-console)
42    - [Block device rate limiting](#block-device-rate-limiting)
43    - [Deprecations](#deprecations-1)
44    - [Contributors](#contributors-4)
45- [v0.13.0](#v0130)
46    - [Wider VFIO device support](#wider-vfio-device-support)
47    - [Improved huge page support](#improved-huge-page-support)
48    - [MACvTAP support](#macvtap-support)
49    - [VHD disk image support](#vhd-disk-image-support)
50    - [Improved Virtio device threading](#improved-virtio-device-threading)
51    - [Clean shutdown support via synthetic power button](#clean-shutdown-support-via-synthetic-power-button)
52    - [Contributors](#contributors-5)
53- [v0.12.0](#v0120)
54    - [ARM64 enhancements](#arm64-enhancements)
55    - [Removal of `vhost-user-net` and `vhost-user-block` self spawning](#removal-of-vhost-user-net-and-vhost-user-block-self-spawning)
56    - [Migration of `vhost-user-fs` backend](#migration-of-vhost-user-fs-backend)
57    - [Enhanced "info" API](#enhanced-info-api)
58    - [Contributors](#contributors-6)
59- [v0.11.0](#v0110)
60    - [`io_uring` support by default for `virtio-block`](#io_uring-support-by-default-for-virtio-block)
61    - [Windows Guest Support](#windows-guest-support)
62    - [`vhost-user` "Self Spawning" Deprecation](#vhost-user-self-spawning-deprecation)
63    - [`virtio-mmmio` Removal](#virtio-mmmio-removal)
64    - [Snapshot/Restore support for ARM64](#snapshotrestore-support-for-arm64)
65    - [Improved Linux Boot Time](#improved-linux-boot-time)
66    - [`SIGTERM/SIGINT` Interrupt Signal Handling](#sigtermsigint-interrupt-signal-handling)
67    - [Default Log Level Changed](#default-log-level-changed)
68    - [New `--balloon` Parameter Added](#new---balloon-parameter-added)
69    - [Experimental `virtio-watchdog` Support](#experimental-virtio-watchdog-support)
70    - [Notable Bug Fixes](#notable-bug-fixes-3)
71    - [Contributors](#contributors-7)
72- [v0.10.0](#v0100)
73    - [`virtio-block` Support for Multiple Descriptors](#virtio-block-support-for-multiple-descriptors)
74    - [Memory Zones](#memory-zones)
75    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements)
76    - [Preliminary KVM HyperV Emulation Control](#preliminary-kvm-hyperv-emulation-control)
77    - [Notable Bug Fixes](#notable-bug-fixes-4)
78    - [Contributors](#contributors-8)
79- [v0.9.0](#v090)
80    - [`io_uring` Based Block Device Support](#io_uring-based-block-device-support)
81    - [Block and Network Device Statistics](#block-and-network-device-statistics)
82    - [HTTP API Responses](#http-api-responses)
83    - [CPU Topology](#cpu-topology)
84    - [Release Build Optimization](#release-build-optimization)
85    - [Hypervisor Abstraction](#hypervisor-abstraction)
86    - [Snapshot/Restore Improvements](#snapshotrestore-improvements)
87    - [Virtio Memory Ballooning Support](#virtio-memory-ballooning-support)
88    - [Enhancements to ARM64 Support](#enhancements-to-arm64-support)
89    - [Intel SGX Support](#intel-sgx-support)
90    - [`Seccomp` Sandbox Improvements](#seccomp-sandbox-improvements-1)
91    - [Notable Bug Fixes](#notable-bug-fixes-5)
92    - [Contributors](#contributors-9)
93- [v0.8.0](#v080)
94    - [Experimental Snapshot and Restore Support](#experimental-snapshot-and-restore-support)
95    - [Experimental ARM64 Support](#experimental-arm64-support)
96    - [Support for Using 5-level Paging in Guests](#support-for-using-5-level-paging-in-guests)
97    - [Virtio Device Interrupt Suppression for Network Devices](#virtio-device-interrupt-suppression-for-network-devices)
98    - [`vhost_user_fs` Improvements](#vhost_user_fs-improvements)
99    - [Notable Bug Fixes](#notable-bug-fixes-6)
100    - [Command Line and API Changes](#command-line-and-api-changes)
101    - [Contributors](#contributors-10)
102- [v0.7.0](#v070)
103    - [Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug](#block-network-persistent-memory-pmem-virtiofs-and-vsock-hotplug)
104    - [Alternative `libc` Support](#alternative-libc-support)
105    - [Multithreaded Multi Queued `vhost-user` Backends](#multithreaded-multi-queued-vhost-user-backends)
106    - [Initial RamFS Support](#initial-ramfs-support)
107    - [Alternative Memory Hotplug: `virtio-mem`](#alternative-memory-hotplug-virtio-mem)
108    - [`Seccomp` Sandboxing](#seccomp-sandboxing)
109    - [Updated Distribution Support](#updated-distribution-support)
110    - [Command Line and API Changes](#command-line-and-api-changes-1)
111    - [Contributors](#contributors-11)
112- [v0.6.0](#v060)
113    - [Directly Assigned Devices Hotplug](#directly-assigned-devices-hotplug)
114    - [Shared Filesystem Improvements](#shared-filesystem-improvements)
115    - [Block and Networking IO Self Offloading](#block-and-networking-io-self-offloading)
116    - [Command Line Interface](#command-line-interface)
117    - [PVH Boot](#pvh-boot)
118    - [Contributors](#contributors-12)
119- [v0.5.1](#v051)
120- [v0.5.0](#v050)
121    - [Virtual Machine Dynamic Resizing](#virtual-machine-dynamic-resizing)
122    - [Multi-Queue, Multi-Threaded Paravirtualization](#multi-queue-multi-threaded-paravirtualization)
123    - [New Interrupt Management Framework](#new-interrupt-management-framework)
124    - [Development Tools](#development-tools)
125    - [Kata Containers Integration](#kata-containers-integration)
126    - [Contributors](#contributors-13)
127- [v0.4.0](#v040)
128    - [Dynamic virtual CPUs addition](#dynamic-virtual-cpus-addition)
129    - [Programmatic firmware tables generation](#programmatic-firmware-tables-generation)
130    - [Filesystem and block devices vhost-user backends](#filesystem-and-block-devices-vhost-user-backends)
131    - [Guest pause and resume](#guest-pause-and-resume)
132    - [Userspace IOAPIC by default](#userspace-ioapic-by-default)
133    - [PCI BAR reprogramming](#pci-bar-reprogramming)
134    - [New `cloud-hypervisor` organization](#new-cloud-hypervisor-organization)
135    - [Contributors](#contributors-14)
136- [v0.3.0](#v030)
137    - [Block device offloading](#block-device-offloading)
138    - [Network device backend](#network-device-backend)
139    - [Virtual sockets](#virtual-sockets)
140    - [HTTP based API](#http-based-api)
141    - [Memory mapped virtio transport](#memory-mapped-virtio-transport)
142    - [Paravirtualized IOMMU](#paravirtualized-iommu)
143    - [Ubuntu 19.10](#ubuntu-1910)
144    - [Large memory guests](#large-memory-guests)
145- [v0.2.0](#v020)
146    - [Network device offloading](#network-device-offloading)
147    - [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
148    - [Debug I/O port](#debug-io-port)
149    - [Improved direct device assignment](#improved-direct-device-assignment)
150    - [Improved shared filesystem](#improved-shared-filesystem)
151    - [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
152- [v0.1.0](#v010)
153    - [Shared filesystem](#shared-filesystem)
154    - [Initial direct device assignment support](#initial-direct-device-assignment-support)
155    - [Userspace IOAPIC](#userspace-ioapic)
156    - [Virtual persistent memory](#virtual-persistent-memory)
157    - [Linux kernel bzImage](#linux-kernel-bzimage)
158    - [Console over virtio](#console-over-virtio)
159    - [Unit testing](#unit-testing)
160    - [Integration tests parallelization](#integration-tests-parallelization)
161
162# v18.0
163
164This release has been tracked through the [v18.0
165project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/21).
166
167### Experimental User Device (`vfio-user`) support
168
169Experimental support for running PCI devices in userspace via `vfio-user`
170has been included. This allows the use of the SPDK NVMe `vfio-user` controller
171with Cloud Hypervisor. This is enabled by `--user-device` on the command line.
172
173### Migration support for `vhost-user` devices
174
175Devices exposed into the VM via `vhost-user` can now be migrated using the live
176migration support. This requires support from the backend however the commonly
177used DPDK `vhost-user` backend does support this.
178
179### VHDX disk image support
180
181Images using the VHDX disk image format can now be used with Cloud Hypervisor.
182
183### Device pass through on MSHV hypervisor
184
185When running on the MSHV hypervisor it is possible to pass through devices from
186the host through to the guest (e.g with `--device`)
187
188### AArch64 for support `virtio-mem`
189
190The reference Linux kernel we recommend for using with Cloud Hypervisor now supports `virtio-mem` on AArch64.
191
192### Live migration on MSHV hypervisor
193
194Live migration is now supported when running on the MSHV hypervisor including
195efficient tracking of dirty pages.
196
197### AArch64 CPU topology support
198
199The CPU topology (as configured through `--cpu topology=`) can now be
200configured on AArch64 platforms and is conveyed through either ACPI or device
201tree.
202
203### Power button support on AArch64
204
205Use of the ACPI power button (e.g `ch-remote --api-socket=<API socket> power-button`)
206is now supported when running on AArch64.
207
208### Notable bug fixes
209
210* Using two PTY outputs e.g. `--serial pty --console pty` now works correctly (#3012)
211* TTY input is now always sent to the correct destination (#3005)
212* The boot is no longer blocked when using a unattached PTY on the serial console (#3004)
213* Live migration is now supported on AArch64 (#3049)
214* Ensure signal handlers are run on the correct thread (#3069)
215
216### Contributors
217
218Many thanks to everyone who has contributed to our release:
219
220* Alyssa Ross <hi@alyssa.is>
221* Anatol Belski <anbelski@linux.microsoft.com>
222* Arafatms <arafatms@outlook.com>
223* Bo Chen <chen.bo@intel.com>
224* Fazla Mehrab <akm.fazla.mehrab@vt.edu>
225* Henry Wang <Henry.Wang@arm.com>
226* Jianyong Wu <jianyong.wu@arm.com>
227* Jiaqi Gao <jiaqi.gao@intel.com>
228* Markus Theil <markus.theil@tu-ilmenau.de>
229* Muminul Islam <muislam@microsoft.com>
230* Rob Bradford <robert.bradford@intel.com>
231* Sebastien Boeuf <sebastien.boeuf@intel.com>
232* Wei Liu <liuwe@microsoft.com>
233* Yu Li <liyu.yukiteru@bytedance.com>
234
235# v17.0
236
237This release has been tracked through the [v17.0
238project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/20).
239
240### ARM64 NUMA support using ACPI
241
242The support for ACPI on ARM64 has been enhanced to include support for
243specifying a NUMA configuration using the existing control options.
244
245### `Seccomp` support for MSHV backend
246
247The `seccomp` rules have now been extended to support running against the MSHV
248hypervisor backend.
249
250### Hotplug of `macvtap` devices
251
252Hotplug of `macvtap` devices is now supported with the file descriptor for the
253network device if opened by the user and passed to the VMM. The `ch-remote`
254tool supports this functionality when adding a network device.
255
256### Improved SGX support
257
258The SGX support has been updated to match the latest Linux kernel support and
259now supports SGX provisioning and associating EPC sections to NUMA nodes.
260
261### Inflight tracking for `vhost-user` devices
262
263Support for handling inflight tracking of I/O requests has been added to the
264`vhost-user` devices allowing recovery after device reconnection.
265
266### Notable bug fixes
267
268* VFIO PCI BAR calculation code now correctly handles I/O BARs (#2821).
269* The VMM side of `vhost-user` devices no longer advertise the
270  `VIRTIO_F_RING_PACKED` feature as they are not yet supported in the VMM
271(#2833).
272* On ARM64 VMs can be created with more than 16 vCPUs (#2763).
273
274### Contributors
275
276Many thanks to everyone who has contributed to our release:
277
278* Anatol Belski <anbelski@linux.microsoft.com>
279* Arafatms <arafatms@outlook.com>
280* Bo Chen <chen.bo@intel.com>
281* Fei Li <lifei.shirley@bytedance.com>
282* Henry Wang <Henry.Wang@arm.com>
283* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
284* Jianyong Wu <jianyong.wu@arm.com>
285* Li Hangjing <lihangjing@bytedance.com>
286* Michael Zhao <michael.zhao@arm.com>
287* Muminul Islam <muislam@microsoft.com>
288* Rob Bradford <robert.bradford@intel.com>
289* Sebastien Boeuf <sebastien.boeuf@intel.com>
290* Wei Liu <liuwe@microsoft.com>
291* Yukiteru <wfly1998@sina.com>
292
293# v16.0
294
295This release has been tracked through the [v16.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/19).
296
297### Improved live migration support
298
299The 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.
300
301### Improved `vhost-user` support
302
303When 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.
304
305### ARM64 ACPI and UEFI support
306
307Cloud 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.
308
309### Notable bug fixes
310
311* Activating fewer `virtio-net` queues than advertised is now supported. This appeared when using OVMF with an MQ enabled device (#2578).
312* 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).
313* The KVM clock is now correctly handled during live migration / snapshot & restore.
314
315### Removed functionality
316
317The following formerly deprecated features have been removed:
318
319* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
320  binaries has been deprecated. When using direct boot users should configure
321  their kernel with `CONFIG_PVH=y`.
322
323### Contributors
324
325Many thanks to everyone who has contributed to our release including some new faces.
326
327* Anatol Belski <anbelski@linux.microsoft.com>
328* Bo Chen <chen.bo@intel.com>
329* Dayu Liu <liu.dayu@zte.com.cn>
330* Henry Wang <Henry.Wang@arm.com>
331* Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
332* Jianyong Wu <jianyong.wu@arm.com>
333* Michael Zhao <michael.zhao@arm.com>
334* Mikko Ylinen <mikko.ylinen@intel.com>
335* Muminul Islam <muislam@microsoft.com>
336* Ren Lei <ren.lei4@zte.com.cn>
337* Rob Bradford <robert.bradford@intel.com>
338* Sebastien Boeuf <sebastien.boeuf@intel.com>
339* Wei Liu <liuwe@microsoft.com>
340* Yi Wang <wang.yi59@zte.com.cn>
341
342# v15.0
343
344This release has been tracked through the [v15.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/18).
345
346Highlights for `cloud-hypervisor` version v15.0 include:
347
348### Version numbering and stability guarantees
349
350This release is the first in a new version numbering scheme to represent that
351we believe Cloud Hypervisor is maturing and entering a period of stability.
352With this new release we are beginning our new stability guarantees:
353
354* The API (including command line options) will not be removed or changed in a
355  breaking way without a minimum of 2 releases notice. Where possible warnings
356  will be given about the use of deprecated functionality and the deprecations
357  will be documented in the release notes.
358* Point releases will be made between individual releases where there are
359  substantial bug fixes or security issues that need to be fixed.
360
361Currently the following items are **not** guaranteed across updates:
362
363* Snapshot/restore is not supported across different versions
364* Live migration is not supported across different versions
365* The following features are considered experimental and may change
366  substantially between releases: TDX, SGX.
367
368### Network device rate limiting
369
370Building on our existing support for rate limiting block activity the network
371device also now supports rate limiting. Full details of the controls are in the
372[IO throttling documentation.](docs/io_throttling.md)
373
374### Support for runtime control of `virtio-net` guest offload
375
376The guest is now able to change the offload settings for the `virtio-net`
377device. As well as providing a useful control this mitigates an issue in the
378Linux kernel where the guest will attempt to reprogram the offload settings
379even if they are not advertised as configurable (#2528).
380
381### `--api-socket` supports file descriptor parameter
382
383The `--api-socket` can now take an `fd=` parameter to specify an existing file
384descriptor to use. This is particularly beneficial for frameworks that need to
385programmatically control Cloud Hypervisor.
386
387### Bug fixes
388
389* A workaround has been put in place to mitigate a Linux kernel issues that
390  results in the CPU thread spinning at 100% when using `virtio-pmem` (#2277).
391* PCI BARs are now correctly aligned removing the need for the guest to
392  reprogram them (#1797,#1798)
393* Handle TAP interface not being writable within virtio-net (due to the buffer
394  exhaustion on the host) (#2517)
395* The recommended Linux kernel is now v5.12.0 as it contains a fix that
396  prevents snapshot & restore working (#2535)
397
398### Deprecations
399
400Deprecated features will be removed in a subsequent release and users should plan to use alternatives
401
402* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
403  binaries has been deprecated. When using direct boot users should configure
404  their kernel with `CONFIG_PVH=y`. Will be removed in v16.0.
405
406### Contributors
407
408Many thanks to everyone who has contributed to our release including some new faces.
409
410* Alyssa Ross <hi@alyssa.is>
411* Anatol Belski <anbelski@linux.microsoft.com>
412* Bo Chen <chen.bo@intel.com>
413* Gaelan Steele <gbs@canishe.com>
414* Jianyong Wu <jianyong.wu@arm.com>
415* Michael Zhao <michael.zhao@arm.com>
416* Muminul Islam <muislam@microsoft.com>
417* Rob Bradford <robert.bradford@intel.com>
418* Sebastien Boeuf <sebastien.boeuf@intel.com>
419* Wei Liu <liuwe@microsoft.com>
420* William Douglas <william.douglas@intel.com>
421
422# v0.14.1
423
424Bug fix release branched off the v0.14.0 release. The following bugs were fixed
425in this release:
426
427* CPU hotplug on Windows failed due to misreported CPU state information and
428  the lack of HyperV CPUID bit enabled (#2437, #2449, #2436)
429* A seccomp rule was missing that was triggered on CPU unplug (#2455)
430* A bounds check in VIRTIO queue validation was erroneously generating
431  DescriptorChainTooShort errors in certain circumstances (#2450, #2424)
432
433# v0.14.0
434
435This release has been tracked through the [0.14.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/17).
436
437Highlights for `cloud-hypervisor` version 0.14.0 include:
438
439### Structured event monitoring
440
441A new option was added to the VMM `--event-monitor` which reports structured
442events (JSON) over a file or file descriptor at key events in the lifecycle of
443the VM. The list of events is limited at the moment but will be further
444extended over subsequent releases. The events exposed form part of the Cloud
445Hypervisor API surface.
446
447### MSHV improvements
448
449Basic support has been added for running Windows guests atop the MSHV
450hypervisor as an alternative to KVM and further improvements have been made to
451the MSHV support.
452
453### Improved aarch64 platform
454
455The aarch64 platform has been enhanced with more devices exposed to the running
456VM including an enhanced serial UART.
457
458### Updated hotplug documentation
459
460The documentation for the hotplug support has been updated to reflect the use
461of the `ch-remote` tool and to include details of `virtio-mem` based hotplug as
462well as documenting hotplug of paravirtualised and VFIO devices.
463
464### PTY control for serial and `virtio-console`
465
466The `--serial` and `--console` parameters can now direct the console to a PTY
467allowing programmatic control of the console from another process through the
468PTY subsystem.
469
470### Block device rate limiting
471
472The block device performance can now be constrained as part of the VM
473configuration allowing rate limiting. Full details of the controls are in the
474[IO throttling documentation.](docs/io_throttling.md)
475
476
477### Deprecations
478
479Deprecated features will be removed in a subsequent release and users should plan to use alternatives
480
481* Support for booting with the "LinuxBoot" protocol for ELF and `bzImage`
482  binaries has been deprecated. When using direct boot users should configure
483  their kernel with `CONFIG_PVH=y`.
484
485
486### Contributors
487
488Many thanks to everyone who has contributed to our 0.14.0 release including
489some new faces.
490
491Bo Chen <chen.bo@intel.com>
492Henry Wang <Henry.Wang@arm.com>
493Iggy Jackson <iggy@theiggy.com>
494Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
495Michael Zhao <michael.zhao@arm.com>
496Muminul Islam <muislam@microsoft.com>
497Penny Zheng <Penny.Zheng@arm.com>
498Rob Bradford <robert.bradford@intel.com>
499Sebastien Boeuf <sebastien.boeuf@intel.com>
500Vineeth Pillai <viremana@linux.microsoft.com>
501Wei Liu <liuwe@microsoft.com>
502William Douglas <william.r.douglas@gmail.com>
503Zide Chen <zide.chen@intel.com>
504
505# v0.13.0
506
507This release has been tracked through the [0.13.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/16).
508
509Highlights for `cloud-hypervisor` version 0.13.0 include:
510
511### Wider VFIO device support
512
513It is now possible to use Cloud Hypervisor's VFIO support to passthrough PCI
514devices that do not support MSI or MSI-X and instead rely on INTx interrupts.
515Most notably this widens the support to most NVIDIA cards with the proprietary
516drivers.
517
518### Improved huge page support
519
520Through the addition of `hugepage_size` on `--memory` it is now possible to
521specify the desired size of the huge pages used when allocating the guest
522memory. The user is required to ensure they have sufficient pages of the
523desired size in their pool.
524
525### MACvTAP support
526
527It is now possible to provide file descriptors using the `fd` parameter to
528`--net` which point at TAP devices that have already been opened by the user.
529This aids integration with `libvirt` but also permits the use of MACvTAP
530support. This is documented in dedicated [macvtap documentation](docs/macvtap-bridge.md).
531
532### VHD disk image support
533
534It is now possible to use VHD (fixed) disk images as well as QCOWv2 and raw
535disk image with Cloud Hypervisor.
536
537### Improved Virtio device threading
538
539Device threads are now derived from the main VMM thread which allows more
540restrictive seccomp filters to be applied to them. The threads also have a
541predictable name derived from the device id.
542
543### Clean shutdown support via synthetic power button
544
545It is now possible to request that the guest VM shut itself down by triggering
546a synthetic ACPI power button press from the VMM. If the guest is listening for
547such an event (e.g. using systemd) then it will process the event and cleanly
548shut down. This functionality is exposed through the HTTP API and can be
549triggered via `ch-remote --api-socket=<API socket> power-button`.
550
551### Contributors
552
553Many thanks to everyone who has contributed to our 0.13.0 release including
554some new faces.
555
556* Bo Chen <chen.bo@intel.com>
557* Mikko Ylinen <mikko.ylinen@intel.com>
558* Muminul Islam <muislam@microsoft.com>
559* Rob Bradford <robert.bradford@intel.com>
560* Samuel Ortiz <sameo@linux.intel.com>
561* Sebastien Boeuf <sebastien.boeuf@intel.com>
562* Vineeth Pillai <viremana@linux.microsoft.com>
563* Wei Liu <liuwe@microsoft.com>
564* William Douglas <william.r.douglas@gmail.com>
565* Xie Yongji <xieyongji@bytedance.com>
566
567# v0.12.0
568
569This release has been tracked through the [0.12.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/15).
570
571Highlights for `cloud-hypervisor` version 0.12.0 include:
572
573### ARM64 enhancements
574
575The use of `--watchdog` is now fully supported as is the ability to reboot the
576VM from within the guest when running Cloud Hypervisor on an ARM64 system.
577
578### Removal of `vhost-user-net` and `vhost-user-block` self spawning
579
580In order to use `vhost-user-net` or `vhost-user-block` backends the user is now
581responsible for starting the backend and providing the socket for the VMM to
582use. This functionality was deprecated in the last release and how now been
583removed.
584
585### Migration of `vhost-user-fs` backend
586
587The `vhost-user-fs` backend is no longer included in Cloud Hypervisor and it is
588instead hosted in [it's own
589repository](https://gitlab.com/virtio-fs/virtiofsd-rs)
590
591### Enhanced "info" API
592
593The `vm.info` HTTP API endpoint has been extended to include the details of the
594devices used by the VM including any VFIO devices used.
595
596### Contributors
597
598Many thanks to everyone who has contributed to our 0.12.0 release:
599
600* Anatol Belski <anbelski@linux.microsoft.com>
601* Julio Montes <julio.montes@intel.com>
602* Michael Zhao <michael.zhao@arm.com>
603* Muminul Islam <muislam@microsoft.com>
604* Rob Bradford <robert.bradford@intel.com>
605* Samuel Ortiz <sameo@linux.intel.com>
606* Wei Liu <liuwe@microsoft.com>
607
608# v0.11.0
609
610This release has been tracked through the [0.11.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/14).
611
612Highlights for `cloud-hypervisor` version 0.11.0 include:
613
614### `io_uring` support by default for `virtio-block`
615
616Provided that the host OS supports it (Linux kernel 5.8+) then `io_uring` will
617be used for a significantly higher performance block device.
618
619### Windows Guest Support
620
621This is the first release where we officially support Windows running as a
622guest. Full details of how to setup the image and run Cloud Hypervisor with a
623Windows guest can be found in the dedicated [Windows
624documentation](docs/windows.md).
625
626### `vhost-user` "Self Spawning" Deprecation
627
628Automatically spawning a `vhost-user-net` or `vhost-user-block` backend is now
629deprecated. Users of this functionality will receive a warning and should make
630adjustments. The functionality will be removed in the next release.
631
632### `virtio-mmmio` Removal
633
634Support for using the `virtio-mmio` transport, rather than using PCI, has been
635removed. This has been to simplify the code and significantly
636reduce the testing burden of the project.
637
638### Snapshot/Restore support for ARM64
639
640When running on the ARM64 architecture snapshot and restore has now been
641implemented.
642
643### Improved Linux Boot Time
644
645The time to boot the Linux kernel has been significantly improved by the
646identifying some areas of delays around PCI bus probing, IOAPIC programming and
647MPTABLE issues. Full details can be seen in #1728.
648
649### `SIGTERM/SIGINT` Interrupt Signal Handling
650
651When the VMM process receives the `SIGTERM` or `SIGINT` signals then it will
652trigger the VMM process to cleanly deallocate resources before exiting. The
653guest VM will not be cleanly shutdown but the VMM process will clean up its
654resources.
655
656### Default Log Level Changed
657
658The default logging level was changed to include warnings which should make it
659easier to see potential issues. New [logging
660documentation](docs/logging) was also added.
661
662### New `--balloon` Parameter Added
663
664Control of the setup of `virtio-balloon` has been moved from `--memory` to its
665own dedicated parameter. This makes it easier to add more balloon specific
666controls without overloading `--memory`.
667
668### Experimental `virtio-watchdog` Support
669
670Support for using a new `virtio-watchdog` has been added which can be used to
671have the VMM reboot the guest if the guest userspace fails to ping the
672watchdog. This is enabled with `--watchdog` and requires kernel support.
673
674### Notable Bug Fixes
675
676* MTRR bit was missing from CPUID advertised to guest
677* "Return" key could not be used under `CMD.EXE` under Windows SAC (#1170)
678* CPU identification string is now exposed to the guest
679* `virtio-pmem` with`discard_writes=on` no longer marks the guest memory as
680  read only so avoids excessive VM exits (#1795)
681* PCI device hotplug after an unplug was fixed (#1802)
682* When using the ACPI method to resize the guest memory the full reserved size
683  can be used (#1803)
684* Snapshot and restore followed by a second snapshot and restore now works
685  correctly
686* Snapshot and restore of VMs with more than 2GiB in one region now work
687  correctly
688
689### Contributors
690
691Many thanks to everyone who has contributed to our 0.11.0 release including some new faces.
692
693* Anatol Belski <anbelski@linux.microsoft.com>
694* Bo Chen <chen.bo@intel.com>
695* Daniel Verkamp <dverkamp@chromium.org>
696* Henry Wang <Henry.Wang@arm.com>
697* Hui Zhu <teawater@antfin.com>
698* Jiangbo Wu <jiangbo.wu@intel.com>
699* Josh Soref <jsoref@users.noreply.github.com>
700* Julio Montes <julio.montes@intel.com>
701* Michael Zhao <michael.zhao@arm.com>
702* Muminul Islam <muislam@microsoft.com>
703* pierwill <19642016+pierwill@users.noreply.github.com>
704* Praveen Paladugu <prapal@microsoft.com>
705* Rob Bradford <robert.bradford@intel.com>
706* Sebastien Boeuf <sebastien.boeuf@intel.com>
707* Wei Liu <liuwe@microsoft.com>
708
709
710# v0.10.0
711
712This release has been tracked through the [0.10.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/13).
713
714Highlights for `cloud-hypervisor` version 0.10.0 include:
715
716### `virtio-block` Support for Multiple Descriptors
717
718Some `virtio-block` device drivers may generate requests with multiple descriptors and support has been added for those drivers.
719
720### Memory Zones
721
722Support 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).
723
724### `Seccomp` Sandbox Improvements
725
726All 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`.
727
728### Preliminary KVM HyperV Emulation Control
729
730A 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.
731
732### Notable Bug Fixes
733
734- When using `ch-remote` to resize the VM parameter now accepts the standard sizes suffices (#1596)
735- `cloud-hypervisor` no longer panics when started with `--memory hotplug_method=virtio-mem` and no `hotplug_size` (#1564)
736- After a reboot memory can remove when using `--memory hotplug_method=virtio-mem` (#1593)
737- `--version` shows the version for released binaries (#1669)
738- Errors generated by worker threads for `virtio` devices are now printed out (#1551)
739
740### Contributors
741
742Many thanks to everyone who has contributed to our 0.10.0 release including some new faces.
743
744* Alyssa Ross <hi@alyssa.is>
745* Amey Narkhede <ameynarkhede02@gmail.com>
746* Anatol Belski <ab@php.net>
747* Bo Chen <chen.bo@intel.com>
748* Hui Zhu <teawater@antfin.com>
749* Michael Zhao <michael.zhao@arm.com>
750* Muminul Islam <muislam@microsoft.com>
751* Rob Bradford <robert.bradford@intel.com>
752* Samuel Ortiz <sameo@linux.intel.com>
753* Sebastien Boeuf <sebastien.boeuf@intel.com>
754* Wei Liu <liuwe@microsoft.com>
755
756# v0.9.0
757
758This release has been tracked through the [0.9.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/12).
759
760Highlights for `cloud-hypervisor` version 0.9.0 include:
761
762### `io_uring` Based Block Device Support
763
764If 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.
765
766### Block and Network Device Statistics
767
768Statistics 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.
769
770### HTTP API Responses
771
772The HTTP API for adding devices now responds with the name that was assigned to the device as well the PCI BDF.
773
774### CPU Topology
775
776A `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.
777
778### Release Build Optimization
779
780Our release build is now built with LTO (*Link Time Optimization*) which results in a ~20% reduction in the binary size.
781
782### Hypervisor Abstraction
783
784A new abstraction has been introduced, in the form of a `hypervisor` crate so as to enable the support of additional hypervisors beyond `KVM`.
785
786### Snapshot/Restore Improvements
787
788Multiple 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.
789
790### Virtio Memory Ballooning Support
791
792A `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.
793
794### Enhancements to ARM64 Support
795
796The 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.
797
798### Intel SGX Support
799
800The guest can now use Intel SGX if the host supports it. Details can be found in the dedicated [SGX documentation](docs/intel_sgx.md).
801
802### `Seccomp` Sandbox Improvements
803
804The 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.
805
806### Notable Bug Fixes
807
808* Our `virtio-vsock` implementation has been resynced with the implementation from Firecracker and includes multiple bug fixes.
809* CPU hotplug has been fixed so that it is now possible to add, remove, and re-add vCPUs (#1338)
810* 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).
811* `virtio-mmio` based devices are now more widely tested (#275).
812* Multiple issues have been fixed with virtio device configuration (#1217)
813* Console input was wrongly consumed by both `virtio-console` and the serial. (#1521)
814
815### Contributors
816
817Many thanks to everyone who has contributed to our 0.9.0 release including some new faces.
818
819* Anatol Belski <ab@php.net>
820* Bo Chen <chen.bo@intel.com>
821* Dr. David Alan Gilbert <dgilbert@redhat.com>
822* Henry Wang <Henry.Wang@arm.com>
823* Howard Zhang <howard.zhang@arm.com>
824* Hui Zhu <teawater@antfin.com>
825* Jianyong Wu <jianyong.wu@arm.com>
826* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
827* LiYa'nan <oliverliyn@gmail.com>
828* Michael Zhao <michael.zhao@arm.com>
829* Muminul Islam <muislam@microsoft.com>
830* Praveen Paladugu <prapal@microsoft.com>
831* Ricardo Koller <ricarkol@gmail.com>
832* Rob Bradford <robert.bradford@intel.com>
833* Samuel Ortiz <sameo@linux.intel.com>
834* Sebastien Boeuf <sebastien.boeuf@intel.com>
835* Stefano Garzarella <sgarzare@redhat.com>
836* Wei Liu <liuwe@microsoft.com>
837
838
839# v0.8.0
840
841This release has been tracked through the [0.8.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/10).
842
843Highlights for `cloud-hypervisor` version 0.8.0 include:
844
845### Experimental Snapshot and Restore Support
846
847This release includes the first version of the snapshot and restore feature.
848This allows a VM to be paused and then subsequently snapshotted. At a later
849point that snapshot may be restored into a new running VM identical to the
850original VM at the point it was paused.
851
852This feature can be used for offline migration from one VM host to another, to
853allow the upgrading or rebooting of the host machine transparently to the guest
854or for templating the VM. This is an experimental feature and cannot be used on
855a VM using passthrough (VFIO) devices. Issues with SMP have also been observed
856(#1176).
857
858### Experimental ARM64 Support
859
860Included in this release is experimental support for running on ARM64.
861Currently only `virtio-mmio` devices and a serial port are supported. Full
862details can be found in the [ARM64 documentation](docs/arm64.md).
863
864### Support for Using 5-level Paging in Guests
865
866If the host supports it the guest is now enabled for 5-level paging (aka LA57).
867This works when booting the Linux kernel with a vmlinux, bzImage or firmware
868based boot. However booting an ELF kernel built with `CONFIG_PVH=y` does not
869work due to current limitations in the PVH boot process.
870
871### Virtio Device Interrupt Suppression for Network Devices
872
873With `virtio-net` and `vhost-user-net` devices the guest can suppress
874interrupts from the VMM by using the `VIRTIO_RING_F_EVENT_IDX` feature. This
875can lead to an improvement in performance by reducing the number of interrupts
876the guest must service.
877
878### `vhost_user_fs` Improvements
879
880The implementation in Cloud Hypervisor of the VirtioFS server now supports sandboxing itself with `seccomp`.
881
882
883### Notable Bug Fixes
884
885* VMs that have not yet been booted can now be deleted (#1110).
886* By creating the `tap` device ahead of creating the VM it is not required to
887  run the `cloud-hypervisor` binary with `CAP_NET_ADMIN` (#1273).
888* Block I/O via `virtio-block` or `vhost-user-block` now correctly adheres to
889  the specification and synchronizes to the underlying filesystem as required
890  based on guest feature negotiation. This avoids potential data loss (#399,
891  #1216).
892* When booting with a large number of vCPUs then the ACPI table would be
893  overwritten by the SMP `MPTABLE`. When compiled with the `acpi` feature the
894  `MPTABLE` will no longer be generated (#1132).
895* Shutting down VMs that have been paused is now supported (#816).
896* Created socket files are deleted on shutdown (#1083).
897* Trying to use passthrough devices (VFIO) will be rejected on `mmio` builds
898  (#751).
899
900### Command Line and API Changes
901
902This is non exhaustive list of HTTP API and command line changes:
903
904* All user visible socket parameters are now consistently called `socket`
905  rather than `sock` in some cases.
906* The `ch-remote` tool now shows any error message generated by the VMM
907* The `wce` parameter has been removed from `--disk` as the feature is always
908  offered for negotiation.
909* `--net` has gained a `host_mac` option that allows the setting of the MAC
910  address for the `tap` device on the host.
911
912### Contributors
913
914Many thanks to everyone who has contributed to our 0.8.0 release including some new faces.
915
916* Anatol Belski <ab@php.net>
917* Arron Wang <arron.wang@intel.com>
918* Bo Chen <chen.bo@intel.com>
919* Dr. David Alan Gilbert <dgilbert@redhat.com>
920* Henry Wang <Henry.Wang@arm.com>
921* Hui Zhu <teawater@antfin.com>
922* LiYa'nan <oliverliyn@gmail.com>
923* Michael Zhao <michael.zhao@arm.com>
924* Rob Bradford <robert.bradford@intel.com>
925* Samuel Ortiz <sameo@linux.intel.com>
926* Sebastien Boeuf <sebastien.boeuf@intel.com>
927* Sergio Lopez <slp@redhat.com>
928
929# v0.7.0
930
931This release has been tracked through the [0.7.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
932
933Highlights for `cloud-hypervisor` version 0.7.0 include:
934
935### Block, Network, Persistent Memory (PMEM), VirtioFS and Vsock hotplug
936
937Further to our effort to support modifying a running guest we now support
938hotplug and unplug of the following virtio backed devices: block, network,
939pmem, virtio-fs and vsock. This functionality is available on the (default) PCI
940based transport and is exposed through the HTTP API. The `ch-remote` utility
941provides a CLI for adding or removing these device types after the VM has
942booted. User can use the `id` parameter on the devices to choose names for
943devices to ease their removal.
944
945### Alternative `libc` Support
946
947Cloud Hypervisor can now be compiled with the `musl` C library and this release
948contains a static binary compiled using that toolchain.
949
950### Multithreaded Multi Queued `vhost-user` Backends
951
952The `vhost-user` backends for network and block support that are shipped by
953Cloud Hypervisor have been enhanced to support multiple threads and queues to
954improve throughput. These backends are used automatically if `vhost_user=true`
955is passed when the devices are created.
956
957### Initial RamFS Support
958
959By passing the `--initramfs` command line option the user can specify a file to
960be loaded into the guest memory to be used as the kernel initial filesystem.
961This is usually used to allow the loading of drivers needed to be able to
962access the real root filesystem but it can also be used standalone for a very
963minimal image.
964
965### Alternative Memory Hotplug: `virtio-mem`
966
967As well as supporting ACPI based hotplug Cloud Hypervisor now supports using
968the `virtio-mem` hotplug alternative. This can be controlled by the
969`hotplug_method` parameter on the `--memory` command line option. It currently
970requires kernel patches to be able to support it.
971
972### `Seccomp` Sandboxing
973
974Cloud Hypervisor now has support for restricting the system calls that the
975process can use via the `seccomp` security API. This on by default and is
976controlled by the `--seccomp` command line option.
977
978### Updated Distribution Support
979
980With the release of Ubuntu 20.04 we have added that to the list of supported
981distributions and is part of our regular testing programme.
982
983### Command Line and API Changes
984
985This is non exhaustive list of HTTP API and command line changes
986
987* New `id` fields added for devices to allow them to be named to ease removal.
988  If no name is specified the VMM chooses one.
989* Use `--memory`'s `shared` and `hugepages` controls for determining backing
990  memory instead of providing a path.
991* The `--vsock` parameter only takes one device as the Linux kernel only
992  supports a single Vsock device. The REST API has removed the vector for this
993  option and replaced it with a single optional field.
994* There is enhanced validation of the command line and API provided
995  configurations to ensure that the provided options are compatible e.g. that
996  shared memory is in use if any attempt is made to used a `vhost-user` backed
997  device.
998* `ch-remote` has added `add-disk`, `add-fs`, `add-net`, `add-pmem` and
999  `add-vsock` subcommands. For removal `remove-device` is used. The REST API
1000  has appropriate new HTTP endpoints too.
1001* Specifying a `size` with `--pmem` is no longer required and instead the size
1002  will be obtained from the file. A `discard_writes` option has also been added
1003  to provide the equivalent of a read-only file.
1004* The parameters to `--block-backend` have been changed to more closely align
1005  with those used by `--disk`.
1006
1007### Contributors
1008
1009Many thanks to everyone who has contributed to our 0.7.0 release including some new faces.
1010
1011* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
1012* Bo Chen <chen.bo@intel.com>
1013* Cathy Zhang <cathy.zhang@intel.com>
1014* Damjan Georgievski <gdamjan@gmail.com>
1015* Dean Sheather <dean@coder.com>
1016* Eryu Guan <eguan@linux.alibaba.com>
1017* Hui Zhu <teawater@antfin.com>
1018* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1019* Martin Xu <martin.xu@intel.com>
1020* Muminul Islam <muislam@microsoft.com>
1021* Rob Bradford <robert.bradford@intel.com>
1022* Samuel Ortiz <sameo@linux.intel.com>
1023* Sebastien Boeuf <sebastien.boeuf@intel.com>
1024* Sergio Lopez <slp@redhat.com>
1025* Yang Zhong <yang.zhong@intel.com>
1026* Yi Sun <yi.y.sun@linux.intel.com>
1027
1028# v0.6.0
1029
1030This release has been tracked through the [0.6.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/7).
1031
1032Highlights for `cloud-hypervisor` version 0.6.0 include:
1033
1034### Directly Assigned Devices Hotplug
1035
1036We continued our efforts around supporting dynamically changing the guest
1037resources. After adding support for CPU and memory hotplug, Cloud Hypervisor
1038now supports hot plugging and hot unplugging directly assigned (a.k.a. `VFIO`)
1039devices into an already running guest. This closes the features gap for
1040providing a complete Kata Containers workloads support with Cloud Hypervisor.
1041
1042### Shared Filesystem Improvements
1043
1044We enhanced our shared filesystem support through many `virtio-fs` improvements.
1045By adding support for DAX, parallel processing of multiple requests, `FS_IO`,
1046`LSEEK` and the `MMIO` virtio transport layer to our `vhost_user_fs` daemon, we
1047improved our filesystem sharing performance, but also made it more stable and
1048compatible with other `virtio-fs` implementations.
1049
1050### Block and Networking IO Self Offloading
1051
1052When choosing to offload the paravirtualized block and networking I/O to an
1053external process (through the `vhost-user` protocol), Cloud Hypervisor now
1054automatically spawns its default `vhost-user-blk` and `vhost-user-net` backends
1055into their own, separate processes.
1056This provides a seamless paravirtualized I/O user experience for those who want
1057to run their guest I/O into separate executions contexts.
1058
1059### Command Line Interface
1060
1061More and more Cloud Hypervisor services are exposed through the
1062[Rest API](vmm/src/api/openapi/cloud-hypervisor.yaml) and thus only
1063accessible via relatively cumbersome HTTP calls. In order to abstract
1064those calls into a more user friendly tool, we created a Cloud Hypervisor
1065Command Line Interface (CLI) called `ch-remote`.  The `ch-remote` binary
1066is created with each build and available e.g. at
1067`cloud-hypervisor/target/debug/ch-remote` when doing a debug build.
1068
1069Please check `ch-remote --help` for a complete description of all available
1070commands.
1071
1072### PVH Boot
1073
1074In addition to the traditional Linux boot protocol, Cloud Hypervisor now
1075supports direct kernel booting through the [PVH ABI](https://xenbits.xen.org/docs/unstable/misc/pvh.html).
1076
1077### Contributors
1078
1079With the 0.6.0 release, we are welcoming a few new contributors. Many thanks
1080to them and to everyone that contributed to this release:
1081
1082* Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
1083* Arron Wang <arron.wang@intel.com>
1084* Bin Liu <liubin0329@gmail.com>
1085* Bo Chen <chen.bo@intel.com>
1086* Cathy Zhang <cathy.zhang@intel.com>
1087* Eryu Guan <eguan@linux.alibaba.com>
1088* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1089* Liu Bo <bo.liu@linux.alibaba.com>
1090* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1091* Rob Bradford <robert.bradford@intel.com>
1092* Samuel Ortiz <sameo@linux.intel.com>
1093* Sebastien Boeuf <sebastien.boeuf@intel.com>
1094* Sergio Lopez <slp@redhat.com>
1095
1096# v0.5.1
1097
1098This is a bugfix release branched off v0.5.0. It contains the following fixes:
1099
1100* Update DiskConfig to contain missing disk control features (#790) - Samuel Ortiz and Sergio Lopez
1101* Prevent memory overcommit via virtio-fs (#763) - Sebastien Boeuf
1102* Fixed error reporting for resize command - Samuel Ortiz
1103* Double reboot workaround (#783) - Rob Bradford
1104* Various CI and development tooling fixes - Sebastien Boeuf, Samuel Ortiz, Rob Bradford
1105
1106# v0.5.0
1107
1108This release has been tracked through the [0.5.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/6).
1109
1110Highlights for `cloud-hypervisor` version 0.5.0 include:
1111
1112### Virtual Machine Dynamic Resizing
1113
1114With 0.4.0 we added support for CPU hot plug, and 0.5.0 adds CPU hot unplug and
1115memory hot plug as well. This allows to dynamically resize Cloud Hypervisor
1116guests which is needed for e.g. Kubernetes related use cases.
1117The memory hot plug implementation is based on the same framework as the CPU hot
1118plug/unplug one, i.e. hardware-reduced ACPI notifications to the guest.
1119
1120Next on our VM resizing roadmap is the PCI devices hotplug feature.
1121
1122### Multi-Queue, Multi-Threaded Paravirtualization
1123
1124We enhanced our virtio networking and block support by having both devices use
1125multiple I/O queues handled by multiple threads. This improves our default
1126paravirtualized networking and block devices throughput.
1127
1128### New Interrupt Management Framework
1129
1130We improved our interrupt management implementation by introducing an Interrupt
1131Manager framework, based on the currently on-going [rust-vmm vm-device](https://github.com/rust-vmm/vm-device)
1132crates discussions. This move made the code significantly cleaner, and allowed
1133us to remove several KVM related dependencies from crates like the PCI and
1134virtio ones.
1135
1136### Development Tools
1137
1138In order to provide a better developer experience, we worked on improving our
1139build, development and testing tools.
1140Somehow similar to the excellent
1141[Firecracker's devtool](https://github.com/firecracker-microvm/firecracker/blob/master/tools/devtool),
1142we now provide a [dev_cli script](scripts/dev_cli.sh).
1143
1144With this new tool, our users and contributors will be able to build and test
1145Cloud Hypervisor through a containerized environment.
1146
1147### Kata Containers Integration
1148
1149We spent some significant time and efforts debugging and fixing our integration
1150with the [Kata Containers](https://github.com/kata-containers) project. Cloud
1151Hypervisor is now a fully supported Kata Containers hypervisor, and is
1152integrated into the project's CI.
1153
1154### Contributors
1155
1156Many thanks to everyone that contributed to the 0.5.0 release:
1157
1158* Bo Chen <chen.bo@intel.com>
1159* Cathy Zhang <cathy.zhang@intel.com>
1160* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1161* Rob Bradford <robert.bradford@intel.com>
1162* Samuel Ortiz <sameo@linux.intel.com>
1163* Sebastien Boeuf <sebastien.boeuf@intel.com>
1164* Sergio Lopez <slp@redhat.com>
1165* Yang Zhong <yang.zhong@intel.com>
1166
1167# v0.4.0
1168
1169This release has been tracked through the [0.4.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/4).
1170
1171Highlights for `cloud-hypervisor` version 0.4.0 include:
1172
1173### Dynamic virtual CPUs addition
1174
1175As a way to vertically scale Cloud-Hypervisor guests, we now support dynamically
1176adding virtual CPUs to the guests, a mechanism also known as CPU hot plug.
1177Through hardware-reduced ACPI notifications, Cloud Hypervisor can now add CPUs
1178to an already running guest and the high level operations for that process are
1179documented [here](docs/hotplug.md)
1180
1181During the next release cycles we are planning to extend Cloud Hypervisor
1182hot plug framework to other resources, namely PCI devices and memory.
1183
1184### Programmatic firmware tables generation
1185
1186As part of the CPU hot plug feature enablement, and as a requirement for hot
1187plugging other resources like devices or RAM, we added support for
1188programmatically generating the needed ACPI tables. Through a dedicated
1189`acpi-tables` crate, we now have a flexible and clean way of generating those
1190tables based on the VMM device model and topology.
1191
1192### Filesystem and block devices vhost-user backends
1193
1194Our objective of running all Cloud Hypervisor paravirtualized I/O to a
1195vhost-user based framework is getting closer as we've added Rust based
1196implementations for vhost-user-blk and virtiofs backends. Together with the
1197vhost-user-net backend that came with the 0.3.0 release, this will form the
1198default Cloud Hypervisor I/O architecture.
1199
1200### Guest pause and resume
1201
1202As an initial requirement for enabling live migration, we added support for
1203pausing and resuming any VMM components. As an intermediate step towards live
1204migration, the upcoming guest snapshotting feature will be based on the pause
1205and resume capabilities.
1206
1207### Userspace IOAPIC by default
1208
1209As a way to simplify our device manager implementation, but also in order to
1210stay away from privileged rings as often as possible, any device that relies on
1211pin based interrupts will be using the userspace IOAPIC implementation by
1212default.
1213
1214### PCI BAR reprogramming
1215
1216In order to allow for a more flexible device model, and also support guests
1217that would want to move PCI devices, we added support for PCI devices BAR
1218reprogramming.
1219
1220### New `cloud-hypervisor` organization
1221
1222As we wanted to be more flexible on how we manage the Cloud Hypervisor project,
1223we decided to move it under a [dedicated GitHub organization](https://github.com/cloud-hypervisor).
1224Together with the [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
1225project, this new organization also now hosts our [kernel](https://github.com/cloud-hypervisor/linux)
1226and [firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1227repositories. We may also use it to host any rust-vmm that we'd need to
1228temporarily fork.
1229Thanks to GitHub's seamless repository redirections, the move is completely
1230transparent to all Cloud Hypervisor contributors, users and followers.
1231
1232### Contributors
1233
1234Many thanks to everyone that contributed to the 0.4.0 release:
1235
1236* Cathy Zhang <cathy.zhang@intel.com>
1237* Emin Ghuliev <drmint80@gmail.com>
1238* Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
1239* Qiu Wenbo <qiuwenbo@phytium.com.cn>
1240* Rob Bradford <robert.bradford@intel.com>
1241* Samuel Ortiz <sameo@linux.intel.com>
1242* Sebastien Boeuf <sebastien.boeuf@intel.com>
1243* Sergio Lopez <slp@redhat.com>
1244* Wu Zongyong <wuzongyong@linux.alibaba.com>
1245
1246# v0.3.0
1247
1248This release has been tracked through the [0.3.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/3).
1249
1250Highlights for `cloud-hypervisor` version 0.3.0 include:
1251
1252### Block device offloading
1253
1254We continue to work on offloading paravirtualized I/O to external processes,
1255and we added support for
1256[vhost-user-blk](https://access.redhat.com/solutions/3394851) backends.
1257This enables `cloud-hypervisor` users to plug a `vhost-user` based block device
1258like [SPDK](https://spdk.io)) into the VMM as their paravirtualized storage
1259backend.
1260
1261### Network device backend
1262
1263The previous release provided support for
1264[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. Now we
1265also provide a TAP based vhost-user-net backend, implemented in Rust. Together
1266with the vhost-user-net device implementation, this will eventually become the
1267Cloud Hypervisor default paravirtualized networking architecture.
1268
1269### Virtual sockets
1270
1271In order to more efficiently and securely communicate between host and guest,
1272we added an hybrid implementation of the
1273[VSOCK](http://man7.org/linux/man-pages/man7/vsock.7.html) socket address
1274family over virtio. Credits go to the
1275[Firecracker](https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md)
1276project as our implementation is a copy of theirs.
1277
1278### HTTP based API
1279
1280In anticipation of the need to support asynchronous operations to Cloud
1281Hypervisor guests (e.g. resources hotplug and guest migration), we added a HTTP
1282based API to the VMM. The API will be more extensively documented during the
1283next release cycle.
1284
1285### Memory mapped virtio transport
1286
1287In order to support potential PCI-free use cases, we added support for the
1288[virtio MMIO](https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-1440002)
1289transport layer. This will allow us to support simple, minimal guest
1290configurations that do not require a PCI bus emulation.
1291
1292### Paravirtualized IOMMU
1293
1294As we want to improve our nested guests support, we added support for exposing
1295a [paravirtualized IOMMU](docs/iommu.md) device through virtio. This allows
1296for a safer nested virtio and directly assigned devices support.
1297
1298To add the IOMMU support, we had to make some CLI changes for Cloud Hypervisor
1299users to be able to specify if devices had to be handled through this virtual
1300IOMMU or not. In particular, the `--disk` option now expects disk paths to be
1301prefixed with a `path=` string, and supports an optional `iommu=[on|off]`
1302setting.
1303
1304### Ubuntu 19.10
1305
1306With the latest [hypervisor firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware),
1307we can now support the latest
1308[Ubuntu 19.10 (Eoan Ermine)](http://releases.ubuntu.com/19.10/) cloud images.
1309
1310### Large memory guests
1311
1312After simplifying and changing our guest address space handling, we can now
1313support guests with large amount of memory (more than 64GB).
1314
1315# v0.2.0
1316
1317This release has been tracked through the [0.2.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/2).
1318
1319Highlights for `cloud-hypervisor` version 0.2.0 include:
1320
1321### Network device offloading
1322
1323As part of our general effort to offload paravirtualized I/O to external
1324processes, we added support for
1325[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
1326enables `cloud-hypervisor` users to plug a `vhost-user` based networking device
1327(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
1328
1329### Minimal hardware-reduced ACPI
1330
1331In order to properly implement and guest reset and shutdown, we implemented
1332a minimal version of the hardware-reduced ACPI specification. Together with
1333a tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
1334cleanly reboot and shutdown.
1335
1336The ACPI implementation is a `cloud-hypervisor` build time option that is
1337enabled by default.
1338
1339### Debug I/O port
1340
1341Based on the Firecracker idea of using a dedicated I/O port to measure guest
1342boot times, we added support for logging guest events through the
1343[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
1344PC debug port. This allows, among other things, for granular guest boot time
1345measurements. See our [debug port documentation](docs/debug-port.md) for more
1346details.
1347
1348### Improved direct device assignment
1349
1350We fixed a major performance issue with our initial VFIO implementation: When
1351enabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
1352were (in many cases) not cached. After correctly tagging the guest memory from
1353`cloud-hypervisor` we're now able to reach the expected performance from
1354directly assigned devices.
1355
1356### Improved shared filesystem
1357
1358We added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
1359support to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
1360This provides better shared filesystem IO performance with a smaller guest
1361memory footprint.
1362
1363### Ubuntu bionic based CI
1364
1365Thanks to our [simple KVM firmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware)
1366improvements, we are now able to boot Ubuntu bionic images. We added those to
1367our CI pipeline.
1368
1369# v0.1.0
1370
1371This release has been tracked through the [0.1.0 project](https://github.com/cloud-hypervisor/cloud-hypervisor/projects/1).
1372
1373Highlights for `cloud-hypervisor` version 0.1.0 include:
1374
1375### Shared filesystem
1376
1377We added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
1378system, allowing for an efficient and reliable way of sharing a filesystem
1379between the host and the `cloud-hypervisor` guest.
1380
1381See our [filesystem sharing](docs/fs.md) documentation for more details on how
1382to use virtio-fs with `cloud-hypervisor`.
1383
1384### Initial direct device assignment support
1385
1386VFIO (Virtual Function I/O) is a kernel framework that exposes direct device
1387access to userspace. `cloud-hypervisor` uses VFIO to directly assign host
1388physical devices into its guest.
1389
1390See our [VFIO](docs/vfio.md) documentation for more detail on how to directly
1391assign host devices to `cloud-hypervisor` guests.
1392
1393### Userspace IOAPIC
1394
1395`cloud-hypervisor` supports a so-called split IRQ chip implementation by
1396implementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
1397By moving part of the IRQ chip implementation from kernel space to user space,
1398the IRQ chip emulation does not always run in a fully privileged mode.
1399
1400### Virtual persistent memory
1401
1402The `virtio-pmem` implementation emulates a virtual persistent memory device
1403that `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
1404allows to bypass the guest page cache and improve the guest memory footprint.
1405
1406### Linux kernel bzImage
1407
1408The `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
1409`bzImage` kernel images, which is usually the format that Linux distributions
1410use to ship their kernels. For example, this allows for booting from the host
1411distribution kernel image.
1412
1413### Console over virtio
1414
1415`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
1416using this device as a guest console can potentially cut some early boot
1417messages, it can reduce the guest boot time and provides a complete console
1418implementation.
1419
1420The `virtio-console` device is enabled by default for the guest console.
1421Switching back to the legacy serial port is done by selecting
1422`--serial tty --console off` from the command line.
1423
1424### Unit testing
1425
1426We now run all unit tests from all our crates directly from our CI.
1427
1428### Integration tests parallelization
1429
1430The CI cycle run time has been significantly reduced by refactoring our
1431integration tests; allowing them to all be run in parallel.
1432