Skip to content

patina-v8.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 18:45
· 737 commits to refs/heads/main since this release
ba24405

What's Changed

  • Set toolchain to 1.90 and fix issues with allocator\_api and clippy. @joschock (#755)
    Change Details
      ## Description

    Sets the toolchain to 1.90, fixes issues with allocator_api and clippy (none of which are expected to be functional/behavior changes).

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

    How This Was Tested

    Unit Tests and clippy check pass, confirmed boot on aarch64 hardware.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • rust-version-check.yml: Only run on main @makubacki (#768)
    Change Details
      ## Description

    Add main branch trigger to prevent the worfklow from running when feature branches are targeted by PRs to merge main into the feature branch.

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

    How This Was Tested

    • PR created to non-main branch on fork

    Integration Instructions

    • N/A


  • Add pdbhelper.dll to .gitignore @os-d (#764)
    Change Details
      ## Description

    pdbhelper.dll is generated by the stack trace resolver script and is not intended to be tracked by version control. Ignore it.

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

    How This Was Tested

    Doesn't show up in git status any longer

    Integration Instructions

    N/A.

      </blockquote>
      <hr>
    </details>
    
  • rust-tool-cache: Allow specifying the toolchain file path @Javagedes (#758)
    Change Details
      ## Description

    Allows a workflow to specify the location of the toolchain file. This is useful for workflows that clone multiple repositories and do not have the rust-toolchain.toml file at the root of the workspace.

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

    How This Was Tested

    CI

    Integration Instructions

    N/A - default location stays the same.

      </blockquote>
      <hr>
    </details>
    
  • Bugfix invalid "`" usage in javascript template string @Javagedes (#756)
    Change Details
      ## Description

    We must escape the "`" usage in javascript template strings, to prevent the following error:

    SyntaxError: Unexpected identifier 'rust'
        at new AsyncFunction (<anonymous>)
        at callAsyncFunction (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:36187:16)
        at main (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:36285:26)
        at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:36260:1
        at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:36317:3
        at Object.<anonymous> (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:36320:12)
        at Module._compile (node:internal/modules/cjs/loader:1529:14)
        at Module._extensions..js (node:internal/modules/cjs/loader:1613:10)
        at Module.load (node:internal/modules/cjs/loader:1275:32)
        at Module._load (node:internal/modules/cjs/loader:1096:12)
    Error: Unhandled error: SyntaxError: Unexpected identifier 'rust'
    

    ref: https://github.com/OpenDevicePartnership/patina/actions/runs/17920730437

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

    How This Was Tested

    N/A

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • chore: Release v8.1.0 @makubacki (#751)
    Change Details
      ## Description

    Update the version for release v8.1.0.

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

    How This Was Tested

    • N/A

    Integration Instructions

    • N/A


🚀 Features & ✨ Enhancements

  • patina\_dxe\_core: Combine Core and UEFI dispatch @Javagedes (#762)
    Change Details
      ## Description

    This commit combines the core component dispatcher and the UEFI driver dispatcher into a single dispatch loop. This loop is broken into two phases. The first phase performs a single pass of core component dispatch while the second phase performs a single pass of UEFI driver dispatch. Should either phase result in at least a single dispatch, the loop will continue. This loop will only exit when a full iteration of both phases results in no dispatches.

    This functionality is necessary to produces services that are rust-ified wrappers around C-functionality (such as protocols). While this is not a suggested way of producing services, it is an acknowledged stop-gap until pure rust implementations can be provided. This is specifically necessary for #592, which requires certain protocols to exist before a service can be produced (such as Console support, variable services, etc).

    Note: There is an intent to move the core UEFI dispatcher into a multi-dispatchable component, however RFC work needs to be performed to come up with an adequate solution for multi-dispatchable components, and this is needed now to support the aforementioned RFC.

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

    How This Was Tested

    Verified boot to UEFI shell on virtual platform.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • patina\_debugger: restart the debugger if GdbStub crashes @cfernald (#754)
    Change Details
      ## Description

    The patina debugger will crash very often due to the internal GdbStub state machine hitting an error. This is designed such that errors are not recoverable. This commit makes it such that the debugger will be restarted and the GdbStub re-initialized when this happens. This should increase stability by avoiding debugger crashes.

    When this restart occurs, any register state altered during the current break would be lost. additionally, the IO queue will be cleared and the break packet will be resent. It is unclear at this point if this behavior will be problematic, so further refinement may be needed.

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

    How This Was Tested

    Tested on Q35

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

📖 Documentation Updates

  • docs: Add general docs about memory safety @makubacki (#757)
    Change Details
      ## Description

    Adds documentation that focuses on the fundamental advantages of Rust memory safety and how it applies to Patina.

    • memory_safety_strategy.md: Meant to be a starting point for a reader to learn (1) what problems exist in C-based FW, (2) how Rust prevents these issues (3) how the Patina DXE Core decision specifically helps address these most immediately in existing firmware implementations.

    • uefi_memory_safety_case_studies.md: Shows practical examples of where classes of memory safety issues have been a problem in C with sample code of how this could be handled better in Rust.

    These are linked to in "patina.md". The goal for these documents is to explain fundamental memory safety offered by Rust and how that differs from approaches available in C and clarify what unsafe means and its overall exposure and role in Patina Rust firmware.

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

    How This Was Tested

    • cargo make all

    Integration Instructions

    • N/A


Full Changelog: patina-v8.1.0...v8.2.0