Skip to content

Releases: cloud-hypervisor/rust-hypervisor-firmware

0.5.0

30 Nov 04:56
Compare
Choose a tag to compare

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

@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

  • Add AArch64 build section by @fdr in #243

@MrXinWang

  • dev_cli.sh: Fix kvm directory path of the build command by @MrXinWang in #242

@edigaryev

@Lencerf

  • virtio-pci: use 2 32-bit writes for 64-bit fields by @Lencerf in #306

@rveerama1

  • Systemd related content has moved to UAPI website by @rveerama1 in #308

@thomasbarrett

@acarp-crusoe

  • aarch64/layout: Increase aarch64 system memory layout to 2TB. by @acarp-crusoe in #355

New Contributors

Full Changelog: 0.4.2...0.5.0

0.4.2

16 Nov 14:58
Compare
Choose a tag to compare

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

19 Aug 08:51
Compare
Choose a tag to compare

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 as PartialEq
  • 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

14 Apr 14:21
Compare
Choose a tag to compare

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() to get_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

23 Jul 08:49
Compare
Choose a tag to compare

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

28 Apr 14:02
Compare
Choose a tag to compare

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

24 Mar 09:47
Compare
Choose a tag to compare
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

02 Oct 15:35
Compare
Choose a tag to compare
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

18 May 16:34
Compare
Choose a tag to compare
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

02 Mar 17:10
Compare
Choose a tag to compare
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]>