Releases: microsoft/mu_plus
v2025110000.0.4
What's Changed
-
Skip Mu PR validation for PRs targeting non-default branches @makubacki (#872)
Change Details
## Description
Because mu-pr-validation.yml is in the default branch (release/202511) and runs on a workflow_run trigger for the CodeQL workflow where the CodeQL workflow runs for all release branches, the Mu PR Validation workflow will run for all PRs targeting any release branch.
Because mu_tiano_platforms is only compatible with default branches, we want to skip Mu PR Validation targeting those non-default branches.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Verified for PRs against the default on non-default branch on my fork.
Non-Default Case (Skip)
Default Case (Run)
Integration Instructions
- N/A
-
MsGraphicsPkg/SwmDialogsLib: Show OSK after dialog rendering completes @makubacki (#866)
Change Details
## Description
Moves the
ShowKeyboard()call after the canvasDraw()call in theKEYFOCUShandling block of PasswordDialog and SemmUserAuthDialog.Previously, the on-screen keyboard was displayed before the dialog finished rendering at its shifted position.
By deferring
ShowKeyboard()until afterDraw()completes, the dialog is fully painted in its final position before the keyboard appears.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Go to the "Security -> UEFI password" page
- In the "Enter password" screen, touch the blank area on the screen
- Watch the on-screen keyboard load
Integration Instructions
- N/A
-
mu-pr-validation-pending.yml: Temporarily disable commit status updates @makubacki (#870)
Change Details
## Description
The Mu Automation GitHub app requires a permission update to be accepted by a microsoft org admin. Until that happens, disable the calling the GitHub API to update the commit status.
This will still run validation and post PR comments. The pass/fail result just won't be reported in the status check area of the PR until the permission is allowed.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- N/A
Integration Instructions
- N/A
-
.github: Add Mu PR Validation workflow @makubacki (#865)
Change Details
## Description
Adds workflows to run QEMU-based platform validation on pull requests to mu_plus. This includes:
-
mu-pr-validation.yml: The main workflow that performs the actual QEMU validation, including building and booting. -
mu-pr-validation-pending.yml: A workflow that posts an immediate "pending" notification on a pull request when it's pushed, indicating that QEMU validation is waiting for CI to complete. This is broken out to its own workflow to use thepull_request_targettrigger (access to secrets on PRs from public forks) while minimizing the amount of code that runs with those elevated permissions. -
mu-pr-validation-post.yml: A workflow that posts the results of the QEMU validation run to the pull request once the validation is complete.
Notes
This workflow differs slightly from the Mu Basecore equivalent file in that it is triggered by the
CodeQLworkflow instead of theCLANGPDB Package CIworkflow used there. The reason is that theCLANGPDB Package CIworkflow was not added to mu_plus since mu_plus requires Rust code to be built and that workflow doesn't include Rust build support. The CodeQL workflow in mu_plus serves a similar purpose by verifying local package compilation prior to attempting a mu_tiano_platforms build with the changes.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Ran the workflow under various conditions on my mu_plus fork.
Note that the "boot times" are not precise. They are the total time for the
--flashonlystep to run including stuart overhead. However, they are not too far off from the boot time and provide the ability to get a relative sense of perf impact.
PENDING STATE (when the workflow is waiting for CI to finish)
IN PROGRESS (building / booting QEMU FW with the change)
Granular status updates (see ending text):
SUCCESS
Integration Instructions
- N/A - Only impacts PR validation in this repo
-
Full Changelog: v2025110000.0.3...v2025110000.0.4
v2025110000.0.3
What's Changed
-
[REBASE \& FF] Copy FltUsedLib to MsCorePkg @os-d (#864)
Change Details
## Description
FltUsedLib is a library that has a single line, adding a reference to
_fltused, which is needed by MSVC and clang when building floating point code.FltUsedLib is only used in mu_plus, so in order to reduce deltas from edk2, it is moved to mu_plus. This commit then updates references in mu_plus to this new library.
A PR will be put up to mu_basecore to drop the library after this merges.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Build testing.
Integration Instructions
Platforms should update to
FltUsedLib|MsCorePkg/Library/FltUsedLib/FltUsedLib.infin their DSCs. This change is not a breaking change, but the removal in mu_basecore will be.</blockquote> <hr> </details>
-
Global: Remove backport workflow. @apop5 (#859)
Change Details
Description
The switch from dev/release to just relase left the backport workflow in the repo. Though it will
not be triggered, dependabot will continue
to attempt to update the github actions used.Remove the workflow to reduce unused workflows and to prevent dependabot from attempting to update.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
Full Changelog: v2025110000.0.2...v2025110000.0.3
v2025110000.0.2
What's Changed
-
UefiTestingPkg: MpManagement clangpdb compatibility @apop5 (#858)
Change Details
Description
Make the MpManagement FunctionalTest compile with clangpdb.
Correct some uninitialized variable paths, and use macros for
loading variables it registers in assembly.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
ClangPdb Build.
Integration Instructions
No integration necessary.
Full Changelog: v2025110000.0.1...v2025110000.0.2
v2025110000.0.1
What's Changed
-
UefiTestingPkg: FlatPageTableLib: Include Public Page Table Defs @os-d (#857)
Change Details
## Description
In mu_basecore commit 5ba3221588832c47249a6db1f38b490f034e07ca the X86 Page Table definitions were moved from CpuPageTableLib to MdePkg. Consume these from the new location and define a macro that remained in the private header in edk2.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Built.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
Replace memcpy with CopyGuid. @jaykrell (#852)
Change Details
There is a link error here, due to struct assignment being memcpy with some compilers.
Replace struct assignment with CopyGuid.
Full Changelog: v2025110000.0.0...v2025110000.0.1
v2025110000.0.0
First release compatible with mu_basecore release/202511
Please view Readme.rst for release information.
v2025020003.0.3
What's Changed
-
AdvLoggerPkg: Check for migrated buffer on ReadyToLock notification @makubacki (#833)
Change Details
## Description
- Adds a ReadyToLock handler to ensure that any buffer migration that may not have occurred prior to that point happens at ReadyToLock.
- Aligns Traditional MM and Standalone MM code on the ReadyToLock boundary.
- Also ensures all calls to check for a new logger are gated on PcdAdvancedLoggerFixedInRAM to avoid unnecessary checks when the logger won't be migrated.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Boot Traditional SMM virtual machine platform to Windows with change
- Boot Standalone MM virtual machine platform to Windows with change
- Boot Intel platform to Windows with change (Traditional and Standalone MM)
- Dump log at EFI shell
- Dump log uses the latest decode Python script in Windows
Integration Instructions
- N/A
🐛 Bug Fixes
-
SwmDialog: Fix missing NULL terminator for UninstallMultipleProtocolInterfaces @joschock (#831)
Change Details
## Description
SwmDialogsDestructor calls UninstallMultipleProtocolInterfaces() which takes a Null-terminated list of <guid, interface> pairs to uninstall. However, it fails to include the NULL terminator, which causes an attempt to uninstall stack garbage. This PR adds the NULL termination to the call to correctly terminate the list.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Unloaded a driver before/after the fix, observed that attempt to uninstall non-existent protocol no longer occurs.
Integration Instructions
N/A
Full Changelog: v2025020003.0.2...v2025020003.0.3
v2025020003.0.2
What's Changed
-
AdvLoggerPkg: Initialize structures in LineParserTestApp @makubacki (#828)
Change Details
## Description
Logger info structures are not zeroed and initialized right now, causing garbage data to be read in some fields and impact test results.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Run LineParserTestApp on QEMU Q35
Integration Instructions
- N/A
Full Changelog: v2025020003.0.1...v2025020003.0.2
v2025020003.0.1
What's Changed
-
[REBASE \& FF] Fix Memory Tests to Run on Patina @os-d (#825)
Change Details
## Description
See individual commit descriptions for full details. This changeset updates the paging audit simple test, full audit, and memory protections test app to run on Patina.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested on physical Intel, Q35, and SBSA.
Integration Instructions
Ensure the platform is producing the memory protection HOB with:
DxeSettings.HeapGuardPolicy.Fields.UefiPageGuard = 0; DxeSettings.HeapGuardPolicy.Fields.UefiPoolGuard = 0;
Until Patina enables those features, otherwise those tests will execute and will fail due to no guard pages enabled.
This is a breaking change because it depends on mu_basecore version >= v2025020003.0.2 as some header definitions are depended on in that release.
-
Update Adv Logger Info to V6 [Rebase \& FF] @makubacki (#826)
Change Details
## Description
AdvLoggerPkg: Define a single advanced logger info version
Currrently, ADVANCED_LOGGER_INFO_VER is being used to set and check
the version field in the ADVANCED_LOGGER_INFO struct.This more clearly defines that version to be associated with the
log info structure and breaks out the Hardware Level version to a
macro (ADVANCED_LOGGER_INFO_HW_LVL_SUPPORTED_VER) that clearly shows
that is an identifier for hardware level support being present in
the logger info version.
AdvLoggerPkg: Bump ADVANCED_LOGGER_INFO_VER to 6
Updates the major version to 6 to account for the
NewLoggerInfoAddress
field that was added toADVANCED_LOGGER_INFO.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- AdvLoggerPkg CI build
- AdvLoggerPkg QEMU Q35 boot to EFI shell and dump log with EFI app
- Intel physical platform boot to OS and decode log (in progress)
- Arm platform test (todo)
Integration Instructions
- Ensure all adv logger code is updated to the same version and you're using the latest version of the applications in AdvLoggerPkg.
-
AdvLoggerPkg: DecodeUefiLog handle frequency errors. @apop5 (#824)
Change Details
## Description
When calling DecodeUefiLog, if the system was not able to provide a frequency in the log, it will be reported as 0. With no verification check of a zero frequency, DecodeUefiLog would attempt a divide by zero when converting time to nano seconds.
Add a check that prevents divide by zero. This will report times of 0 for all timestamps in the decoded log.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
On a physical platform where no timer frequency was reported, encountered a python exception.
After change, log was correctly retrieved and displays a timestamp of 0.Integration Instructions
No integration necessary.
-
Refactor HID Keyboard Reset support @joschock (#823)
Change Details
## Description
This PR changes how CTRL-ALT-DEL resets are handled by the HID stack. Previously, they were handled by the lower layer key processing code; but this caused them to be handled at an implementation-defined TPL based on what TPL the input reports are generated at by the HID I/O layer.
This change moves the CTRL-ALT-DEL to use the existing SimpleTextInEx key registration infrastructure to handle the reset logic, effectively moving the reset handling up to a higher level of abstraction.
This also simplifies disabling this capability behind a feature flag should it be desirable in the future to separate reset logic from the HID stack entirely.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Verified CTRL-ALT-DEL resets system from UEFI shell and that reset occurs at TPL_CALLBACK.
Integration Instructions
N/A
-
Configure watchdog interrupt for ARM platform @rohansenUSA (#820)
Change Details
## Description
When using
MpManagementto suspend all cores to a C-state that powers down the core the non-secure watchdog is being used to wake up a core after a certain amount of time.On ARM reference platforms the non-secure watchdog interrupt is a level interrupt and active high. and this PR configures the interrupt trigger accordingly. Also, when all cores are powered down interrupt
IRM (Interrupt Routing Mode)can't be used and the interrupt have to be routed to a specific core using the affinity fields. This PR programs the interrupt to go to theBSP.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested on custom Microsoft hardware.
Following use case was run:
- Program watchdog timer.
- Power down cores.
- Watchdog interrupt to wake up BSP.
Integration Instructions
N/A
</blockquote> <hr> </details>
-
MsWheaPkg: Change debug prints to avoid confusion @kuqin12 (#819)
Change Details
## Description
The current debug output labels all
HwErrRecentries as error records. While technically accurate given the “Hardware Error Record” naming, this can be misleading, as some entries are informational rather than actual errors.This change updates the debug output to use “telemetry record” instead, reducing the risk of confusion.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Debug print change only, non-functional.
Integration Instructions
N/A
-
Rendering Engine Fixes [Rebase \& FF] @makubacki (#818)
Change Details
## Description
MsGraphicsPkg/RenderingEngineDxe: Defensive checks for global GOP pointer
Verify
mParentGopis valid before use.
MsGraphicsPkg/RenderingEngineDxe: Defensive checks for global GOP pointer
Verify
mParentGopis valid before use.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- CI, build and verify GOP start and operation in QEMU Q35, and
"disconnect -r"succeeds
Integration Instructions
- N/A
-
Revise OSK error messages @joschock (#817)
Change Details
## Description
Present OSK messages include the error level (e.g. "[ERROR] OSK: ").
This PR removes those tags. This allows better filtering of logs for actual actionable errors, as well as avoiding redundancy when interpreted by a log viewer that also tags each message according to the error level.
Debug message changes only, no functional change.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Booted system, observed error messages changed as expected.
Integration Instructions
N/A
-
AdvLoggerPkg: Fix memory bucket stability @makubacki (#799)
Change Details
## Description
Right now, the PEI Core instance of AdvancedLoggerLib will always allocate the logger buffer as
EfiRuntimeServicesData. This means it is not allocated into the DXE Core managed RT Services Data memory bucket. The DXE Core instance of AdvancedLoggerLib either continues to use this buffer it is provided or allocates a newEfiReservedMemoryTypebuffer.This change always allocates a
EfiReservedMemoryTypebuffer in the DXE Core instance to ensure it is allocated from the reserved memory type buckets setup by the DXE Core. The PEI Core logger buffer is updated to beEfiBootServicesDataso it does not affect...
v2025020002.0.2
What's Changed
- Dev branch tear down [Rebase & FF] by @apop5 in #753
- Remove unused Rust dependencies @makubackiin #754
Full Changelog: v2025020002.0.1...v2025020003.0.0
release-v2025020002.0.1
What's Changed
🐛 Bug Fixes
-
[Rebase \& FF] Fix MP management tests @kuqin12 (#748)
Change Details
## Description
The old implementation worked with 2405 release branches, but failed to pass certain cases with 2502.
This change also fixes a few issues with the MP management module:
- Removes the original code path that will directly invoke the MP service protocol from AP routines. This is specifically not allowed according to the specification.
- Fixes an issue if HCR enables the exception trapping, while the VBAR is left empty, which will cause the system to fault into EL3.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
This was tested on QEMU SBSA and passed all tests in MpManagement test application.
Integration Instructions
N/A
-
Fixed DecodeUefiLlog.py encoding in log output and improve readability @kanechen66 (#749)
Change Details
## Description
Found an exception issue on our project, the bios could print something in unicode and cause the tool exception here is the error log
- Tool reads 841 variables worth of log successfully - Fails during log output processing with UnicodeEncodeError - Error: 'charmap' codec can't encode character '\ufffd' in position 67: character maps to <undefined>- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Tested based on the bios would print unicode and check the log is saved successfully:
PS C:\DecodeUefiLog> python .\DecodeUefiLog.py -o 567.log Reading the Advanced Logger log Found 841 variables worth of log 24396 lines written to 567.log Log completeIntegration Instructions
N/A