v2025110002.0.0
What's Changed
-
Drop mu\_pi and mu\_rust\_helpers crate dependencies (and fix build due to incoming r-efi v7) [Rebase \& FF] @makubacki (#907)
Change Details
## Description
A series of commits with two goals:
mu_rust_helpersmoved to r-efi v7 in eefef09. The minor version was updated which caused many crates depending onmu_rust_helpersto pick up the change automatically per semantic versioning while there other dependencies stayed on r-efi v6. This could lead to type mismatches (and did in this repo). So, this prevents that.- Support the longer-term goal of deprecating
mu_rust_helpersandmu_pi(as described in #906) by removing their usage in this repo.
MuTelemetryHelperLib: Fix r-efi v7 GUID constant conflict
mu_rust_helpers re-exports mu_uefi_guid, which updated to r-efi v7.
Its
guid::ZEROandguid::CALLER_IDconstants are compiled against
r-efi v7, while patina (and the rest of the tree) remain on r-efi v6,
producing mismatched-type errors when those constants are used in v6
contexts.This makes the move to the patina crate's GUID constants. The patina
version used here is still on r-efi v6, so itspatina::guids::ZERO
andpatina::guids::CALLER_IDconstants are compiled against r-efi
v6.This is also a step toward removing the mu_rust_helpers dependency
from this crate.
MuTelemetryHelperLib: Use patina instead of mu_pi
Replaces the mu_pi status code types and error-code constants with the
equivalent definitions from the patina crate (patina::pi::status_code
andpatina::pi::protocols::status_code).This removes the mu_pi dependency from the crate and the workspace.
MsWheaPkg: Remove mu_rust_helpers dependency
Makes the remaining changes needed to replace mu_rust_helpers with
the patina crate. This is part of the effort to remove mu_rust_helpers
as it is being deprecated.
Remove mu_rust_helpers as a workspace dependency
Makes the remaining changes needed in UefiHidDxeV2 to use
patina::function instead of mu_rust_helpers::function so the
crate dependency can be removed from the workspace.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Run cargo make tasks
- CI
Integration Instructions
- N/A - Replace
mu_rust_helpersandmu_pifunctionality with equivalent functionality from thepatinacrate. Thepatinacrate was already a dependency.
-
AdvLoggerPkg: Gate hardware port writes at OS runtime @chaokai-ching (#902)
Change Details
## Description
AdvancedLoggerWriteunconditionally wrote debug output to the hardware serial
port at both boot time and OS runtime (after ExitBootServices). Some platforms'
serial implementations cannot be safely called at OS runtime.This change adds an opt-in FeatureFlag PCD
PcdAdvancedLoggerHdwPortRuntimeDisable(default FALSE):- Default (FALSE): behavior is unchanged — hardware port writes remain
enabled at runtime, so existing platforms are unaffected. - TRUE: a platform whose serial cannot be safely called after
ExitBootServices restricts hardware port writes to boot time only, while
early-boot and boot-time serial output is preserved.
Runtime is detected via the logger info block's
AtRuntimefield when
available. The DXE runtimeAdvancedLoggerLibinstance clears its logger info
pointer at ExitBootServices, so it consults a module-scoped
ADVANCED_LOGGER_RUNTIMEbuild flag plus agAdvancedLoggerAtRuntimeflag to
distinguish post-EBS runtime from early boot when the logger info block is NULL.- Impacts functionality? Only when the new PCD is set TRUE (default FALSE = no change)
- Impacts security?
- Breaking change? No — default preserves existing behavior
- Includes tests? Not included; hardware-port gating path has no existing host-test coverage. Can add a GoogleTest if desired.
- Includes documentation? PCD documented in AdvLoggerPkg.dec
How This Was Tested
Built an ARM AARCH64 platform (DEBUG); all
AdvancedLoggerLibinstances
compile. Verified on ARM AARCH64 hardware with a temporary driver that forces a
serial write on the first post-SetVirtualAddressMap runtime call:- PCD default (FALSE): the firmware faults on the runtime serial write
(reproduces the unsafe-at-runtime behavior). - PCD TRUE: the runtime write is suppressed and the system boots cleanly,
while boot-time serial output is unaffected.
Integration Instructions
None required by default. Platforms whose serial implementation cannot be
called safely at OS runtime should set
gAdvLoggerPkgTokenSpaceGuid.PcdAdvancedLoggerHdwPortRuntimeDisableto TRUE.
- Default (FALSE): behavior is unchanged — hardware port writes remain
-
[REBASE\&FF] .azurepipelines: Add CLANGPDB CI @Javagedes (#896)
Change Details
## Description
Add CI that specifically builds each package in DEBUG and RELEASE with CLANGPDB on both Windows and Linux. Applies necessary changes to compile all packages with CLANGPDB.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Windows: https://dev.azure.com/projectmu/mu/_build/results?buildId=111589&view=results
Linux: https://dev.azure.com/projectmu/mu/_build/results?buildId=111590&view=resultsIntegration Instructions
N/A
-
.github: Switch Mu PR Validation workflow to main branch @makubacki (#897)
Change Details
## Description
These workflow files were previously using a dedicated branch for development of the Mu PR Validation workflow. It has been stable for a couple of months now, so we can switch back to using the main branch which has the latest changes.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Compare branch content (
main<->add_mu_pr_val_workflow_e2e_val)
Integration Instructions
- N/A. Only affects GitHub repo workflow.
⚠️ Breaking Changes
-
Patina 22.1.0 integration (r-efi 7) [Rebase \& FF] @makubacki (#908)
Change Details
## Description
Two commits to integrate the latest patina v22.1.0 (and fix the build).
Cargo.toml: Add AdvLoggerPkg/Crates/RustAdvancedLoggerDxe as a member
Library crates are currently being listed in the
memberssection, so
the line about binary crates is removed.RustAdvancedLoggerDxe is currently being built as a dependency, but
this commit adds it as a member for consistency with other crates.
Bump r-efi to 7 to match patina's update
patina 22.1.0 moved its r-efi dependency up to version 7, but the
workspace was still pinned to ^6.Cargo then pulled in both r-efi 6 and 7 at the same time, and since
types from different major versions don't unify, that broke
cargo make checkandcargo make test.This moves the workspace to r-efi 7.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- cargo make tasks
- Repo CI
Integration Instructions
- If library crates are used from this repo, it is recommended to move to r-efi 7.
🐛 Bug Fixes
-
MsCorePkg: Fix double components specifier for AARCH64 @makubacki (#901)
Change Details
## Description
[Components.AARCH64, Components.AARCH64]should just be[Components.AARCH64]inMsCorePkg.dsc.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Local MsCorePkg CI build
Integration Instructions
- N/A
-
MsCorePkg: Remove the non-existent header files in aarch64 @qaz6750 (#899)
Change Details
## Description
As stated in #895, this header file no longer exists, and the issue has been fixed in X64. However, Aarch64 was overlooked, so it should be applied to AArch64 as well.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
Full Changelog: v2025110001.0.0...v2025110002.0.0