Releases: google/alioth
Release list
v0.12.0
This release brings feature additions including foundational support for Intel Trust Domain Extensions (TDX), new emulated devices for firmware boot, and bug fixes and refactorings.
New Features
- Intel TDX Support: Alioth now provides basic support for booting Intel TDX confidential virtual machines.
- Added userspace emulation for the IOAPIC, required by TDX guests to enable KVM_CAP_SPLIT_IRQCHIP.
- Preparation for supporting UEFI boot on x86:
- Added an emulated CMOS and an ACPI power management timer for x86.
- Added a
fw_dbgdevice to capture firmware logs. - Included CPU count and memory size in
fw_cfg. - Corrected
fw_cfgACPI table checksum calculation by clearing checksum fields before computation. - MMIO reads from unmapped addresses now correctly return all-ones.
Bug Fixes and Refactorings
- VFIO:
- Dynamically allocate buffers for PCI configuration space, resolving an
EFAULTerror when reading device configs. - Conditionally reset devices based on device flags.
- Dynamically allocate buffers for PCI configuration space, resolving an
- Confidential Computing (AMD SEV-SNP):
- Verified the firmware's SEV metadata signature.
- Explicitly enabled the
MAP_GPA_RANGEhypercall for SNP. - Added unknown descriptors as zero pages for SNP and removed unsupported CPUID features.
- Filtered out empty KVM CPUID entries and checked the SEV error code in
kvm_memory_encrypt_op.
- Console: Abstracted the I/O backend using a new
Consoletrait, decoupling the console worker from hardcoded stdio logic. - Others:
- Added tests for PL031 RTC and PL011 UART.
- Prevented log spam originating from virtio split queues
- Preserved the lower bits of
addr_hiduring MSI address translation in KVM.
Documentation & Infrastructure
- Documentation: Added instructions for running Intel-TDX.
- Dependencies & Tooling:
- Upgraded workspace
Cargo.tomlresolver to V3 and removed deprecatedauthorsfields. - Bumped various dependencies.
- Upgraded workspace
v0.11.0
This release introduces support for booting from cloud images, a new command to convert Qcow2 images, and a host of other new features, bug fixes, and improvements.
New Features
- Boot from Cloud Images: Alioth now supports booting guest Linux systems from cloud images, using a minimal Linux kernel and an initramfs with u-root as a bootloader.
- Qcow2 Image Conversion: A new
imgcommand has been added to the CLI to convert Qcow2 images to raw format. - Vsock Vhost-User Backend: The UdsVsock (Unix Domain Socket based Vsock) can now be run as a vhost-user backend.
- PSCI (AArch64): Implemented PSCI calls for
CPU_OFFandAFFINITY_INFO, which are prerequisites forkexecsupport in guests on aarch64.
Bug Fixes
- HVF (macOS):
- The zero register (X31) is now correctly handled for MMIO on aarch64.
- VCPUs are now interrupted on stop requests instead of being shut down immediately.
- Networking:
- Removed
INDIRECT_DESCfrom the virtio-net feature set. - vmnet: Fixed incorrect handling of zero-length buffers.
- Removed
- Devicetree (AArch64): Removed the
msi-parentproperty from the PCI bridge node to resolve a guest kernel warning. - Vsock:
- Guest-initiated connections are now set to non-blocking to prevent indefinite blocking.
- Fixed socket listener deregistration on reset.
- Block Device: Added file locking to disk images to prevent corruption from concurrent access.
- Vhost-User:
- Enforced a limit to serve only one VMM connection at a time.
- Fixed handling of 128-bit device features in the vhost-user protocol by truncating to 64-bit.
Documentation & Infrastructure
- Added documentation for booting cloud images.
- Added macOS entitlements and signing documentation.
- Added workflows for release automation.
v0.10.0
What's Changed
New
- aarch64: emulated PL031 RTC for aarch64 #285
- HVF/aarch64: vmnet-based virtio-net device on macOS #299
- New command line flag
--cpufor specifying CPU topology #331 - KVM/x86_64: enable x2APIC by default, allow booting up to 32768 VCPUs (theoretical value) #344
Fixes
- HVF/aarch64: handle
OSDLR_EL1andOSLAR_EL1#284 - HVF/aarch64: fix system reboot #298
- x86_64: fix CPU topology encoded in CPUID #331
Other
- Many unit tests added
- Dependency bumps by @dependabot[bot]
Full Changelog: v0.9.0...v0.10.0
v0.9.0
v0.8.0
What's Changed
New
- vhost-user devices in #243
- Built-in VirtIO FS device in #244
- virtio-fs: handle opcodes CREATE and WRITE in #246
- Run virtio-fs as a vhost-user backend in #247
- virtio-fs: DAX support in #252
Fixes
Refactors
- refactor(virtio): remove generic paramter D from VirtioDevice in #237
- refactor(virtio): move Register to VirtioPciDevice in #238
- refactor: replace boxed_debug_trace with trait BoxTrace in #242
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- fix(vfio): calculate MSI cap size from msg control by @Lencerf in #184
- fix(vfio): clear the multi-function device bit by @Lencerf in #185
- feat(help): implement Help for array types by @Lencerf in #186
- feat(vfio)!: add parameter types for Ioas and Container by @Lencerf in #188
- fix(vm): let device builders take immutable self by @Lencerf in #190
- docs: update README by @Lencerf in #193
- perf(pci): remove Arc from PCI configs by @Lencerf in #194
- clippy fix by @Lencerf in #199
- Add MSI capability support for VFIO devices by @Lencerf in #191
- docs: fix README format by @Lencerf in #201
- style: format imports by @Lencerf in #202
- fix(vfio): implement reset() for MsiCapMmio by @Lencerf in #203
- refactor(vfio): get MSIX count from capability by @Lencerf in #204
- fix: avoid infinite wait in sync_vcpus() by @Lencerf in #205
- Migrate to Rust 2024 by @Lencerf in #221
- ci: fix rustfmt by @Lencerf in #227
- chore: bump version to 0.7.0 by @Lencerf in #233
- dependency updates by @dependabot
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
New features
- virtio-ballon device with free page reporting
- PCI device passthrough with legacy VFIO API (container and group)
- io_uring based virtio-blk device
Bug fixes and performance improvements
-
device passthrough
-
loader
-
virtio devices
- acdfb5d fix(virtio): monitor ioeventfds with IORING_OP_POLL_ADD
- 95b9d5f fix(virtio): monitor the waker with IORING_OP_POLL_ADD
- e9fe9c8 fix(virtio): let devices handle hostside io errors
- 8968a24 fix(virtio): reset io_uring queue_submits at start up
- b306c1a perf(virtio): send 1 interrupt in a single loop
-
virtio-blk
- 9a3857f fix(blk): flush disk file on FLUSH requests
-
virtio-net (tried to improve latency but failed)
-
hypervisor
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
New features
- complete command line help message: check
alioth --helpandalioth run --help. - experimental io_uring based virtio-net device: add
api=iouringto--net.
Bug fixes and performance improvements
- fix(sev): fix the policy bitfield definition in #101
- fix(vu): allow only 1 in-flight request in #104
- fix(x86): enable fast string in #105
- fix(kvm): clear the high part of mmio write values in #109
- Fix cpuid in #110
- perf(virtio): remove unnecessary wake at startup in #121
- fix(net): detect tap offload cap after setup in #122
- virtio: replace actions with states in #126
- perf(virtio): lock memory layout while running in #132
- refactor(virtio): replace device_id() with an associated const in #133
- Remove
Arc<Vec<T>>andArc<String>in #134
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Disclaimer: Alioth is not an officially supported Google product.
Many thanks to the open source community! Alioth now has 2 users,
- moturus/motor-os: simple, fast, and secure operating system built for the cloud
- microvm.nix: NixOS MicroVMs, microvm-nix/microvm.nix#256 (WIP)
New features
- virtio-blk now supports readonly mode:
--blk path=/path/to/image,readonly=on|off, - virtio-net now supports multi queues:
--net queue_pairs=2,...(caveat: all queues are still handled by a single VMM thread, it needs more time to investigate ways to improve virtual network performance), - PCI device passthrough with the VFIO/IOMMUFD API:
--vfio cdev=/dev/vfio/devices/vfioX, - flag
--memoryto support more options:--memory size=1G,backend=memfd|anon,shared=on|off,transparent_hugepage=on|off, serde-acodeserializer is mostly code-complete,- flag
--objectto support expressing complex values via command line, - new doc error-handling.md.
Incoming breaking changes
- flag
--blk /path/to/imageshould be updated to--blk path=/path/to/image[,readonly=on|off], - flag
--mem-size xshould be updated to--memory size=xif you do not need virtio-fs--fs, otherwise--memory size=x,backend=memfd.
New Contributors
Full Changelog: v0.3.0...v0.4.0