Releases: microsoft/mu_silicon_arm_tiano
Release list
v2023020000.1.1
What's Changed
🐛 Bug Fixes
-
Fix Some Visual Studio Issues [Rebase \& FF] @makubacki (#176)
Change Details
## Description
Two fixes to improve overall code and Visual Studio compatibility:
ArmPkg: Fix pointer type errors
The code tries to use a data pointer type for a function pointer and
Visual Studio doesn't like it.Fixes this warning:
nonstandard extension, function/data pointer conversion in expressionThis change represents the function pointer with the appropriate type
(instead ofVOID*) and defines the type with a typedef for code
clarity.A minor change is added to also validate function pointer parameters
in an already modified function to generally improve its robustness.Some practices like adding a function description are not added
because the function prototype is fromArmMmuLibwhich doesn't
currently have function descriptions and adding them is outside the
scope of the compiler fix being added in this change.
ArmPkg/Drivers/CpuDxe: Check integer before conversion
GetNextEntryAttribute()assigns a 64-bit integer to 32-bit integers.
This change checks that the value fits in a 32-bit integer and
fixes the following Visual Studio compiler warning:'=': conversion from 'UINT64' to 'UINT32', possible loss of data
- 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
- Visual Studio 2019/2022 build
Integration Instructions
No special work other than picking up the changes.
- Impacts functionality?
Full Changelog: v2023020000.1.0...v2023020000.1.1
v2023020000.1.0
What's Changed
🚀 Features & ✨ Enhancements
-
MemoryInitPei: Remove Non-RT Types from Mem Type Info HOB @makubacki (#168)
Change Details
## Description
MemoryInitPei: Remove Non-RT Types from Mem Type Info HOB
Removes the following types from the memory type information HOBs
produced in the MemoryInitPei modules in ArmPlatformPkg and ArmVirtPkg.EfiBootServicesCodeEfiBootServicesDataEfiLoaderCodeEfiLoaderData
When the memory type information UEFI variable is updated in BDS,
it goes through the common variable check code attached to the UEFI
variable driver which explicitly checks the size of the variable data
to determine if the variable update is valid.MemoryTypeInfoVarCheckHandler () in
MdeModulePkg/Library/MemoryTypeInfoSecVarCheckLib/MemoryTypeInfoSecVarCheckLib.c.The size here is
0x50instead of the expected size of0x30. It
is not common to place non-runtime memory types in the memory type
information HOB so the types are removed from the HOB published
here to align with typical code expectations.UEFI variable update error:
ERROR: MemoryTypeInfoVarCheckHandler() - DataSize = 0x50 Expected = 0x30 Variable Check handler fail Security Violation - 4C19049F-4137-4DD3-9C10-8B97A83FFDFA:MemoryTypeInformation Memory Type Information settings cannot be saved. OS S4 may fail!Some Arm platforms may use a different UEFI variable driver that does
not perform this check. If the types are truly needed, the variable
check code should be updated to compensate for them.- 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
- ArmPlatformPkg build and CI
- ArmVirtPkg build and CI
- QemuSbsaPkg build and boot to EFI shell with test apps
Integration Instructions
Review code to determine if either of these PEIMs (
MemoryInitPeim).
If so, whether code was dependent on the memory types in the memory
type information HOB that were removed to determine if further changes
are needed.
Full Changelog: v2023020000.0.7...v2023020000.1.0
v2023020000.0.7
What's Changed
-
Remove `MDEPKG_NDEBUG` from DynamicTables.dsc.inc @kuqin12 (#163)
Change Details
## Description
The current build option inserted from
DynamicTables.dsc.incmaking the release build debug prints to be completely muted. This is undesirable when platforms would like to keep logging capabilities, i.e. advanced logger.This change removes the build option that inserted the macro definition and leave the option to platform consumers.
- 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 proprietary platforms that includes this file and confirmed release builds can print strings to serial port.
Integration Instructions
N/A
</blockquote> <hr> </details> - Impacts functionality?
Full Changelog: v2023020000.0.6...v2023020000.0.7
v2023020000.0.6
What's Changed
-
[Cherry-Pick] ArmPkg: DefaultExceptionHandlerLib: Do Not Allocate Memory @os-d (#145)
Change Details
## Description
If gST->ConOut is available when Arm's DefaultExceptionHandler is running, AsciiPrint will get called to attempt to print to ConOut, in addition to the serial output.
AsciiPrint calls AsciiInternalPrint in UefiLibPrint.c which in turn calls AllocatePool to allocate a buffer to convert the Ascii input string to a Unicode string to pass to ConOut->OutputString.
Per the comment on DefaultExceptionHandler, we should not be allocating memory in the exception handler, as this can cause the exception handler to fail if we had a memory exception or the system state is such that we cannot allocate memory.
It has been observed on ArmVirtQemu that exceptions generated in the memory handling code will fail to output the stack dump and CPU state that is critical to debugging because the AllocatePool will fail.
This patch fixes the Arm and AARCH64 DefaultExceptionHandlers to not allocate memory when ConOut is available and instead use stack memory to convert the Ascii string needed for SerialPortWrite to the Unicode string needed for ConOut->OutputString. Correspondingly, ArmVirtQemu can now output the stack dump and CPU state when hitting an exception in memory code.
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 on ArmVirtQemu on edk2.
Integration Instructions
N/A.
- Impacts functionality?
Full Changelog: v2023020000.0.5...v2023020000.0.6
v2023020000.0.5
What's Changed
-
QemuVirtMemInfoPeiLib: Allow PcdSystemMemorySize to be non-fixed [Rebase \& FF] @makubacki (#143)
Change Details
## Description
Platforms today may use this PCD as a dynamic PCD as that is an
allowed type in its PCD declaration. FromArmPkg.dec:[PcdsFixedAtBuild.common, PcdsDynamic.common, PcdsPatchableInModule.common] gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT64|0x0000002AThis library causes a build error if it used as a dynamic PCD since
it places the PCD in a[FixedPcd]section in the INF.Other libraries do set the PCD and depend on the dynamic PCD behavior.
Since this library accesses the PCD with
PcdGet64 ()which is
compatible with FixedAtBuild PCDs, this change moves the PCD out of an
explicit[FixedPcd]section to resolve the following build error:INFO - : error 3000: Building modules from source INFs, following PCD use Dynamic and FixedAtBuild access method. It must be corrected to use only one access method. INFO - gArmTokenSpaceGuid.PcdSystemMemorySize- 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 build.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023020000.0.4...v2023020000.0.5
v2023020000.0.4
What's Changed
-
[CHERRY-PICK] Add the ability to configure the memory type used for the FD region @cfernald (#141)
Change Details
## Description
Add the ability to configure the memory type used for the FD region on the non-secure UEFI side.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested on internal platform build.
Integration Instructions
N/A
Cherry pick of #140
-
ci.yaml: add PrEval entry @Javagedes (#133)
Change Details
## Description
Adds a PrEval entry to all ci.yaml files to enable PrEval Policy 5.
- 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
- Impacts functionality?
Full Changelog: v2023020000.0.3...v2023020000.0.4
v2023020000.0.3
What's Changed
🐛 Bug Fixes
-
Update Arm Memory Attribute Protocol Logging @TaylorBeebe (#134)
Change Details
## Description
Fixes #129 and reformats the debug prints.
- 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 Pipelines
Integration Instructions
N/A
</blockquote> <hr> </details> - Impacts functionality?
Full Changelog: v2023020000.0.2...v2023020000.0.3
v2023020000.0.2
What's Changed
🔐 Security Impacting
-
[CodeQL] DynamicTablesPkg: TableHelperLib: Fixing a mismatched variable size @kuqin12 (#135)
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 fixes a CodeQL issue in TableHelperLib.
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 ARM FVP platform.
Integration Instructions
N/A
</blockquote> <hr> </details> - Impacts functionality?
Full Changelog: v2023020000.0.1...v2023020000.0.2
v2023020000.0.1
What's Changed
-
Improve Arm Memory Attribute Protocol Logging @os-d (#128)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
The Arm Memory Attribute Protocol logging is lacking, as evidenced by issue #124. This PR simply adds additional logging to make future debugging work easier and to help identify issue #124 in the wild, as it is likely to come up again with non-patched versions of the Linux shim.
The x86 Memory Attribute Protocol code already has good logging in the error cases.
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
Only logging update, no testing.
Integration Instructions
N/A.
</blockquote> <hr> </details> - Impacts functionality?
-
Onboarding ARM64 builds on selfhosted Azure pipeline agents @kuqin12 (#106)
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 added a few new matrix entries to support building mu_tiano_platforms on native ARM64 systems. The PR will cover both microsoft/mu_basecore#369 and microsoft/mu_basecore#305.
The PR should also be incorporated with mu_devops change.
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 selfhost-agents and existing agents.
Integration Instructions
Pipeline changes, N/A for integration.
</blockquote> <hr> </details> - Impacts functionality?
Full Changelog: v2023020000.0.0...v2023020000.0.1
v2023020000.0.0
What's Changed
This is the first MU Silicon Arm Tiano 202302 release 🎉
The previous branch was 202208.
These versions correspond to edk2 stable release tags that the code is based upon.
Since edk2 makes a release every 3 months, two stable tags were actually picked up in this release:
Review those release notes to understand the changes coming in from edk2. In addition, Mu repos highlight important changes in their Readme files. Review the 202302 Readme before you move code to this branch to understand major changes.