Skip to content

v7.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Jan 17:55
· 1370 commits to refs/heads/main since this release
d47dacc

What's Changed

  • Add a minimum capacity for page\_pool @joschock (#213)
    Change Details
      ## Description

    Add a minimum capacity for the vector that tracks page addresses for the page pool.

    This resolves an issue observed when a large allocation request is made to the EfiBootServicesDataAllocator (EBSDA). The following sequence can cause a re-entrant allocation on the EBSDA:

    1. A large allocation request (in the observed failure, copying a large FFS FV_IMAGE section to a Box on the Heap as part of processing FV) is made to the EBSDA. The allocation holds the lock while in progress.
    2. In the course of processing the allocation, an adjustment to the page table needs to be made, and preallocate_pages() is called
    3. The pre-allocated pages are added to the page_pool in the PagingAllocator.
    4. if the number of pre-allocated pages is larger than the current page_pool capacity, then Vec will re-allocate
    5. Reallocation attempts to acquire the lock on EBSDA which is already held in 1, above, resulting in a panic.

    This change sets up the paging_pool with enough tracking capacity to track up to 1024 pre-allocated pages; this is sufficient to avoid the re-allocation in #4 above and avoid the issue.

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

    How This Was Tested

    Previous FV processing code that was panic-ing no longer panics with this change.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • rust-tool-cache: Gracefully handle rust-toolchain.toml issues @makubacki (#211)
    Change Details
      ## Description

    Print obvious errors if either the file is missing or the [tools] section is not found.

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

    How This Was Tested

    • rust-toolchain.toml not present
    • [tools] section missing in rust-toolchain.toml
    • [tools] section present in rust-toolchain.toml

    Integration Instructions

    • N/A


  • Changes for internal crate publishing @makubacki (#209)
    Change Details
      ## Description

    Minor updates to ReleaseWorkflow.yml to handle publishing to an internal feed.

    Add the feed info in .cargo/config.toml.

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

    How This Was Tested

    Published crates from uefi-sdk.

    Integration Instructions

    • Repos using the workflow should be publishing to the UefiRust feed for now.


  • Adding CPU arch support for AArch64 @kuqin12 (#203)
    Change Details
      ## Description

    This change adds the CPU Arch protocol and hardware interrupt protocol for AArch64.

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

    How This Was Tested

    This change was tested on QEMU SBSA platform. With a CpuDxe driver modified to only support memory attribute setting, the system can boot to UEFI shell.

    Integration Instructions

    InterruptBases needs to be initiated before handing off the core init.

      </blockquote>
      <hr>
    </details>
    
  • Move debugger initialization to after allocator @cfernald (#206)
    Change Details
      ## Description

    Moves the debugger to later after allocator initialization in preparation for coming debugger crate changes.

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

    How This Was Tested

    Tested on Q35 with local debugger changes

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • Temporarily Comment out init\_performance\_lib @os-d (#204)
    Change Details
      ## Description

    Top of tree Q35 crashes with init_performance_lib, as qemu64 does not support invtsc, resulting in a divide by zero error. Other cpu models crash the system in various other ways. This is commented out for now to unblock development while other approaches are considered.

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

    How This Was Tested

    Tested by booting Q35 to Windows.

    Integration Instructions

    N/A.

      </blockquote>
      <hr>
    </details>
    

⚠️ Breaking Changes

  • [REBASE \& FF] Use the paging Crate @os-d (#200)
    Change Details
      ## Description

    This PR includes the changes required to move DXE Core to the paging crate. Note, it depends on PRs into most of the other Rust repos we have, so Cargo.toml is not updated with new versions yet, that will come as the other PRs are merged. Tests and documentation will be updated in this PR before it is ready to check in. It also needs to be tested on real hardware.

    Rust-y reviews are welcome (why didn't you use this simple function or rewrite it this way?)

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

    How This Was Tested

    Tested by booting Q35 to Windows with the new MpDxe and no CpuDxe.

    Integration Instructions

    x86 platforms should drop CpuDxe and only include MpDxe (assuming they want MP services).

      </blockquote>
      <hr>
    </details>
    

🔐 Security Impacting

  • [REBASE \& FF] Use the paging Crate @os-d (#200)
    Change Details
      ## Description

    This PR includes the changes required to move DXE Core to the paging crate. Note, it depends on PRs into most of the other Rust repos we have, so Cargo.toml is not updated with new versions yet, that will come as the other PRs are merged. Tests and documentation will be updated in this PR before it is ready to check in. It also needs to be tested on real hardware.

    Rust-y reviews are welcome (why didn't you use this simple function or rewrite it this way?)

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

    How This Was Tested

    Tested by booting Q35 to Windows with the new MpDxe and no CpuDxe.

    Integration Instructions

    x86 platforms should drop CpuDxe and only include MpDxe (assuming they want MP services).

      </blockquote>
      <hr>
    </details>
    

Full Changelog: v6.1.0...v7.0.0