Skip to content

v9.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Mar 18:30
· 1282 commits to refs/heads/main since this release
4506c49

What's Changed

  • Cargo.toml: Update paging to v4 @makubacki (#316)
    Change Details
      ## Description

    Allows build with dependencies already using v4.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    • cargo make all

    Integration Instructions

    • Use paging v4


  • Add cargo-deny [Rebase \& FF] @makubacki (#312)
    Change Details
      ## Description

    Adds a new cargo tool to the dev cycle:
    https://github.com/EmbarkStudios/cargo-deny

    Can be installed with cargo stall cargo-deny --version ^0.17.
    (latest cargo-deny build (0.18) requires Rust 1.85+)

    Adds a deny.toml config file to set up configuration for the repo.

    Main items in the config file:

    • Allowed licenses (SPDX identifiers):

      • Apache-2.0,
      • BSD-2-Clause-Patent
      • MIT
    • Licenses enforced to the above list for all dependencies with the following exceptions that will be followed up on:

      • managed -> Using 0BSD license
      • unicode-ident -> Using Unicode-3.0 license
    • Rust security advisories against all dependencies enforcee with the following current exception:

    • tiny-keccak crate explicitly added to the deny list since we have already identified it is old, unmaintained, and not secure via component governance.

    • Redudant crate check enforced for all crates in the graph wiith the following exception:

      • bitflags. Most crates have moved to the newer version, but x86 is still using the older version causing the duplication. Following up with the rust-x86 project to accept an outstanding dependabot PR that will update their version.

    The exact cargo-deny command used in the repo can also be run with cargo make deny.

    The CI workflow file will now run cargo-deny with default settings which runs the check command.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    • cargo deny check
    • cargo make deny

    Integration Instructions

    • N/A - Affects local repo build and CI


  • Fix initial free block attributes @joschock (#311)
    Change Details
      ## Description

    Fixes an issue where the portion of the initial free space not occupied by the initial GCD slice had incorrect WB+XP attributes. Free block should have WB+RP attributes.

    This resolves a memory allocation failure observed in the boot loader due to free-block attribute inconsistency.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Initial GCD inspection: observed that first free block no longer has incorrect attributes. Observed that boot loader-reported memory allocation failures resolved.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Integrate uefi-sdk v3.0.0 @makubacki (#313)
    Change Details
      ## Description

    Includes changes for the uart path being modified as a breaking change in v3.0.0.

    Note: Will pick up changes from the uefi-core v10.0.1 release that match the
    UART path changes.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    • cargo make all

    Integration Instructions

    • N/A


  • Update Display Impl for GCD @joschock (#310)
    Change Details
      ## Description

    Updates display implementation for SpinLockedGcd to actually dump the GCD.

    Before:

    18:00:59.229 : INFO - GCD - After memory init:
    18:00:59.245 : Some(GCD { maximum_address: 1099511627776, memory_blocks: Some(Rbt { capacity: 4096, len: 29, height: 11 }) })
    18:00:59.245 : Some(IoGCD { maximum_address: 65536, io_blocks: None })
    

    After:

    01:07:15.851 : INFO - GCD - After memory init:
    01:07:15.867 : GCDMemType Range                             Capabilities     Attributes       ImageHandle      DeviceHandle
    01:07:15.867 : ========== ================================= ================ ================ ================ ================
    01:07:15.883 : NonExist   0000000000000000-00000000000fffff 0000000000000000 0000000000000000 0x00000000000000 0x00000000000000
    01:07:15.883 : MMIO       0000000000100000-000000004fffffff c700000000027001 0000000000000001 0x00000000000000 0x00000000000000
    01:07:15.899 : NonExist   0000000050000000-0000000053ffffff 0000000000000000 0000000000000000 0x00000000000000 0x00000000000000
    01:07:15.915 : MMIO       0000000054000000-000000007fffffff c700000000027001 0000000000000001 0x00000000000000 0x00000000000000
    
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    See above log dumps.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Cleanup internal use of efi::Status in favor of Result\<\_, EfiError> @cfernald (#304)
    Change Details
      ## Description

    Changes the internal use of the C-style efi::Status for a rust style Result<_, EfiError>. This allows for better pattern matching and internal consistency with the rest of the codebase.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Tested on QEMU

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • PagingAllocator: Store GCD Reference in Struct @os-d (#303)
    Change Details
      ## Description

    In order to facilitate easier testing and extensibility, have the PagingAllocator struct accept a GCD reference in the new() function and call allocate operations on it instead of the static mut GCD directly.

    Closes #298.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Q35 and SBSA boot to Windows.

    Integration Instructions

    N/A.

      </blockquote>
      <hr>
    </details>
    
  • Remove const-random crate @Javagedes (#302)
    Change Details
      ## Description

    As specified in #296, the goal of removing ahash was actually to remove the usage of the const-random (more specifically tiny-keecak) crate. However, #301 immediately re-used the const-random crate to generate the seed. This commit updates the seed to be the current OS time.

    To remind, this does not need to be cryptographically secure. This is simply to enforce opacity regarding what the handle value will be so that consumers cannot make assumptions based on the handle values.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Boot to UEFI Shell for Q35.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • dxe\_core: Replace ahash with Xorshift64\* based hasher @Javagedes (#301)
    Change Details
      ## Description

    replaces the ahash crate with a custom hasher based off of Xorshift64* for generating a unique number for each handle.

    closes #296

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Booted to shell on qemuq35

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • dxe\_core: Make Dev-dependencies set via path @Javagedes (#300)
    Change Details
      ## Description

    This is a solution specified via crate-ci/cargo-release#829 for broken ordering when attempting to publish multiple crates in the repository.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    N/A

    Integration Instructions

    N/A




  • Update .git-blame-ignore-revs @Javagedes (#294)
    Change Details
      ## Description

    Update .git-blame-ignore-revs to ignore #287

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    N/A

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Cargo.toml: Bump uefi-dxe-core major version to 9 @makubacki (#299)
    Change Details
      ## Description

    Crate was manually pushed for this release.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    <Describe the test(s) that were run to verify the changes.>

    Integration Instructions

    <Describe how these changes should be integrated. Use N/A if nothing is required.>




🚀 Features & ✨ Enhancements

  • [REBASE\&FF] Add const initialization support for Rbt and Bst @Javagedes (#315)
    Change Details
      ## Description

    Adds const initialization support for the Rbt and Bst, which allows the GCD to no longer need to wrap them in Option, which leads to a lot of boilerplate in the GCD that is able to be removed.

    This does not change any logic in the GCD itself.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Continued boot to UEFI Shell.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

Full Changelog: v9.0.0...v9.1.0