Skip to content

v4.7.1

Compare
Choose a tag to compare
@github-actions github-actions released this 28 Nov 20:05
· 187 commits to refs/heads/main since this release
612d884

What's Changed

  • Add platform host-based unit tests and code coverage @Javagedes (#729)
    Change Details
      ## Description

    Adds a PlatformTest.py per platform package which:

    1. self verifies the platform host-based unit test dsc is up to date (no new hosted-based test INFs have been added locally or from a submodule that test source used by the platform).
    2. Compiles the host-based unit tests.
    3. Executes the host-based unit tests.
    4. Optionally generates code coverage data.

    Adds additional pipeline jobs to run the host-based tests and generate code coverage information.

    • 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

    CI

    Integration Instructions

    CI




  • Cargo.toml: Optimize dev profile binary size @makubacki (#767)
    Change Details
      ## Description

    By default, the dev profile is used. The default build settings for the dev profile are documented here:
    https://doc.rust-lang.org/cargo/reference/profiles.html#dev

    Unmodified dev profile settings result in extraordinarily large binaries relative to UEFI FW. This especially impacts DEBUG builds which already have less optimized C code resulting in overall greater space occupation.

    Without a change, the binaries are simply too large and will continue to push the limits of firmware volumes (on a real system constrained by flash size) over time.

    Therefore, the below setting enables optimization level 3 (all optimizations) that is used by the release profile by default. This greatly reduces the overall binary size. [profile.dev.package."*"] is specified to apply the opt-level for all dependencies (but not a workspace member). This emphasizes debuggability of workspace code but optimizes dependencies. An individual dependency can be overridden by specifying the named package instead of "*". For example:

    [profile.dev.package.foo]
    opt-level = 0

    That will likely allow the overall build to still fit in the FV, since other code is still optimized, but remove optimizations from an individual package that needs to be debugged.

    • 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

    • Verified build size of several config combinations (including the chosen one).
      • [profile.dev]
        opt-level = 'z'
        
        • DXE FV: 11643648 (0xb1ab00) used (size opt of all packages)
      • [profile.dev.package."*"]
        opt-level = 'z'
        
        • DXE FV: 12365056 (0xbcad00) used (size opt of dependencies)
      • [profile.dev.package."*"]
        opt-level = 3
        
        • DXE FV: 12431104 (0xbdaf00) used (level 3 opt of dependencies)

    Integration Instructions

    N/A - Affects packages built in this workspace




🐛 Bug Fixes

  • VirtualDriveManager: Fix incremental usage on Linux @makubacki (#780)
    Change Details
      ## Description

    Currently, FlashRomImage() in PlatformBuild.py checks if the
    virtual drive file (VirtualDrive.img) exists. If so, make_drive()
    is not called which is the only function that currently sets the
    MTOOLSRC environment variable to the mtool.conf file path which
    is consumed by mtools.

    Typical mtool.conf file contents as used in VirtualDriveManager:

      drive+ a:
        file="/w/m/Build/QemuSbsaPkg/DEBUG_GCC5/VirtualDrive.img" exclusive
    

    This means if VirtualDrive.img already exists (i.e. on an
    incremental Linux build with the VIRTUAL_DRIVE parameter present),
    the MTOOLSRC variable is not available to mtools resulting in the
    following error:

      INFO - Can't open /dev/fd0: No such file or directory
      INFO - Cannot initialize 'A:'
      INFO - Bad target a:
    

    This change sets MTOOLSRC on incremental builds so the existing
    virtual drive can be used.


    A separate commit also removes trailing whitespace from VirtualDriveManager.py
    since there is a lot throughout the file.


    • 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

    • With VIRTUAL_DRIVE parameter given:
      • Linux build with VirtualDrive.img missing (clean build)
      • Linux build with VirtualDrive.img present (incremental build)
        • Previously failed
      • Linux build with VirtualDrive.img present and mtool.conf missing
        • Unexpected state but possible

    Integration Instructions

    N/A




🛠️ Submodule Updates

  • Bump Silicon/Arm/MU\_TIANO from 2023020000.1.2 to 2023020000.1.3 @ProjectMuBot (#781)
    Change Details
      Bumps Silicon/Arm/MU_TIANO from `2023020000.1.2` to `2023020000.1.3`

    Introduces 5 new commits in Silicon/Arm/MU_TIANO.

    Commits
    • fb39b5 GitHub Action: Bump actions/github-script from 6 to 7 (#180)
    • 4ece5b Repo File Sync: synced file(s) with microsoft/mu_devops (#177)
    • fa3856 Integration steps for [email protected]: Add Code coverage (#181)
    • f58b70 ArmPkg/Drivers/CpuDxe: Use lower and upper attributes
    • e42172 ArmPkg/Drivers/CpuDxe: Avoid EntryType cast

    Signed-off-by: Project Mu Bot [email protected]




  • Bump MU\_BASECORE from 2023020008.0.0 to 2023020008.0.1 @ProjectMuBot (#779)
    Change Details
      Bumps MU_BASECORE from `2023020008.0.0` to `2023020008.0.1`

    Introduces 1 new commits in MU_BASECORE.

    Commits
    • c064e7 Add late initialization for Debug Agent (#624)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump MU\_BASECORE from 2023020007.4.0 to 2023020008.0.0 @ProjectMuBot (#773)
    Change Details
      Bumps MU_BASECORE from `2023020007.4.0` to `2023020008.0.0`

    Introduces 4 new commits in MU_BASECORE.

    Commits
    • 3b01cd Repo File Sync: Update to Mu DevOps 7.2.0 (#618)
    • a4a935 Add Gmock for UefiBootServicesTableLib (#623)
    • 991a64 BaseTools: reformat HostBasedUnitTestRunner coverage results by inf (#616)
    • a0e861 Define GUID for boot manage policy to connecxt storage devices. (#619)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump Common/MU from 2023020003.2.2 to 2023020003.3.0 @ProjectMuBot (#776)
    Change Details
      Bumps Common/MU from `2023020003.2.2` to `2023020003.3.0`

    Introduces 3 new commits in Common/MU.

    Commits
    • feed55 Resolve deadlock in RustBootServicesAllocatorDxe (#358)
    • 1edf72 Fix rust advlogger deadlock (#356)
    • 14c187 Add SetProtocol command to force devices to Report Mode (#361)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump Silicon/Arm/MU\_TIANO from 2023020000.1.0 to 2023020000.1.2 @ProjectMuBot (#777)
    Change Details
      Bumps Silicon/Arm/MU_TIANO from `2023020000.1.0` to `2023020000.1.2`

    Introduces 10 new commits in Silicon/Arm/MU_TIANO.

    Commits
    • fba97b pip: update edk2-pytool-extensions requirement from ~=0.25.0 to ~=0.25.1 (#169)
    • 8aa7ca pip: update edk2-pytool-library requirement from ~=0.19.1 to ~=0.19.3 (#170)
    • 83e658 Repo File Sync: MuDevOpsWrapper.yml - Add code coverage calculation parameter (#171)
    • d29a83 pip: update edk2-pytool-library requirement from ~=0.19.3 to ~=0.19.4 (#173)
    • 467918 pip: update edk2-pytool-extensions requirement from ~=0.25.1 to ~=0.26.0 (#172)
    • 7e6887 Repo File Sync: Update to Mu DevOps 7.2.0 (#174)
    • ac02ce pip: update edk2-pytool-extensions requirement from ~=0.26.0 to ~=0.26.2 (#175)
    • 3e5f1f ArmPkg: Fix pointer type errors
    • f8bea4 ArmPkg/Drivers/CpuDxe: Check integer before conversion
    • 58e743 ArmPkg/Drivers/CpuDxe: Cast table entry (#178)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump Common/MU from 2023020003.2.1 to 2023020003.2.2 @ProjectMuBot (#774)
    Change Details
      Bumps Common/MU from `2023020003.2.1` to `2023020003.2.2`

    Introduces 2 new commits in Common/MU.

    Commits
    • 61f718 Inspect `mLoggerInfo` before accessing in the event callback (#345)
    • 2591f7 pip: bump edk2-pytool-extensions from 0.26.0 to 0.26.2 (#360)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump Common/MU from 2023020003.2.0 to 2023020003.2.1 @ProjectMuBot (#771)
    Change Details
      Bumps Common/MU from `2023020003.2.0` to `2023020003.2.1`

    Introduces 5 new commits in Common/MU.

    Commits
    • a3ca3f pip: bump edk2-pytool-library from 0.19.3 to 0.19.4 (#353)
    • 93df01 pip: bump edk2-pytool-extensions from 0.25.1 to 0.26.0 (#354)
    • 228a02 Add log retrieval info to main readme (#355)
    • fdf223 Repo File Sync: Update to Mu DevOps 7.2.0 (#357)
    • 9ce0c1 Fixed logic related to DxeCore only advanced logger (#359)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump MU\_BASECORE from 2023020007.3.0 to 2023020007.4.0 @ProjectMuBot (#768)
    Change Details
      Bumps MU_BASECORE from `2023020007.3.0` to `2023020007.4.0`

    Introduces 2 new commits in MU_BASECORE.

    Commits
    • a17caf .pytool/CISettings.py: Re-enable Code Coverage (#614)
    • da188b MdeModulePkg/PciHostBridgeDxe: Add readback after final Cfg-Write (#599)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump Common/MU from 2023020003.1.0 to 2023020003.2.0 @ProjectMuBot (#764)
    Change Details
      Bumps Common/MU from `2023020003.1.0` to `2023020003.2.0`

    Introduces 2 new commits in Common/MU.

    Commits
    • 20cb17 AdvLoggerPkg: Add PanicLib instance (#348)
    • 220114 Add HID Keyboard support to UefiHidDxe (#347)

    Signed-off-by: Project Mu Bot [email protected]




  • Bump MU\_BASECORE from 2023020007.2.1 to 2023020007.3.0 @ProjectMuBot (#763)
    Change Details
      Bumps MU_BASECORE from `2023020007.2.1` to `2023020007.3.0`

    Introduces 4 new commits in MU_BASECORE.

    Commits
    • 37f7e6 pip: update edk2-pytool-library requirement from ~=0.19.1 to ~=0.19.3 (#606)
    • bf28b4 MdePkg/GoogleTest: Add GetTime() RT service mock interface (#607)
    • 01abd5 BaseTools/Plugin/RustEnvironmentCheck: Add rust-src component check (#611)
    • ae4776 Repo File Sync: MuDevOpsWrapper.yml - Add code coverage calculation parameter (#612)

    Signed-off-by: Project Mu Bot [email protected]




Full Changelog: v4.7.0...v4.7.1