Releases: microsoft/mu_plus
release-v2025020001.0.2
What's Changed
🐛 Bug Fixes
-
GopOverrideDxe: prevent single-protocol handle from being freed @cmruffin (#725)
Change Details
## Description When a handle only has a GOP protocol installed on it, uninstalling the GOP protocol interface from it will cause the handle to be freed. The subsequent InstallProtocol for the GopOverride protocol will fail.
Authored-by: [email protected]
Signed-off-by: [email protected]- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
Fixes #724
How This Was Tested
Boot tested on hardware.
Integration Instructions
na
dev-v2025020001.0.2
What's Changed
-
Remove Tpm2DebugLibNull from DSC Files \& Sync TpmTestingPkg Files [Rebase \& FF] @makubacki (#722)
Change Details
## Description
The library instance was removed in microsoft/mu_tiano_plus#426.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- Stuart CI
Integration Instructions
- N/A - This is integrating changes from
dev/202502
mu_tiano_plus into this repo
🐛 Bug Fixes
-
GopOverrideDxe: prevent single-protocol handle from being freed @cmruffin (#725)
Change Details
## Description When a handle only has a GOP protocol installed on it, uninstalling the GOP protocol interface from it will cause the handle to be freed. The subsequent InstallProtocol for the GopOverride protocol will fail.
Authored-by: [email protected]
Signed-off-by: [email protected]- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
Fixes #724
How This Was Tested
Boot tested on hardware.
Integration Instructions
na
Full Changelog: dev-v2025020001.0.1...dev-v2025020001.0.2
release-v2025020001.0.1
What's Changed
-
UefiTestingPkg: Update Paging Audit Static Buffer Size @os-d (#720)
Change Details
## Description
Add a few more 0's and hope it works.
Less glib: the larger buffer size was still being overrun with new changes in SBSA, so adding much more size to the buffer.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Running unit tests in SBSA.
Integration Instructions
N/A.
</blockquote> <hr> </details>
dev-v2025020001.0.1
What's Changed
-
UefiTestingPkg: Update Paging Audit Static Buffer Size @os-d (#720)
Change Details
## Description
Add a few more 0's and hope it works.
Less glib: the larger buffer size was still being overrun with new changes in SBSA, so adding much more size to the buffer.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Running unit tests in SBSA.
Integration Instructions
N/A.
</blockquote> <hr> </details>
Full Changelog: dev-v2025020001.0.0...dev-v2025020001.0.1
release-v2025020001.0.0
What's Changed
-
Remove comparison on the timestamp portion for LineParser test app @kuqin12 (#718)
Change Details
## Description
Somehow the latest basecore has changed how the rollover of a timestamp is handled, which caused an earlier mitigation in vain.
This change dumps the comparison for that prefix because the exact time comparison is not the point of this test.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Test passed locally on QEMU SBSA
Integration Instructions
N/A
-
PagingAuditTestApp: Increase Static Buffer Size @os-d (#703)
Change Details
## Description
mu_tiano_platform's pipelines have begun to fail because a static buffer in the paging audit test app has filled up. This commit increase the size from 4k to 64k.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Running the test app. Unable to repro locally, so will update mu_tiano_platforms after this gets checked in and ensure pipelines succeed.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
codeql.yml: Always download cargo make @makubacki (#705)
Change Details
## Description
Temporarily does not use the GitHub workflow cache to unblock other PRs.
Follow up to investigate further tracked in microsoft/mu_devops#459.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- PR gate
Integration Instructions
N/A
-
Remove override tag for display engine @kuqin12 (#700)
Change Details
## Description
This module is being carried as an override for years.
But really, we have not had any plan to upstream it to EDK2. Additionally, the driver has minimal commonality with the upstream version. This change is to break the bond with EDK2 version so that we save the hassle to deal with override tags.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
This is not a functional test.
Integration Instructions
N/
⚠️ Breaking Changes
-
Fix CI build due to ARM libraries movement @kuqin12 (#715)
Change Details
## Description
Some ARM libraries and headers have moved from ArmPkg to MdePkg/MdeModulePkg.
This change is created to fix the CI build due to such movements.
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
- 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 booted to UEFI shell.
Integration Instructions
Need to consume updated basecore and silicon_arm repos.
</blockquote> <hr> </details>
dev-v2025020001.0.0
What's Changed
-
Remove comparison on the timestamp portion for LineParser test app @kuqin12 (#718)
Change Details
## Description
Somehow the latest basecore has changed how the rollover of a timestamp is handled, which caused an earlier mitigation in vain.
This change dumps the comparison for that prefix because the exact time comparison is not the point of this test.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Test passed locally on QEMU SBSA
Integration Instructions
N/A
-
Support die offsets for GIC functions @Shrirammc55 (#717)
Change Details
## Description
Platforms with multiple die(s) can have a die offset address added to common GIC address to reach die-specific GIC address. Hence, adding support to get die information from MpServices and use a platform specific PCD to calculate die offset address which is then added to base GIC addresses.
The existing implementation will remain unchanged since PcdPlatformGICOffset is set to 0 by default. Platforms can override this value to its specific need.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Tested on MSFT platform, booting to UEFI shell
Integration Instructions
N/A
</blockquote> <hr> </details>
-
[CHERRY-PICK]Updating MuSecureBootKeySelectorLib to detect MS Serviced @Flickdm (#714)
Change Details
## Description
MuSecureBootKeySelectorLib is being updated to detect if the keystore doesn't match one of our expected
configurations but does match something MSFT could have serviced.(cherry picked from commit 1d7af0a)
Somehow missed during integration. This exists in release/202405 but not release/202502.
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
<Describe the test(s) that were run to verify the changes.>
Ran locally on QemuQ35 and on a devkit
<Describe how these changes should be integrated. Use N/A if nothing is required.>
N/A
</blockquote> <hr> </details>
-
PagingAuditTestApp: Increase Static Buffer Size @os-d (#703)
Change Details
## Description
mu_tiano_platform's pipelines have begun to fail because a static buffer in the paging audit test app has filled up. This commit increase the size from 4k to 64k.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Running the test app. Unable to repro locally, so will update mu_tiano_platforms after this gets checked in and ensure pipelines succeed.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
codeql.yml: Always download cargo make @makubacki (#705)
Change Details
## Description
Temporarily does not use the GitHub workflow cache to unblock other PRs.
Follow up to investigate further tracked in microsoft/mu_devops#459.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- PR gate
Integration Instructions
N/A
-
Remove override tag for display engine @kuqin12 (#700)
Change Details
## Description
This module is being carried as an override for years.
But really, we have not had any plan to upstream it to EDK2. Additionally, the driver has minimal commonality with the upstream version. This change is to break the bond with EDK2 version so that we save the hassle to deal with override tags.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
This is not a functional test.
Integration Instructions
N/
⚠️ Breaking Changes
-
Fix CI build due to ARM libraries movement @kuqin12 (#715)
Change Details
## Description
Some ARM libraries and headers have moved from ArmPkg to MdePkg/MdeModulePkg.
This change is created to fix the CI build due to such movements.
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
- 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 booted to UEFI shell.
Integration Instructions
Need to consume updated basecore and silicon_arm repos.
</blockquote> <hr> </details>
Full Changelog: dev-v2025020000.1.1...dev-v2025020001.0.0
release-v2025020000.1.1
What's Changed
-
UefiTestingPkg: Remove UnallocatedMemoryIsRP test. @apop5 (#696)
Change Details
## Description
Removing the UnallocatedMemoryIsRP test to allow
for EfiConventionalMemory to be in a state other
than Read Protected or Unmapped.Unallocated memory still needs to follow the
no Read/Write/Executable protections, but should
still be left mapped.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
QemuSbsa running DxePagingAuditTest prior to removal of the test failed with specific regions
being left mapped, but as Nx.
After changes, DxePagingAuditTest Reported a passIntegration Instructions
No integration necessary.
dev-v2025020000.1.1
What's Changed
-
UefiTestingPkg: Remove UnallocatedMemoryIsRP test. @apop5 (#696)
Change Details
## Description
Removing the UnallocatedMemoryIsRP test to allow
for EfiConventionalMemory to be in a state other
than Read Protected or Unmapped.Unallocated memory still needs to follow the
no Read/Write/Executable protections, but should
still be left mapped.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
QemuSbsa running DxePagingAuditTest prior to removal of the test failed with specific regions
being left mapped, but as Nx.
After changes, DxePagingAuditTest Reported a passIntegration Instructions
No integration necessary.
Full Changelog: dev-v2025020000.1.0...dev-v2025020000.1.1
release-v2025020000.1.0
What's Changed
-
Build HidDxe rust module with 1.85 compiler @kuqin12 (#695)
Change Details
## Description
This change moved the rust module to build with 1.85. As requirement tightens, the rust code and tests were updated to work with the new requirements.
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
This change was tested on physical platform.
Integration Instructions
N/A
</blockquote> <hr> </details>
-
MsGraphicsPkg: Integrate Mu Basecore DisplayEngineDxe change @makubacki (#688)
Change Details
## Description
Only updates the override hash as all impacted code is not in this override.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- CI build
Integration Instructions
- Include this commit when integrating these Mu Basecore changes:
dev/202502
: microsoft/mu_basecore@e6ec2ecrelease/202502
: microsoft/mu_basecore@63a42c8
🚀 Features & ✨ Enhancements
-
Refine HID Touch Panel Data Handling Based on Contact Count @CharlieYang21176 (#682)
Change Details
## Description
We encountered an issue while using the UefiHidDxeV2 to handle the input from HID I2C touch panel device.
Currently the HidPkg only supports single-pointer input, which works fine for HID devices like a standard mouse or trackpad.
However, a touch panel devices typically support multi-touch input report (commonly up to 10 fingers).When processing the HID Report Descriptor of a HID device, the driver(UefiHidDxeV2) assigns one handler per usage (e.g. X, Y, Z, Switch or Button) found in the descriptor. For a mouse, there is only one Pointer that includes one set of X, Y and Button, and a single handler per usage (X, Y, Button) can correctly update the state of each factor (X, Y, Click) accordingly.
When it comes to touch panel device, there are 10 Fingers/Pointers defined in its HID Report Descriptor, each with its own X, Y and Switch. When a touch event happens, regardless of how many fingers are actually tapping on the screen, the touch controller always sends a input report includes data fields for all 10 fingers. (Fields corresponding to the fingers not currently in contact with the screen are filled with "0".)
The issue arises because the driver(UefiHidDxeV2) creates one handler per X, Y and Switch usage(so there will be 10 handlers for X,10 handlers for Y and 10 handlers for Switch as 10 fingers input) and every handlers for the same factor (X, Y or Switch) would update the same variable of the pointer which shown on the screen. This causes the data from each finger input to overwrite the data from the previous one.
For example, when single finger tapping on the screen,
the coordinate X "901" Y "648" was overwritten by the last finger's data (0, 0).// Update the 1st finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 901 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 648 // Update the 2nd finger touch // the data is "0" as no 2nd finger tapping the screen 18:18:08.824 : current_state.current_x: 901 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 648 18:18:08.824 : handles y_axis inputs: 0 // Update the 3rd finger touch // the data is "0" as no 3rd finger tapping the screen 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 0 // Update the 4th finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 0 // Update the 5th finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.825 : current_state.current_y: 0 18:18:08.825 : handles y_axis inputs: 0 // Update the 6th finger touch 18:18:08.825 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.825 : current_state.current_y: 0 18:18:08.825 : handles y_axis inputs: 0 // Update the 7th finger touch 18:18:08.825 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 8th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 9th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 10th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0
This PR adds a set of counters to determine how many input pointers are valid and need to be handled, based on the Contact Count usage(0x54) data, which is a standard usage under Digitizer(0x0D) in HID spec. With this change, we can ensure that every pointer's data(coordinate and click/switch) processed by the driver would contain valid values.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Tested on Surface Laptop device, USB Mouse, Trackpad and Touch Panel(single finger) are functional in UEFI setup up page.
Integration Instructions
N/A
</blockquote> <hr> </details>
dev-v2025020000.1.0
What's Changed
-
Build HidDxe rust module with 1.85 compiler @kuqin12 (#695)
Change Details
## Description
This change moved the rust module to build with 1.85. As requirement tightens, the rust code and tests were updated to work with the new requirements.
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
This change was tested on physical platform.
Integration Instructions
N/A
</blockquote> <hr> </details>
-
MsGraphicsPkg/QrEncoderLib: Prevent memcpy being used on VS22 (17.14.2) @makubacki (#686)
Change Details
## Description
This code can be optimized to
memcpy
. So, explicitly useCopyMem
to prevent that from happening.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- Before and after with VS22 17.14.2.
Integration Instructions
- N/A
-
MsGraphicsPkg: Integrate Mu Basecore DisplayEngineDxe change @makubacki (#688)
Change Details
## Description
Only updates the override hash as all impacted code is not in this override.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
- CI build
Integration Instructions
- Include this commit when integrating these Mu Basecore changes:
dev/202502
: microsoft/mu_basecore@e6ec2ecrelease/202502
: microsoft/mu_basecore@63a42c8
🚀 Features & ✨ Enhancements
-
Refine HID Touch Panel Data Handling Based on Contact Count @CharlieYang21176 (#682)
Change Details
## Description
We encountered an issue while using the UefiHidDxeV2 to handle the input from HID I2C touch panel device.
Currently the HidPkg only supports single-pointer input, which works fine for HID devices like a standard mouse or trackpad.
However, a touch panel devices typically support multi-touch input report (commonly up to 10 fingers).When processing the HID Report Descriptor of a HID device, the driver(UefiHidDxeV2) assigns one handler per usage (e.g. X, Y, Z, Switch or Button) found in the descriptor. For a mouse, there is only one Pointer that includes one set of X, Y and Button, and a single handler per usage (X, Y, Button) can correctly update the state of each factor (X, Y, Click) accordingly.
When it comes to touch panel device, there are 10 Fingers/Pointers defined in its HID Report Descriptor, each with its own X, Y and Switch. When a touch event happens, regardless of how many fingers are actually tapping on the screen, the touch controller always sends a input report includes data fields for all 10 fingers. (Fields corresponding to the fingers not currently in contact with the screen are filled with "0".)
The issue arises because the driver(UefiHidDxeV2) creates one handler per X, Y and Switch usage(so there will be 10 handlers for X,10 handlers for Y and 10 handlers for Switch as 10 fingers input) and every handlers for the same factor (X, Y or Switch) would update the same variable of the pointer which shown on the screen. This causes the data from each finger input to overwrite the data from the previous one.
For example, when single finger tapping on the screen,
the coordinate X "901" Y "648" was overwritten by the last finger's data (0, 0).// Update the 1st finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 901 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 648 // Update the 2nd finger touch // the data is "0" as no 2nd finger tapping the screen 18:18:08.824 : current_state.current_x: 901 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 648 18:18:08.824 : handles y_axis inputs: 0 // Update the 3rd finger touch // the data is "0" as no 3rd finger tapping the screen 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 0 // Update the 4th finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.824 : handles x_axis inputs: 0 18:18:08.824 : current_state.current_y: 0 18:18:08.824 : handles y_axis inputs: 0 // Update the 5th finger touch 18:18:08.824 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.825 : current_state.current_y: 0 18:18:08.825 : handles y_axis inputs: 0 // Update the 6th finger touch 18:18:08.825 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.825 : current_state.current_y: 0 18:18:08.825 : handles y_axis inputs: 0 // Update the 7th finger touch 18:18:08.825 : current_state.current_x: 0 18:18:08.825 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 8th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 9th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0 // Update the 10th finger touch 18:18:08.859 : current_state.current_x: 0 18:18:08.859 : handles x_axis inputs: 0 18:18:08.859 : current_state.current_y: 0 18:18:08.859 : handles y_axis inputs: 0
This PR adds a set of counters to determine how many input pointers are valid and need to be handled, based on the Contact Count usage(0x54) data, which is a standard usage under Digitizer(0x0D) in HID spec. With this change, we can ensure that every pointer's data(coordinate and click/switch) processed by the driver would contain valid values.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
- Backport to release branch?
How This Was Tested
Tested on Surface Laptop device, USB Mouse, Trackpad and Touch Panel(single finger) are functional in UEFI setup up page.
Integration Instructions
N/A
</blockquote> <hr> </details>
Full Changelog: dev-v2025020000.0.1...dev-v2025020000.1.0