Releases: microsoft/mu_plus
v2023110000.0.6
What's Changed
-
Relax report length requirements @joschock (#455)
Change Details
## Description
This PR brings in two fixes to support a wider variety of devices, some of which might not be completely self-consistent:
- Allow report lengths that don't match the report descriptor. Reports that are shorter than the Report Descriptor specifies will be processed for whatever fields are fully present. Reports that are longer than the Report descriptor specifies will simply ignore the extra bytes in the report.
- Move away from using
signal_event
to force keyboard layout initialization, and install call the layout change routine directly. This avoids introducing sequencing issues based on the TPL that the keyboard is being initialized at, resulting in more deterministic behavior.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Rust unit tests updated to cover new functionality all pass. Functional testing on hardware with the changes also passes.
Integration Instructions
N/A
</blockquote> <hr> </details>
📖 Documentation Updates
-
Moving the global variable from header file into library instances @kuqin12 (#473)
Change Details
## Description
The current implementation of instantiating global variables will make each c file that includes this header to carry a copy of such variable, which is space redundant.
This change removed the variable into the single module that uses it and removed the structure it defines. The function descriptions are also updated.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
This is a non-functional change.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023110000.0.5...v2023110000.0.6
v2023110000.0.5
What's Changed
-
Put log entries into HOBs in PEI during log buffer initialization @kuqin12 (#466)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
The current implementation will directly allocation pages through PEI services when Advanced logger is not initialized. This cause an issue of permanent loop if/when there are prints from the allocation routine.
This change will create a hob during this interim state and log messages to hobs temporarily and coalesce the hobs after the allocation is finalized. This will reduce the print restriction down to hob creation only.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
This is tested on QEMU SBSA as well as Q35. Both booted to UEFI shell.
Integration Instructions
N/A
</blockquote> <hr> </details>
- Impacts functionality?
-
Update the Mem Map and MAT Shell Test to Support RUNTIME\_PAGE\_ALLOCATION\_GRANULARITY Alignment @os-d (#460)
Change Details
## Description
The Mem Map and MAT shell test currently has a hard dependency on 4k alignment of EFI_MEMORY_MAP and MAT table entries. This is only valid when the RUNTIME_PAGE_ALLOCATION_GRANULARITY is 4k. To make this more universal, compare the MAT entries to RUNTIME_PAGE_ALLOCATION_GRANULARITY as well as the UEFI spec defined EFI_MEMORY_MAP types that should have RUNTIME_PAGE_ALLOCATION_GRANULARITY.
As a small cleanup, rename LegacyMemoryMap to EfiMemoryMap as it is certainly not legacy and to avoid confusion :).
This also removes a duplicate test.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested by running the shell app on Q35 and confirming it still succeeds.
Integration Instructions
N/A. This has no dependency on mu_basecore 64k changes because the RUNTIME_PAGE_ALLOCATION_GRANULARITY is what we expect the MAT and runtime EFI_MEMORY_MAP entries to be aligned to, regardless of whether that is 4k or 64k.
</blockquote> <hr> </details>
- Impacts functionality?
-
[REBASE \&\& FF] Documentation Updates to Paging Audit @TaylorBeebe (#459)
Change Details
This PR updates the documentation of the SMM and DXE paging audits to reflect recent changes and describe usage.
This PR also removes the AllocatedPagesAndPoolsAreProtected test because it is not required according to the Enhanced Memory Protection spec and a similar test is run in the DxeMemoryProtectionTestApp. The NullCheck test is renamed to better reflect purpose.
📖 Documentation Updates
-
Advanced Logger Binary Dump Windows Executable @VivianNK (#453)
Change Details
## Description
Console app to get Advanced Logger dump.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- [ x] Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Built and ran on ARM and x64 machines. Verified output was identical to DecodeUefiLog script raw dump.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023110000.0.4...v2023110000.0.5
v2023110000.0.4
What's Changed
-
When recovering Pei buffer from hob list, need to fix internal pointe… @apop5 (#457)
Change Details
## Description
For the case where advanced logger starts in the PeiCore (through a memory allocation hob in CAR) when attempting to recover the log buffer from the hob list after peicore and transitioned everything to physical ram, the internal pointers in the log buffer also need to be updated to point to the start of the log buffer and the next available log buffer entry.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested on a platform where logging starts at peicore into a CAR Hob.
Platform uses gEfiTemporaryRamDonePpiGuid to tear down CAR prior to gEfiPeiMemoryDiscoveredPpiGuid being notified to allow the debugger to switch over to physical ram.Integration Instructions
N/A
- Impacts functionality?
-
MfciDxe: Indicate the MFCI Protocol is produced in the INF @yangrongwei (#454)
Change Details
## Description
Fix wrong comment. This module produces gMfciProtocolGuid, and we used this module for the implementation.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
No. Just a comment fix.
Integration Instructions
N/A. Just a comment fix.
- Impacts functionality?
Full Changelog: v2023110000.0.3...v2023110000.0.4
v2023110000.0.3
What's Changed
-
[REBASE \&\& FF] Update Paging Audit File Collection to Defer Free/Allocate Calls, Fix SMM Parsing @TaylorBeebe (#450)
Change Details
## Description
- Remove the Collection of Page Directories: Table entries were being collected but are not used in the paging audit. While they could be used to check heritable attributes, the PDE entries would need to be split by level which makes determining heritability difficult. Instead, FlatPageTableLib can be used in the future to check heritability.
- Paging Audit: Update File Collection to Defer Free/Allocate Calls: While collecting platform paging and memory info, freeing and allocating memory will potentially change the memory layout and corrupt the test results. Because allocating and freeing memory only transitions memory type between EfiConventionalMemory and EfiBootServicesMemory (which are required to have the same memory protection policy), this nuance didn't matter much. However, as the DXE core is updated to support more strict protections on free memory, this nuance will matter. This patch updates the data collection routines to calculate and allocate all required memory before fetching the memory map and collecting page table data.
- FIx SMM Paging Audit: The SMM paging audit needed to be updated to match the improvements made to the DXE audit. This PR reformats the SMM HTML template, updates the HTML template so the memory range object strings match the template naming, fixes the parsing of GDT and IDT entries, adds the platform info data collection
How This Was Tested
Tested on Q35 and SBSA by running the paging audit with various memory protection profiles. The SMM audit was tested on an SMM-enabled Surface platform.
Integration Instructions
N/A
Full Changelog: v2023110000.0.2...v2023110000.0.3
v2023110000.0.2
What's Changed
-
[CHERRY-PICK] Add StackCheckLib Instances to Platform DSC Files (#446) @TaylorBeebe (#447)
Change Details
## Description
An instance of StackCheckLib must be in each DSC to accommodate -fstack-protector and /GS flags.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware?- Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ... - Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
How This Was Tested
Tested in pipelines
Integration Instructions
N/A
-
Enable Pre-DXE Logs for Platforms Which Can't use Pre-DXE AdvancedLoggerLib Instances @TaylorBeebe (#440)
Change Details
## Description
Create a new guid and HOB entry definition for specifying a pre-DXE log buffer on platforms which can't use a pre-DXE AdvancedLoggerLib instance. After the advanced logger info buffer is created, the DxeCore AdvancedLoggerLib constructor will search for the guided HOB and, if found, write the contents of the buffer specified by the entry to the advanced logger buffer.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested by creating the HOB and verifying that the DxeCore constructor located it.
Integration Instructions
N/A
- Impacts functionality?
-
MsWheaPkg: Add EFIAPI to relevant functions [Rebase \& FF] @makubacki (#442)
Change Details
## Description
MsWheaReportHandlerPei()
is passed toReportHwErrRecRouter()
for the
MS_WHEA_ERR_REPORT_PS_FN
value where that is defined as:typedef EFI_STATUS (EFIAPI *MS_WHEA_ERR_REPORT_PS_FN)( IN MS_WHEA_ERROR_ENTRY_MD *MsWheaEntryMD );
So,
MsWheaReportHandlerPei()
needs to includeEFIAPI
as well.Similarly,
MsWheaRscHandlerPei()
needsEFIAPI
due to the definition
ofEFI_PEI_RSC_HANDLER_CALLBACK
.- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified results from a GCC build that reported the issue before and after
the change.
Integration Instructions
N/A
- Impacts functionality?
📖 Documentation Updates
-
[Cherry-pick] MfciPkg: Added information about the dependency on MuVarPolicyFoundationDxe @apop5 (#448)
Change Details
## Description
Mfci has a soft dependency on MuVarPolicyFoundationDxe. The phase based variables (Target\Manufacturer, Target\Product, Target\SerialNumber, Target\OEM_01 and Target\OEM_02) are locked using
RegisterVarStateVariablePolicy.Adding documentation to explicitly call out the need for the MsCorePkg's MuVarPolicyFoundationDxe to enable phase based locking.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware?- Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ... - Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
How This Was Tested
Ran CI locally
Integration Instructions
n/a
Full Changelog: v2023110000.0.1...v2023110000.0.2
v2023020006.1.2
What's Changed
-
Add StackCheckLib Instances to Platform DSC Files @TaylorBeebe (#446)
Change Details
## Description
An instance of StackCheckLib must be in each DSC to accommodate -fstack-protector and /GS flags.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested in pipelines
Integration Instructions
N/A
- Impacts functionality?
-
[CHERRY-PICK] MsWheaPkg: Add EFIAPI to relevant functions [Rebase \& FF] @makubacki (#443)
Change Details
## Description
MsWheaReportHandlerPei()
is passed toReportHwErrRecRouter()
for the
MS_WHEA_ERR_REPORT_PS_FN
value where that is defined as:typedef EFI_STATUS (EFIAPI *MS_WHEA_ERR_REPORT_PS_FN)( IN MS_WHEA_ERROR_ENTRY_MD *MsWheaEntryMD );
So,
MsWheaReportHandlerPei()
needs to includeEFIAPI
as well.Similarly,
MsWheaRscHandlerPei()
needsEFIAPI
due to the definition
ofEFI_PEI_RSC_HANDLER_CALLBACK
.- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified results from a GCC build that reported the issue before and after
the change.
Integration Instructions
N/A
- Impacts functionality?
📖 Documentation Updates
-
Added information about the dependency on MuVarPolicyFoundationDxe @apop5 (#378)
Change Details
## Description
Mfci has a soft dependency on MuVarPolicyFoundationDxe. The phase based variables (Target\Manufacturer, Target\Product, Target\SerialNumber, Target\OEM_01 and Target\OEM_02) are locked using RegisterVarStateVariablePolicy.
Adding documentation to explicitly call out the need for the MsCorePkg's MuVarPolicyFoundationDxe to enable phase based locking.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Ran CI locally
Integration Instructions
n/a
- Impacts functionality?
Full Changelog: v2023020006.1.1...v2023020006.1.2
v2023110000.0.1
What's Changed
-
remove edk2-basetools @Javagedes (#438)
Change Details
## Description
Removes edk2-basetools from pip-requirements.txt and any usage of it in the CISettings.py. The is done as there are changes in the build tools python source code that are available locally in BaseTools (as it is managed by Project Mu) that is not available in edk2-basetools.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Verified the build system continues to use the local python source
Integration Instructions
N/A - only effects this repository's CI system.
- Impacts functionality?
-
Remove AdvancedLogger MmCoreArm dependence on global variables. @cfernald (#437)
Change Details
## Description
The Advanced logger Arm MM Core library may be invoked before the imagine has completed it's PeCOFF section attribute fixup. Previously this was handled by explicitly mapping the data page need for the adv logger globals to be writable, but this leads to potential infinite recursion if any of the functions in the MMU stack calls a print. Instead this change is to remove the dependence on global variables and so remove the need for external calls in these library functions.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested and validated presence of MM logs in serial output and adv logger buffer.
Integration Instructions
N/A
-
Switch MmCoreArm advanced logger to use updated MMU functions @cfernald (#435)
Change Details
## Description
As part of 202311, ArmMmuLib switched to use ArmSetMemoryAttributes instead of the individual set/clear routines. This was also implemented in the MU change to converge ArmMmuStandaloneMmLib's use with ArmMmuLib. This changed fixes MmCoreArm/AdvancedLoggerLib.c to use the updated functions.
It seems this went unnoticed originally due to issue #434
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Manually tested.
Integration Instructions
N/A
Full Changelog: v2023110000.0.0...v2023110000.0.1
v2023110000.0.0
What's Changed
First 202311 Mu Plus release 🎉.
-
[Rebase \& FF] [Cherry-pick] Get all the missing commits from 202302 into 202311 @kenlautner (#428)
Change Details
## Description
Cherry-pick the commits from 202302 that are missing from 202311 since the creation of the release branch.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
CI
Integration Instructions
N/A
- Impacts functionality?
-
[CHERRY-PICK] Adding a more adapt python tooling for Advanced Logger v4 (#415) @kuqin12 (#424)
Change Details
# Preface
Please ensure you have read the contribution
docs prior to submitting the pull request. In particular,
pull request
guidelines.Description
This change will allow the advanced logger parser to handle the v4, which would get lines from the same UEFI boot phase without intercepting each other. It will also search for the beginning of returned buffer with more sophisticated logic.
Resolves #401
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware?- Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ... - Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
How This Was Tested
This was tested on both QEMU Q35 and proprietary hardware platform returned advanced logger buffer binary.
Integration Instructions
N/A
Co-authored-by: Oliver Smith-Denny osde@microsoft.com
(cherry picked from commit 12f028a)
-
Fixing Advanced logger wrapping unit test @kuqin12 (#417)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
The existing shell test will not take the disabled processors into account, thus causing the system to have false positive results.
This change updated the logic to tick out disabled cores, removed some UT logs to avoid spamming the output and replaced all the returned status with UT_ASSERT for easier troubleshooting.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
This change was tested on proprietary hardware with multiple cores.
Integration Instructions
N/A
- Impacts functionality?
-
Updated CISettings.py to use the edk2toolext codeql helpers @kenlautner (#414)
Change Details
## Description
The 202311 rebase moved the codeql plugin from .pytool to Basetools. This requires a change in CISettings.py to reference the correct codeql helper functions. Instead of using the internal versions we instead move to the edk2 pytool extensions version.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested with CI.
Integration Instructions
N/A
- Impacts functionality?
-
Update HelloWorldRustDxe to permit compiling for unit tests @joschock (#341)
Change Details
## Description
Update HelloWorldRustDxe to allow compiling tests.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- adds a sample unit test for the HelloWorldRustDxe driver.
- Includes documentation?
How This Was Tested
Cargo test executes sample unit test as expected.
Build for UEFI target and execution QEMU work as expected.Integration Instructions
N/A
-
Use Absolute Pointer Protocol from r-efi 4.3.0 @makubacki (#336)
Change Details
## Description
The protocol was upstreamed to r-efi 4.3.0 and can be picked up from there now.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto a...
- Security - Does the change have a direct security impact on an application,
- Impacts functionality?
v2023020006.1.1
What's Changed
-
Adding a more adapt python tooling for Advanced Logger v4 @kuqin12 (#415)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
This change will allow the advanced logger parser to handle the v4, which would get lines from the same UEFI boot phase without intercepting each other. It will also search for the beginning of returned buffer with more sophisticated logic.
Resolves #401
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
This was tested on both QEMU Q35 and proprietary hardware platform returned advanced logger buffer binary.
Integration Instructions
N/A
</blockquote> <hr> </details>
- Impacts functionality?
-
[CHERRY-PICK] Fixing Advanced logger wrapping unit test (#417) @kuqin12 (#423)
Change Details
# Preface
Please ensure you have read the contribution
docs prior to submitting the pull request. In particular,
pull request
guidelines.Description
The existing shell test will not take the disabled processors into account, thus causing the system to have false positive results.
This change updated the logic to tick out disabled cores, removed some UT logs to avoid spamming the output and replaced all the returned status with UT_ASSERT for easier troubleshooting.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware?- Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ... - Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
How This Was Tested
This change was tested on proprietary hardware with multiple cores.
Integration Instructions
N/A
Co-authored-by: Oliver Smith-Denny osde@microsoft.com
(cherry picked from commit 3c47b5f)</blockquote> <hr> </details>
-
[Cherry-Pick] Add call to HdwPortInitialize() when instantiating logger in DXE (#411) @kuqin12 (#422)
Change Details
## Description
This change adds a call to AdvancedLoggerHdwPortInitialize() when the advanced logger is created in the DxeCoreAdvancedLoggerLibConstructor(). Previously, hardware port was only initalized in AdvancedLoggerGetInfo() if the logging info structure was present at a fixed location or in a HOB; this would cause writes to the hardware port to potentially fail in the path where the logger is not initialized until the Constructor is called.
- Impacts functionality?
- AdvancedLoggerHdwPortInitialize() is now called in the DxeCoreAdvancedLoggerLibConstructor if the logger is instantiated there.
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Verified on a platform where this was not working due to missing HdwPort initialization; verified after this patch that it works as expected.
Integration Instructions
N/A
-
Update pip-requirements.txt @Javagedes (#421)
Change Details
## Description
Updates edk2-pytool-extensions and edk2-pytool-library to work with the latest commit of MU_BASECORE
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
- Impacts functionality?
Full Changelog: v2023020006.1.0...v2023020006.1.1
v2023020006.1.0
What's Changed
🚀 Features & ✨ Enhancements
-
AdvLoggerPkg: 64-bit SEC \& PEI Changes [Rebase \& FF] @makubacki (#403)
Change Details
## Description
-
AdvLoggerPkg: 64-bit SEC & PEI C Code changes
C code changes for building the code as 64-bit.
-
AdvLoggerPkg/SecDebugAgent: Update for 64-bit
Allows the module to be built for 64-bit SEC.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- Impacts security?
- Security - Does the change have a direct security impact on an application,
flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- Security - Does the change have a direct security impact on an application,
- Breaking change?
- Breaking change - Will anyone consuming this change experience a break
in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call
a function in a new library class in a pre-existing module, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation
on an a separate Web page, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Platform with X64 SEC & PEI
Integration Instructions
N/A - Appropriate code will be built based on module architecture.
Note: In draft while testing is in progress.
-
Full Changelog: v2023020006.0.2...v2023020006.1.0