Skip to content

v6.0.2

Choose a tag to compare

@github-actions github-actions released this 20 Dec 19:21
· 1394 commits to refs/heads/main since this release
8ae2667

What's Changed

  • rust-tool-cache: use cargo binstall @Javagedes (#196)
    Change Details
      ## Description

    cargo install has shown to be an unreliable way to compile and install
    tools for any project that does not use the current latest version of
    rust. This is because some tools allow for relaxed versions of their
    dependencies, which will cause cargo to attempt to use the latest
    version of the dependency, which may not be compatible with the
    version of rust being used in the repository.

    This change switches to using cargo binstall, which simply downloads
    the compiled tool, with a fallback to cargo install if the tool does
    not support binstall.

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

    How This Was Tested

    Validated installing tools continues to work when cache fails. Successful run here: https://github.com/pop-project/uefi-dxe-core/actions/runs/12378250581/job/34549734056?pr=196

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Add allocation stat tracking, Memory Type info, and fix a number of allocation subsystem bugs. [Rebase \& FF] @joschock (#181)
    Change Details
      ## Description

    Adds a number of enhancements to the allocation subystem:

    • Add support for tracking allocation stats (allocate/free call counts, number of currently consumed pages, reserved space)
    • Add support the Memory Type Info configuration table.
    • Implement Display for GCD to dump GCD in a table format

    Fixes a number of bugs in the allocation subsystem:

    • Fix an issue where the incorrect non-owning allocator could free a page. This could cause a page in another allocators preferred range to be freed without ownership, resulting in pages claimed in other allocators "buckets"
    • Fix an issue where inconsistent allocation strategies were used in different parts of the allocator, leading to inconsistent allocation patterns and messing up memory buckets.
    • Allow directed address page allocation to be allocated in GCD types other than SystemMemory (e.g MMIO).

    Refactored the allocation subsystem initialization:

    • Added a "memory_type" field to the FixedSizeBlockAllocator so that it can know the memory type without lookup by handle.
    • Refactored page_change_callback to supply a mutable reference to the allocator responsible for the page change; this allows access to allocator state in the callback.
    • Marked a few useful but unused routines with "allow dead code"
    • Moved allocation hob processing into allocator::init_memory_support() routine so that initial allocations can be properly accounted for in stat tracking.
    • Reworked allocation hob processing logic to better handle/log common scenarios where allocation hobs are not processed - such as duplicate ranges reported by both Memory Allocation Hob and corresponding Memory Allocation Module, or FV hob reported for a region not backed by MMIO.
    • Adjusted Logging for memory buckets.

    This is a fairly sizable PR, recommend review on a commit-by-commit basis. All individual commits build and pass unit tests.

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

    How This Was Tested

    Passes existing and new tests; manual evaluation of memory allocation processing and memory type info table on Q35 plus testing on real hardware prototypes.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

Full Changelog: v6.0.1...v6.0.2