Releases: cloud-hypervisor/rust-hypervisor-firmware
0.5.0
Release 0.5.0
Thanks to all the contributors who made this release possible! This release includes a number of new features and improvements, including:
- AArch64 support
- RISC-V support
- Improved PCI BAR handling
- Improved EFI support
- Improved integration tests
- Improved CI/CD workflows
@retrage
- bootinfo: Add architecture-independent memory entry by @retrage in #212
- arch: Add aarch64 support by @retrage in #205
- aarch64: Setup SIMD at startup by @retrage in #214
- build: Update Rust toolchain to 2023-02-10-nightly by @retrage in #219
- scripts: Update integration test container base image by @retrage in #221
- scripts: Bump Cloud Hypervisor version to v30.0 by @retrage in #220
- pci: Handle overflow on 32-bit PCI BAR calculation by @retrage in #241
- build: Update toolchain and tests by @retrage in #252
- misc: Clean up license notices and copyrights by @retrage in #256
- build: Bump tempfile from 3.6.0 to 3.7.0 by @retrage in #266
- tests: Add integration tests for aarch64 by @retrage in #267
- build: Update toolchain to nightly-2023-08-11 by @retrage in #270
- build: Bump chrono from 0.4.26 to 0.4.28 by @retrage in #276
- build: Bump tock-registers from 0.8.1 to 0.9.0 by @retrage in #292
- layout: Add MMIO memory attribute by @retrage in #293
- riscv64: Avoid F and V instruction generation by @retrage in #300
- scripts: Retry Cloud Hypervisor binary download by @retrage in #303
- ci: Switch arm64 tests to self-hosted GitHub Actions runner by @retrage in #316
- ci: Import DCO check GHA from CH by @retrage in #320
- ci: Update Docker Image Publish CI by @retrage in #321
- build: Update toolchain to nightly-2023-11-11 by @retrage in #322
- ci: Add Windows guest integration tests for GHA by @retrage in #328
- integration: Switch to use upstream Clear Linux image by @retrage in #331
- build: Remove heap allocator by @retrage in #334
- build: Update toolchain to nightly-2024-05-13 by @retrage in #335
- efi: Refactor EFI layer by @retrage in #337
- log: Introduce log crate by @retrage in #339
@rbradford
- Discover PCI BAR sizes by @rbradford in #224
- efi: Use a constant for the EFI boot path by @rbradford in #226
- boot: Remove impl of Info for Linux Boot Protocol by @rbradford in #227
- Increase portability though existing Info trait by @rbradford in #228
- Allocate PCI BARs where needed by @rbradford in #230
- efi: Populate EFI configuration table as much as possible by @rbradford in #231
- pci: Use correct address calculation for PCI ECAM by @rbradford in #233
- build: Store container in ghcr vs DockerHub by @rbradford in #234
- Linux EFI Stub fixes by @rbradford in #235
- Add RISC-V support by @rbradford in #239
- scripts: Bump version of CH used by @rbradford in #296
- scripts: Use older jammy image by @rbradford in #301
- scripts: Use current image for jammy by @rbradford in #302
- Boot from memory device path by @rbradford in #305
- ci: Migrate some integration tests to GitHub actions by @rbradford in #311
- build: Enable CI jobs to run on merge_group by @rbradford in #326
- github: Disable ARM64 tests as runner is unavailable by @rbradford in #347
- github: Re-enable ARM64 tests using new runner by @rbradford in #350
@jongwu
- AArch64: speed up paging and fix exception caused by atomic operation by @jongwu in #250
- Serial/AArch64: treat LF as LF + CR by @jongwu in #259
- AArch64: let ubuntu 20.04+ boot from rust hypervisor firmware by @jongwu in #262
- aarch64: fix get time runtime service failure by @jongwu in #290
@fdr
@MrXinWang
- dev_cli.sh: Fix kvm directory path of the build command by @MrXinWang in #242
@edigaryev
- build: Add aarch64 to release workflow by @edigaryev in #294
@Lencerf
@rveerama1
- Systemd related content has moved to UAPI website by @rveerama1 in #308
@thomasbarrett
- fdt: enumerate all memory nodes present by @thomasbarrett in #346
@acarp-crusoe
- aarch64/layout: Increase aarch64 system memory layout to 2TB. by @acarp-crusoe in #355
New Contributors
- @fdr made their first contribution in #243
- @MrXinWang made their first contribution in #242
- @jongwu made their first contribution in #250
- @edigaryev made their first contribution in #294
- @Lencerf made their first contribution in #306
- @rveerama1 made their first contribution in #308
- @thomasbarrett made their first contribution in #346
- @acarp-crusoe made their first contribution in #355
Full Changelog: 0.4.2...0.5.0
0.4.2
Release 0.4.2
Thank you to all contributors. This release includes improvements to the
architecture specific code in support of multiple architectures, fixes
for toolchain updates and bug fixes for the FAT filesystem and block
driver.
Akira Moroo (21):
- build: Remove redundant matrix from GitHub Actions
- build: Switch to dtolnay/rust-toolchain action
- build: Use active toolchain when building container images
- build: Bump r-efi from 4.0.0 to 4.1.0
- build: Rename target.json to x86_64-unknown-none.json
- build: Move x86_64 specific code to arch mod
- build: Merge
rust64_start()
for coreboot and pvh - build: Rename x86_64 CMOS RTC driver to
cmos
- build: Annotate x86_64 specific code
- build: Split x86_64 specific dependencies
- delay: Abstract architecture-dependent functions
- efi: Replace ABI "win64" with "efiapi"
- efi: Add workaround to
locate_protocol()
for booting Linux - efi: Implement
install_configuration_table()
- layout: Introduce
layout
for memory mapping - build: Fix to
is_{none,some}()
as suggested by clippy - build: Remove unnecessary casts as suggested by clippy
- build: Remove needless borrows as suggested by clippy
- build: Fix to use
clippy::disallowed_names
as suggested by clippy - build: Remove manual implementation of
find()
as suggested by clippy - build: Update toolchain to nightly-2022-11-12
Rob Bradford (2):
- block: Error out on write/flush if device is read-only
- build: Bump version for 0.4.2 release
Sebastien Boeuf (3):
- fat: Handle next entry over multiple sectors
- fat: Store the first sector of a directory
- fat: Add a test for multiple sectors per cluster
0.4.1
Release 0.4.1
Thank you to all contributors. This release includes improvements to the
"Bootloader Specification" loading support as well as other bug fixes.
Akira Moroo (12):
- build: Replace rust-toolchain with rust-toolchain.toml
- fat: Improve FAT type determination compatibility
- build: Update Rust edition to 2021
- build: Update toolchain to nightly-2022-06-10
- build: Derive
Eq
as well asPartialEq
- efi: Replace useless
transmute()
with type casting - rtc: Fix RTC time hour decoding
- serial: Fix for macro definition's crate reference
- build: Bump linked_list_allocator from 0.9.1 to 0.10.0
- pe: Replace hard-coded magic numbers in PE parser
- block: Introduce
SectorBuf
to reduce hard-coded sector size - block: Improve block device request error handling
Ben Maddison (4):
- tests: Correctly determine cargo home directory in test scripts
- fat,loader: reformat according to
rustfmt
suggestions - loader:
systemd-boot
compatible default entry matching - fat,loader: revert import grouping and add empty
rustfmt.toml
Rob Bradford (2):
- docs: Update security process
- build: Bump version for 0.4.1 release
0.4.0
Release 0.4.0
Thank you to all the contributors. This release includes fixes for EFI
filesystem lookup and fixes for initrd loading with more than 2GiB of
RAM.
Akira Moroo (20):
- asm: Add att_syntax and raw options
- tests: Replace Ubuntu Groovy with Hirsute
- tests: Add containerized build
- tests: Containerize unit tests
- tests: Containerize cargo tests
- tests: Containerize CLH Linux integration tests
- tests: Containerize coreboot Linux integration tests
- tests: Containerize Windows integration tests
- CI: Change to use containerized tests
- build: Add docker image build
- build: Remove unused field in target.json
- build: Fix needless borrows
- virtio: Remove prefix from virtio::Error
- fat,part: Fix Error to return block::Error if possible
- bzimage: Fix Error to return fat::Error if possible
- build: Update toolchain to nightly-2021-12-01
- tests: Replace Ubuntu Hirsute with Jammy
- build: Update toolchain to nightly-2022-03-28
- rtc: Rename
is_updating()
toget_update_status()
- build: Bump uart_16550 from 0.2.16 to 0.2.17
Henry Sloan (1):
- Remove redundant constructor call in main function
Rob Bradford (7):
- tests: Update tests to CH v17.0
- build: Update CH version used in CH tests to latest release
- build: Bump Cloud Hypervisor version used for CI to v20.0
- scripts: Update version of CH tests to v22.1
- bzimage: Improve initrd memory allocation
- scripts: Bump Cloud Hypervisor version in integration test
- build: Bump version for 0.4.0 release
Yuji Hagiwara (3):
- fat: Fix incomplete comparing in compare_name and compare_short_name
compare_name and compare_short_name compare incompletely if the
argument "name" is shorter than a name of directory entries. This
causes a failure to load EFI as reported in #164 - loader: fix default_entry_file to include the file extension as well
default_entry_file() returns only the basename but it doesn't
return the extension. this becomes problematic after compare_name()
compare names' length too to fix #164. default_entry_file() seems
to assume that the extension of the file is ".conf". - efi: Check if the buffer has enough length in read() of a directory
first
0.3.2
Release 0.3.2
The main highlight of this release is support for booting Windows with
Rust Hypervisor Firmware through improvements to the EFI compatability
layer. Thanks to Akira Moroo for getting that to work.
Akira Moroo (31):
- gdt: Add DATA64 segument for DS and other registers
- efi: Implement BootServices.stall
- rtc: Add RTC for RuntimeServices.get_time
- layout: Increase stack size to 128 KiB
- efi: Change our memory type to RuntimeServicesData
- build: Use thin LTO for release build
- alloc: Register more accurate firmware memory map
- rtc: Fix register B status check conditions
- rtc: Change to cache register B value
- tests: Improve integration tests output format
- build: Update GH action to match new toolchain version
- tests: Update to latest version of Cloud Hypervisor
- efi: Opt-out EFI variable support
- tests: Add Windows guest tests
- efi: Fix fixup_at_virtual
- build: Change relocation-model to pic
- tests: Run Windows guest tests separately
- tests: Fetch Linux images for Linux tests only
- tests: Run CH Windows guest tests in parallel
- tests: Temporary disable Windows tests for QEMU
- build: Bump uart_16550 from 0.2.13 to 0.2.14
- build: Update toolchain to nightly-2021-05-06
- build: Bulk update dependencies
- build: Bump x86_64 from 0.14.2 to 0.14.3
- build: Bump uart_16550 from 0.2.14 to 0.2.15
- build: Bump rand from 0.8.3 to 0.8.4
- build: Bump r-efi from 3.2.0 to 4.0.0
- CI: Update the way to download private images
- CI: Use snapshot instead of copying VM image
- pci: Probe sixth BAR as well
- fat: Fix out-of-bounds read in next_cluster
Joseph Richey (1):
- build: Bump x86_64 from 0.14.3 to 0.14.4
Rob Bradford (6):
- build: Update toolchain to nightly-2021-04-21
- build: Allow deref_nullptr for offset_of macro
- build: Replace assert_eq with assert on bool value
- build: Upgrade to GitHub-native Dependabot
- scripts: Use CDN to download Clear image
- build: Bump version for release 0.3.2
0.3.1
Release 0.3.1
This release of Rust Hypervisor Firmware now supports booting stock
Ubuntu images (including groovy and hirsute) Thanks to Akira Moroo for
addressing that.
Akira Moroo (5):
- pe: Use data directory entry to find base relocation table
- efi: Fix get_memory_map to update descriptor info
- tests: Cleanup fetch_disgk_images.sh
- tests: Run integration tests in parallel
- CI: Run CI integration tests in parallel
Rob Bradford (2):
- README: Update with details of security issues reporting
- tests: Add groovy integration test
0.3.0
Release 0.3.0 This release of Rust Hypervisor Firmware now supports booting stock Ubuntu images (tested with Focal and Bionic) which had become unsupported due to changes in SHIM. Thanks to Akira Moroo for addressing that. Changes since last release: Akira Moroo <[email protected]> (33): layout: Change entry to ram32_start for coreboot coreboot: Add initial coreboot support CI: Add fetch_disk)images.sh CI: Add integration tests for coreboot CI: Enable coreboot integration tests CI: Add coreboot dependencies pe: Fix to use i64 for relocation calculation pe: Change to load at ImageBase if specified pe: Fix base relocation block offset efi: Fixup RuntimeServices pointers on SetVirtualAddressMap efi: Add GlobalAlloc for heap allocation support efi: Add initial EFI variable support build: Update toolchain to nightly-2021-03-04 build: Update x86_64 and uart_16550 build: Remove const_in_array_repeat_expressions build: Allow unread fields in structs efi: Remove unnecessary cast fat, part: Fix non-string literal panic message fat: Add open from non-root directory support fat: Fix format efi: Add directory read support efi: Set appropriate attribute on get_info fat: Fix compare_short_name efi: Use C representation for FileInfo efi: Fix default device path efi: Implement FileProtocol.set_position efi: Increase MAX_ALLOCATIONS to 256 efi: Add alloc::Allocator::find_free_pages efi: Implement BootServices.load_image efi: Implement BootServices.start_image efi: Cleanup to reduce redundant code CI: Use current official Ubuntu images CI: Enable Ubuntu Focal on QEMU test Rob Bradford <[email protected]> (8): fat: Don't reference packed fields build: Bulk update dependencies build: Update integration tests to use latest CH release build: Add GitHub action for build, quality and testing build: Add GitHub action to handle release build: Remove Travis CI integration README: Update to reflect current functionality and usage build: Bump version number for release
Release 0.2.9
Changes since the last release: Akira Moroo <[email protected]> (6): build: Update toolchain to nightly-2020-10-01 Cargo: Update x86_64 from 0.11 to 0.12 Cargo: Update dependencies integration: Update cargo-xbuild to 0.6.2 efi: fix const_item_mutation loader: Use strip_prefix Joe Richey <[email protected]> (7): ram64: Remove linux64_start main: Reorganize main function integration: Cleanup scripts and Rust binary Fix r_efi pointer types target.json: Update data-layout build: Disable LTO in debug mode CI: Remove all references to cargo-xbuild Rob Bradford <[email protected]> (1): tests: Add integration testing Thank you to all our contributors!
Release 0.2.8
Changes since the last release: Joe Richey <[email protected]> (26): serial: Allow for nested logging paging: Put tables in `static mut` mem: Simplify MemoryRegion methods errors: Improve error types and implement Debug common: Move string manipulation functions to common.rs boot: Add structures for Info, E820, and Params fat: Add utility functions for loading data from files rust64_start: Read kernel boot params from %rsi efi: Use Info to setup allocator and EFI tables bzimage: Rewrite Linux Kernel Loading code main: Rewrite boot_from_device pvh: Add Structures for PVH Boot Protocol asm: Remove Serial debug statements layout: Cleanup and comment linker script pvh: Add code to read PVH Boot Protocol stucts pvh: Add code to transition from 32-bit to 64-bit pvh: Add PVH ELFNOTE layout: Improve development workflow layout: Add explict .stack section pvh: Move note definition/declaration to Rust gdt: Move GDT and GDT Definitions to Rust Fix typos and add comments serial: Use external uart_16550 crate Cargo: Update dependancies and toolchain version layout.ld: Only use spaces (not tabs) layout.ld: Remove EDK2's /DISCARD/ section Ning Yang <[email protected]> (1): README: fix cmd for run with cloud hypervisor Rob Bradford <[email protected]> (1): main, block: Remove device.reset() Thank you to all our contributors!
Release 0.2.7
Major refactoring of the core code and removal of the "spin" and "cpuio" crates replacing them with "x86_64". Thanks to Joe Richey <[email protected]>