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