v9.1.0
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
pagingv4
-
Add cargo-deny [Rebase \& FF] @makubacki (#312)
Change Details
## Description
Adds a new cargo tool to the dev cycle:
https://github.com/EmbarkStudios/cargo-denyCan be installed with
cargo stall cargo-deny --version ^0.17.
(latestcargo-denybuild (0.18) requires Rust 1.85+)Adds a
deny.tomlconfig 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-> Using0BSDlicenseunicode-ident-> UsingUnicode-3.0license
-
Rust security advisories against all dependencies enforcee with the following current exception:
RUSTSEC-2024-0436(https://rustsec.org/advisories/RUSTSEC-2024-0436.html)
-
tiny-keccakcrate 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, butx86is still using the older version causing the duplication. Following up with therust-x86project 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-denywith default settings which runs thecheckcommand.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo deny checkcargo 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-corev10.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::Statusfor a rust styleResult<_, 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
ahashwas actually to remove the usage of theconst-random(more specificallytiny-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