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