v7.1.0
What's Changed
-
release workflow update to run on github release @Javagedes (#225)
Change Details
## Description
Updates the release workflow to be trigger by a github repository release event. As before, this workflow will publish all crates with the version number matchign the release tag. The main difference is that instead of pushing a commit directly to the default branch of the repository, it will instead create a new branch and open a pull request.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Commented out the dry run and release steps, and validated that the workflow had all necessary permissions to get the release tag from the triggering release, create a branch, push the branch, and generate a PR for that branch.
Integration Instructions
crates publishing will now be done automatically when a github release is performed, rather than running the workflow manually. The auto-generated PR will need to be merged in after the fact.
-
dxe\_core: Use Type-State pattern @Javagedes (#224)
Change Details
Convert the dxe_core Core struct to use the Type-State pattern to prevent allocations for the short period of time before the global allocator is fully initialized instead of having two completely separate structs for the two different states.
The Type-State pattern is a way to gate functionality to certain states by using the type system and phantom data to implement functions for certain states and prevent them, at compile time, from being used in other states.
Description
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
CI passes and the platform builds with no integration steps
Integration Instructions
N/A
</blockquote> <hr> </details>
-
remove cargo-tarpaulin proc macro crate workaround @Javagedes (#218)
Change Details
## Description
Running host based unit tests on proc-macro crates was broken as noted in xd009642/tarpaulin#1642. This has been resolved in the 0.31.5 release of cargo-tarpaulin. This commit removes the workaround and updates the tool.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
CI now passes while also running host based unit tests on the
uefi_test_macroproc marcro crate.Integration Instructions
Developers need to update their local version of cargo-tarpaulin to 0.31.5 or greater.
</blockquote> <hr> </details>
-
Page Pool Size Update @os-d (#221)
Change Details
## Description
Update the page pool to begin with 32k entries to avoid FSB lock re-entry. This is larger than the largest observed size needed for pages in the page table.
Another approach is being explored that makes the preallocation of pages for the page pool unneccesary, but in the meantime this change is required to avoid the re-entrant lock in Q35 and SBSA today.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Booted on Q35 and SBSA with paging updates.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
More perf fixes: macros @berlin-with0ut-return (#219)
Change Details
## Description Perf macros are currently incorrectly scoped and have some syntax errors. These have been fixed. In addition, improve macro ergonomics through re-export of `function!` from `mu_rust_helpers`.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
I instrumented these macros into dispatcher code for testing. They now compile and provide the correct output when instrumented.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
gcd: Accommodating EfiError @HappyCoding-2025 (#215)
Change Details
The GCD currently defines its own error codes. However, it constantly needs to convert to EfiError. I believe that this is a legacy of the GCD being one of the first components written.
Follow the rest of dxe_core behavior and use EfiError instead of custom error codes. Custom error codes should be used for non-UEFI specific reusable crates.
How This Was Tested
Code was run and tested in QEMU emulator to make sure that it boots up fine.Coverage was good
Cargo make test also was good.
🐛 Bug Fixes
-
Minor fixes for PerfEntry code @berlin-with0ut-return (#217)
Change Details
## Description There is a bug in the current perf code where PerfStart and PerfEnd entries are not handled correctly.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
This path now matches the C code (
mu_basecore) and has been verified to give the correct results in the FPDT.Integration Instructions
N/A
📖 Documentation Updates
-
dxe\_core/dispatcher: Explain a priori file decision [Rebase \& FF] @makubacki (#223)
Change Details
## Description
Adds a section to explain why the Rust DXE Core does not support a priori files.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- N/A
Integration Instructions
- N/A
Full Changelog: v7.0.1...v7.1.0