Bot releases are visible (Hide)
Published by github-actions[bot] 12 months ago
Adds a new library class (InputChannelLib) that allows the TPM replay
event log to be passed through a platform-specific mechanism.
Add InputChannelLib|TpmTestingPkg/Library/BaseInputChannelLibNull/BaseInputChannelLibNull.inf
to a platform that uses the TPM Replay feature but does not provide a custom input channel
instance.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020003.0.1...v2023020003.1.0
Published by github-actions[bot] 12 months ago
This crate provides a rust wrapper around UEFI HII Keyboard Layout structures. The relevant structures defined in the UEFI spec are not well-suited for direct definition in rust; so this crate defines analogous rust structures and provides serialization/deserialization support for converting the rust structures into byte buffers and vice versa. This crate uses the scroll
crate (https://github.com/m4b/scroll) to facilitate serialization/deserialization of the Hii structures.
Retrieving a default (en-US) layout, writing it to a buffer, and then reading the buffer back into a rust structure:
use hii_keyboard_layout::{get_default_keyboard_pkg, HiiKeyboardPkg};
use scroll::{Pread, Pwrite};
let mut buffer = [0u8; 4096];
let package = get_default_keyboard_pkg();
buffer.pwrite(&package, 0).unwrap();
let package2: HiiKeyboardPkg = buffer.pread(0).unwrap();
assert_eq!(package, package2);
Verified by included unit tests.
This crate requires the "scroll," "num-traits" and "num-drive" crates, so platforms intending to use it will need to add these as dependencies in their workspace Cargo.toml files. This PR does this for the workspace Cargo.toml that is at the root of mu_plus.
Sample:
scroll = { version = "0.11", default-features = false, features = ["derive"]}
num-traits = { version = "0.2", default-features = false}
num-derive = { version = "0.4", default-features = false}
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020003.0.0...v2023020003.0.1
Published by github-actions[bot] 12 months ago
Update HelloWorldRustDxe to allow compiling tests.
Cargo test executes sample unit test as expected.
Build for UEFI target and execution QEMU work as expected.
N/A
Adds a PCD for configuring device exclusions for UsbHidDxe. Prior to this change, the UsbHidDxe driver included logic to exclude keyboard devices from being handled by HID, due to other parts of the stack not being fully implemented yet. This removes that code and replaces it with a PCD list that the platform integrator can use to disable particular devices as desired for the platform.
Verified with functional testing of several different exclusions in Qemu Q35.
To replicate existing behavior, platforms will need to add PCD specification to the DSC like the following to exclude USB keyboards:
[PcdsFixedAtBuild]
gHidPkgTokenSpaceGuid.PcdExcludedHidDevices|{0x3, 0x1, 0x1, 0x0, 0x0, 0x0}
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.1.0...v2023020003.0.0
Published by github-actions[bot] almost 1 year ago
Updates the algorithm used to read the HID descriptor from HID devices. Empirical testing indicates that some devices do not support reading the HID descriptor via the class-specific Get_Report() method described in USB HID 1.11. This changes the HID read to read the entire configuration descriptor and parse the HID descriptor out of the larger structure, and gives compatibility with a broader range of devices.
Verified against emulated USB devices in QEMU.
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.0.4...v2023020002.1.0
Published by github-actions[bot] about 1 year ago
The protocol was upstreamed to r-efi 4.3.0 and can be picked up from there now.
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.0.3...v2023020002.0.4
Published by github-actions[bot] about 1 year ago
In case a HID device fails to return a valid HID descriptor, this change
will return the error status from UsbHidDriverBindingStart() rather
than assert to match previous behavior from HID drivers that required
the boot protocol. The HID IO protocol will not be installed on these
devices.
Update to a Mu Plus release with this change.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.0.2...v2023020002.0.3
Published by github-actions[bot] about 1 year ago
Adds 5 tests to the HTML templates:
This also refactors much of the HTML, adds some quality of life updates to the output
HTML paging audit, adds logical OR filtering capability, and adds the collection of
Memory Attribute Protocol presence on the tested platform.
Tested on Q35, SBSA, and on development devices at UEFI Plugfest.
Adds support for Rust-based input stack.
Note: does not yet support HID keyboards. This is planned future work.
Pointer verified in preboot console (UEFI setup menu and Bitlocker Recovery).
Assuming a project is setup to build rust modules generally, integration of the new stack is accomplished by:
This change adds a short description of how logging level works in advanced logger as well as a flowchart for visualization.
N/A
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.0.1...v2023020002.0.2
Published by github-actions[bot] about 1 year ago
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.
There was a missed PCD not caught in the previous PR (https://github.com/microsoft/mu_plus/pull/311) when it comes to the usage on AARCH64 platform. This change added the PCD entry in the library inf file.
For each item, place an "x" in between [
and ]
if true. Example: [x]
.
(you can also check items in the GitHub UI)
This was tested on FVP based AARCH64 platform.
N/A
</blockquote>
<hr>
</details>
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020002.0.0...v2023020002.0.1
Published by github-actions[bot] about 1 year ago
The DebugLevel is checked twice in the hot path on serial path writes and the HdwPortWrite call is made even if the upper layer knows that the message being logged does not meet the DebugLevel criteria.
Closes #309.
In order to maintain backwards compatibility, if the LoggerInfo block is found to have a version less than the hardware logging level version, the PCD is checked to decide whether to call HdwPortWrite or not.
In SEC, because we may not have the LoggerInfo structure, we check the PCD to see if the message should be logged at this DebugLevel.
For each item, place an "x" in between [
and ]
if true. Example: [x]
.
(you can also check items in the GitHub UI)
Build tested.
If a bespoke AdvLoggerHdwPortLib is used, AdvLoggerHdwPortWrite should not check DebugLevel, but simply write the message to the hardware port.
Makes some spellcheck fixes.
Creates a new library, FlatPageTableLib, which works on X64 and AARCH64 platforms and converts the page table to a "flat" version. The flat version is a one-dimensional array where each entry is an address, a length, and attributes. The library will walk the page/translation table and combine blocks/leaves with the same attributes into a single entry in the flat array. The attributes mask for each architecture is defined in the header and includes both the upper and lower block/leaf attributes. On both X64 and AARCH64, the hierarchical inheritance of attributes is factored into the determination of block/leaf attributes. This allows the consumer of the library to easily check the attributes of any region in the page/translation table.
Updates DxePagingAuditTestApp to use FlatPageTableLib which allows us to delete the custom parsing logic in the test app.
Tested by running the paging audit on SBSA and Q35 and by comparing the output against the Memory Attribute Protocol
Platforms which build the paging audit will need to add an instance of FlatPageTableLib to their platform
DSC files.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.5.2...v2023020002.0.0
Published by github-actions[bot] about 1 year ago
Impacts functionality?
N/A
Impacts security?
N/A
validation improvement, ...
Breaking change?
N/A
Includes tests?
N/A
Includes documentation?
Readme.md
Explains how to build the application
How This Was Tested
This was tested on a handful of in market devices (AARCH64 and X64) by different OEMS.
This was tested using test payloads and the real payload in order to verify it would work as expected
Integration Instructions
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.5.1...v2023020001.5.2
Published by github-actions[bot] about 1 year ago
AsciiSPrint() returns the string index non-inclusive of the NULL terminator, so adding 1 to the returned string index causes a NULL byte to be at the end of the PlatformInfo.dat file which can cause a parsing error when interpreted in .csv format in python.
Tested on Q35
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.5.0...v2023020001.5.1
Published by github-actions[bot] about 1 year ago
This filter file is picked up both directly in mu_plus
but also
downstream repos. Therefore, the file patterns should allow matches
regardless of where a mu_plus
submodule or external dependency
may reside in the overall repo structure.
mu_plus
CodeQL buildmu_tiano_platforms
) CodeQL build that leveragesCodeQlFilters.yml
file from mu_plus
.No change in filtering behavior within mu_plus
. Downstream repos that use
mu_plus
will see more results auto filtered matching the expectations of
upstream repos.
This filter file is picked up both directly in mu_plus
but also
downstream repos. Therefore, the file patterns should allow matches
regardless of where a mu_plus
submodule or external dependency
may reside in the overall repo structure.
mu_plus
CodeQL buildmu_tiano_platforms
) CodeQL build that leveragesCodeQlFilters.yml
file from mu_plus
.No change in filtering behavior within mu_plus
. Downstream repos that use
mu_plus
will see more results auto filtered matching the expectations of
upstream repos.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.4.1...v2023020001.5.0
Published by github-actions[bot] about 1 year ago
Updates the repo for a change that merged UefiCpuLib with CpuLib.
UefiCpuLib will be removed entirely soon so all references are updated to CpuLib.
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.4.0...v2023020001.4.1
Published by github-actions[bot] about 1 year ago
Makes some adjustments to allow edk2 Rust-based modules to build
in the repo and adds a hello world Rust DXE module.
These are based on the Rust code from @joschock.
Summary of changes:
.pytool/CISettings.py: Set rust-ci scope and use in tree BaseTools
The Rust BaseTool changes are not in the edk2-basetools PIP module,
so this change updates CISettings.py to use the in tree tools by
default.
The rust-ci
scope is added as an active scope so Rust related
plugins like RustHostUnitTestPlugin
will run.
MsCorePkg: Add RustBootServicesAllocatorDxe
Adds a library crate that implements a global allocator based on
AllocatePool()
. Memory is allocated from the
EFI_BOOT_SERVICES_DATA
pool.
MsCorePkg: Add HelloWorldRustDxe
Adds a simple Rust based DXE driver to demonstrate how to structure
a DXE driver that only has Rust crate dependencies.
Within the firmware build framework, this is considered a "pure Rust"
DXE driver in that it only has a Cargo.toml
file in the [Sources]
section of the INF with no EDK II library dependencies.
The module uses the RustAdvancedLoggerDxe
crate (which is a wrapper
around the Advanced Logger protocol) to write debug messages and the
RustBootServicesAllocatorDxe
.
See Rust Build for more details about building and using Rust modules.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.3.2...v2023020001.4.0
Published by github-actions[bot] about 1 year ago
GuidedSectionExtract
is not a library class name.GuidedSectionExtractPeim/GuidedSectionExtract.inf
is a PEIM notThis appears to be an accidental library class mapping that in any
case is confusing and ineffective.
MsCorePkg CI build.
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.3.1...v2023020001.3.2
Published by github-actions[bot] about 1 year ago
These patches will fix the paging audit test failure on SBSA, and will reduce the number of command line options which need to be passed into the page parsing scripts.
Adds a file that helps summarize the schema so TPM Replay event log
authors have a more human readable reference for how a TPM Replay
event log description should be structured.
TpmReplaySchema.json
.N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.3.0...v2023020001.3.1
Published by github-actions[bot] about 1 year ago
Updates the repo to add some files needed to support Rust builds and a RustAdvancedLoggerDxe
library crate.
Because this repo was used to test the Rust build and is adding a new crate in that process, the infrastructure files are added directly in this PR. In the future, these will be synced from mu_devops
. The file content aligns with the current templates in mu_devops
so there should be no change in the sync process in this repo. Future repos can simply sync the files with the bot accounts and then add the Rust code in a follow up PR.
The ability to build with Rust is temporarily disabled in the last commit of the PR branch because changes in mu_devops
need to be completed before the pipeline build in this repo will succeed.
Adds workspace level files to build Rust in the repo.
Makes the changes needed to build Rust in pipelines on Windows
and Linux.
Adds a library crate that serves as a Rust wrapper for access to
Advanced Logger protocol.
No changes are needed for mu_plus integrators.
Review general Rust documentation in mu_basecore for more info.
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.2.0...v2023020001.3.0
Published by github-actions[bot] about 1 year ago
Contains four commits:
TpmTestingPkg: Add initial package
Adds a new package that holds TPM testing functionality.
Currently, a feature is present called "TPM Replay" that provides
the ability to replay TPM measurements from a custom-made event log.
The primary purpose is for testing operating system features
dependent on TPM measurements. More details about this feature are
available in TpmTestingPkg/TpmReplayPeiDxe/Readme.md.
This feature is designed to ease platform integration and can be
applied to physical and virtual systems.
TpmTestingPkg: Remove DXE functionality
Removes DXE placeholders since they are currently not used. This
commit is left in source history to show where DXE functionality
would hook into the code flows if added in the future.
TpmTestingPkg: Add TPM Replay tool
Adds a new tool that allows a user to specify a TPM Event Log in
JSON or YAML (validated against a supplied schema) that is transformed
into a binary that can be used by the TPM Replay feature.
A binary can also be transformed back to a YAML file.
This is an initial draft of the tool. Some files or code will likely
move to other more generic repos, the schema to a public schema
store, and new features are planned to be added as well. For example,
some PCR7 events will allow individual UEFI variable details to be
specified in the input JSON/YAML file to make their creation more
clear.
While this is planned, the initial draft provides sufficient
functionality to use with the feature and share with others now.
.azurepipelines: Add TpmTestingPkg
Includes the package in the pipeline build.
Rebalances the build matrix taking the new package into account.
(click the image to enlarge it)
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.1.2...v2023020001.2.0
Published by github-actions[bot] about 1 year ago
To combat this, the AsciiStrLen calls in AdvancedLogger are being switched to use the safe version, with the associated max lengths being the stack buffers that are used in the functions.
This change allowed assert messages to be displayed.
Fixes #292
Tested on a platform that was triggering asserts.
Tested in CI
N/A - Changes should be
Running the paging audit on Q35 and SBSA
N/A
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.1.1...v2023020001.1.2
Published by github-actions[bot] about 1 year ago
Fixes the following issues with GetGraphicsInfo()
.
EFIAPI
. This is an internal function to the libraryResolves the following GCC warning:
MsGraphicsPkg/Library/FrameBufferMemDrawLib/FrameBufferMemDrawLib.h:16:1:
warning: type of βGetGraphicsInfoβ does not match original declaration [-Wlto-type-mismatch]
16 | GetGraphicsInfo (
| ^
CI build.
N/A
Fixes a previous CodeQL fix (51c7dc2) that was checking for NULL return values. In this case a NULL return value is valid so instead of returning a bogus boot option let the function continue.
Tested on Physical hardware devices to confirm boot. Also confirmed CodeQL passes.
N/A
</blockquote>
<hr>
</details>
The definition of PcdAdvancedFileLoggerFlush
mentioned this should be a bitmask for both exit boot services and ready to boot. However, the bit for exit boot services was ignored and a callback was registered regardless of the setting.
This change adds a check to honor the PCD setting and removed the duplicated definition from package dec file.
This change was tested on Q35 platform and booted to Windows.
N/A
</blockquote>
<hr>
</details>
Full Changelog: https://github.com/microsoft/mu_plus/compare/v2023020001.1.0...v2023020001.1.1