Skip to content

v2025020003.0.0

Choose a tag to compare

@mu-automation mu-automation released this 26 Feb 04:53
· 10 commits to refs/heads/release/202502 since this release
30b7aa9

What's Changed

  • ArmPlatformPkg: Remove DXE Core FV placement assumption in PeilessSec @makubacki (#465)
    Change Details
      ## Description

    Instead of failing to boot if the DXE Core is not placed in the first FV instance found, decompress and search all firmware volumes that have been installed.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    • Boot with DXE Core placed in a compressed FV in different orders to other FVs

    Integration Instructions

    • N/A - Backward compatible


  • Update ArmSetMemoryAttributes to avoid setting invalid states during transitions @kuqin12 (#463)
    Change Details
      ## Description

    The current ArmSetMemoryAttributes would cycle through the input memory attributes bit by bit and could lead the memory in an invalid transient state during transitions. i.e. setting the memory to be code type (read only and executable), if the RP flag is set, it will make the memory region as data region first and then enable the executable bit, which could cause page fault on the next instruction.

    This again resolves #454, more properly.

    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?

    How This Was Tested

    This was tested on both QEMU SBSA platform and physical hardware platform.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • ArmPkg: Also disable translation when setting global abort for SmmuDxe EBS behavior @eeshanl (#453)
    Change Details
      ## Description

    ArmPkg: Also disable translation when setting global abort for SmmuDxe EBS behavior

    SMMUv3 honors the Global Abort bit only when CR0.SMMUEN == 0. SmmuV3DisableTranslation() handles this.

    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?

    How This Was Tested

    Tested on physical device

    Integration Instructions

    N/A




  • ArmPkg: Change default EBS behavior for SMMU(s) to be abort @eeshanl (#449)
    Change Details
      ## Description

    ArmPkg: Change default EBS behavior for SMMU(s) to be abort.

    The default behavior of the EBS callback for all SMMU's will be global abort.
    If there is an associated RMR node with that SMMU, then we will bypass.

    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?

    How This Was Tested

    Tested on physical platform.

    Integration Instructions

    N/A




  • ArmPkg: Switch to TLBI All @eeshanl (#447)
    Change Details
      ## Description

    ArmPkg: Switch to TLBI All

    Currently TLBI Range invalidation requires unecessary computation of Num and Scale values to construct the command.
    Instead, we will simply issue a TLBI All. Has no impact on performance during high I/O scenarios.

    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?

    How This Was Tested

    Tested on physical platform.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Carve out the mm buffer region from the bulk system memory hob @kuqin12 (#431)
    Change Details
      ## Description

    The MM communication buffer memory is being added in MM communication DXE driver through gDS calls. This means that the region should not be reported as available through resource descriptor hob.

    This change will carve out the MM communication buffer from the system memory.

    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?

    How This Was Tested

    This was tested on QEMU SBSA and booted to OS desktop.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

⚠️ Breaking Changes

  • [CHERRY-PICK] ArmPlatformPkg : Move RealTimeClockLib header @Flickdm (#458)
    Change Details
      ## Description

    RealTimeClockLib is an architectural implementation that is not restricted to the embedded segment or any platform in particular.

    So the header has been moved to MdeModulePkg.
    And the package has been added to the relevant INF files.

    Additional Notes:

    This is backporting from EDK2 a change to move RealTimeClockLib from EmbeddedPkg to MdeModulePkg.

    Upstream commit: tianocore/edk2@57230ff

    Split up commits:
    Dependency: microsoft/mu_basecore#1612
    microsoft/mu_tiano_plus#490

    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?

    How This Was Tested

    Built Locally

    Integration Instructions

    Needs cross submodule updates - depends on microsoft/mu_basecore#1612
    And for ARM may depend on microsoft/mu_tiano_plus#490

      </blockquote>
      <hr>
    </details>
    
  • [CHERRY-PICK] ArmPkg/Driver: use ArmFfaGetPartitionInfo() in Mmcommunication @kuqin12 (#457)
    Change Details
      ## Description

    This patch adds ArmFfaLibPartitionInfoGetRegs() in ArmFfaLib
    As ArmFfaLibPartitionInfoGetRegs() is added, Normal world ArmFfLib Rx/Tx buffer is not a madatory.
    That's why return EFI_UNSUPPORTED while Rx/Tx buffer mapping in ArmFfaLib constructor
    can be consider as valid return If ARM_FFA_PARTITION_INFO_GET_REGS is supported by SPMC.

    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?

    How This Was Tested

    This is tested on physical ARM64 platform.

    Integration Instructions

    Need to rely on the MdeModulePkg to have the corresponding interface change.

      </blockquote>
      <hr>
    </details>
    

🚀 Features & ✨ Enhancements

  • ArmPkg: Switch to Invalidate by range TLBI commands to improve SmmuDxe performance @eeshanl (#445)
    Change Details
      ## Description

    ArmPkg: Switch to Invalidate by range TLBI commands to improve SmmuDxe performance

    Improves performance of high I/O scenarios like hibernate/resume.
    Improves hibernate/resume speeds by ~5 seconds.

    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?

    How This Was Tested

    Tested on physical platform with hibernate/resume. Improves hibernate/resume speeds by ~5 seconds.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • ArmPkg: Improve SmmuDxe performance @eeshanl (#444)
    Change Details
      ## Description

    ArmPkg: Improve SmmuDxe performance

    • Moves all mapping logic to SetAttribute() so that we don't redundantly update page table bits
    • Improves scope of TPL locks in SmmuV3SendCommand() to reduce time spent waiting on lock
    • Improves logic for waiting for command to complete in Command Queue

    Improves hibernate/resume speeds by over 2x.

    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?

    How This Was Tested

    Tested on physical platform with hibernate/resume to stress test a high I/O scenario.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

🐛 Bug Fixes

  • [Rebase \& FF] Consolidates memory initialization mechanism for pre-DXE environment @kuqin12 (#456)
    Change Details
      ## Description

    This change is a preparation PR for the platform to switch to PEI less based SEC model.

    Specifically, this removes the previous change where the logic will try to poke holes in the main system memory. Instead, we will move to PEI less SEC phase, because the current PEI core is incapable of handling the static carveouts gracefully.

    Accordingly, the MM communication driver also needs to handle the case when the system already added the MM communication buffer to GCD.

    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?

    How This Was Tested

    This was tested on QEMU SBSA after switching over to PEI less SEC model.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Do not set attributes if the incoming attributes is outside of the mask @kuqin12 (#455)
    Change Details
      ## Description

    The current code will set all RO, RP and XP attributes after using the attribute mask. This could cause the system to trip on unwanted attributes getting set even when the mask does not set on certain bits.

    The change will check on the attribute masks before apply the bits.

    resolves #454.

    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?

    How This Was Tested

    This was tested on QEMU SBSA and successfully relocated the image.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

🔐 Security Impacting

  • ArmPkg: Add bounce buffering to IoMmu SmmuDxe implementation @eeshanl (#451)
    Change Details
      ## Description

    ArmPkg: Add bounce buffering to IoMmu SmmuDxe implementation

    For the cases where we have:

    • Non-aligned DMA buffer when we are not using CommonBuffer operations
    • An address above 4G for the DMA buffer when the operation only supports below 4G

    We need to bounce buffer the original DMA buffer to a newly allocated one under the above conditions. On a Read operation Map() will copy the contents of the DMA buffer into the newly allocated buffer. On a Write operation Unmap() will copy the contents of the newly allocated buffer back to the original DMA buffer.

    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?

    How This Was Tested

    Tested on physical platform

    Integration Instructions

    N/A




📖 Documentation Updates

  • ArmPkg: Add bounce buffering to IoMmu SmmuDxe implementation @eeshanl (#451)
    Change Details
      ## Description

    ArmPkg: Add bounce buffering to IoMmu SmmuDxe implementation

    For the cases where we have:

    • Non-aligned DMA buffer when we are not using CommonBuffer operations
    • An address above 4G for the DMA buffer when the operation only supports below 4G

    We need to bounce buffer the original DMA buffer to a newly allocated one under the above conditions. On a Read operation Map() will copy the contents of the DMA buffer into the newly allocated buffer. On a Write operation Unmap() will copy the contents of the newly allocated buffer back to the original DMA buffer.

    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?

    How This Was Tested

    Tested on physical platform

    Integration Instructions

    N/A




Full Changelog: v2025020002.0.0...v2025020003.0.0