v6.0.2
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
Displayfor 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_callbackto 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