Skip to content

patina-v17.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Dec 19:37
· 414 commits to refs/heads/main since this release

What's Changed

  • Add compile-time validation for Storage parameter conflicts @makubacki (#1158)
    Change Details
      ## Description

    Implement validation rules for component `Storage`` parameters that follow normal Rust borrowing semantics:

    • Allow multiple &Storage parameters (multiple immutable references)
    • Allow a single &mut Storage parameter (exclusive mutable reference)
    • Prevent mixing &Storage with &mut Storage
    • Prevent duplicate &mut Storage parameters

    Adds macro unit tests and UI compilation failure message tests.


    Note: This was not clearly handled in the past (since component inception). An error would have been thrown but it would have misrepresented the problem to a conflicting ConfigMut<T> instead of the real issue which is a conflicting &mut Storage parameter.


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

    How This Was Tested

    • cargo make all
    • QEMU platform boot

    Integration Instructions

    • N/A - These rules should already be followed by components


🚀 Features & ✨ Enhancements

  • patina\_dxe\_core: PI dispatcher subsystem / removal of statics @Javagedes (#1121)
    Change Details
      ## Description

    This pull-request combines fv.rs and dispatcher.rs into a single module (pi_dispatcher) and removes the statics currently used in fv.rs and dispatcher.rs. This is a part of the work to remove all statics in patina_dxe_core.

    This also begins the work of removing any efiapi functions from the public interface and only making them available via system tables.

    There may be extra work in a separate PR to bring image.rs into the fold of pi_dispatcher.

    Reviewing This PR

    This PR, while it has a lot of LoC Changes, This is mainly due to the re-organization of dispatcher.rs and fv.rs. The main things to review, that actually changed are:

    1. fv.rs needs a complete review. This changed the internal data structure of the self-managed FV/FVB protocols and changed the interface for the Pure rust methods to use NonNull
    2. A new struct defintion inpi_dispatcher called PiDispatcher that has some abstractions over the DispatcherContext and FvData (Now called FvProtocolData) code
    3. Changes to all tests to create a static core and set it as the singleton instance for the test. This is unforuntely going to be necessary until we get the major systems like protocol db switched over.
    4. Minor changes to dxe_services.rs to account for needing to call Self::instance() in some efiapi functions.
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    CI continues to pass. Boot to shell in Q35.

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

🐛 Bug Fixes

  • [AArch64] Fixing a SPI interrupt ID miscalculation @kuqin12 (#1156)
    Change Details
      ## Description

    The SPI interrupt ID range comes after the PPI range, which starts from 32. The current logic compensates this by subtracting the the starting index, however the subtraction expression is incorrect.

    This change fixed the index miscalculation.

    In addition, it also removes 2 redundant steps for setting the priority as it is already covered in gic setup step.

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

    How This Was Tested

    This was tested on both QEMU SBSA and proprietary hardware platform, verified that the ARM watchdog timer can fire properly through the corresponding interrupt handler.

    Integration Instructions

    N/A




  • patina\_debugger/x64: Fix FPU and ST register index calculation @makubacki (#1154)
    Change Details
      ## Description

    Correct the register ID offset calculation for FPU (registers 29-35) and ST (registers 36-44) to properly map to array indices 0-6 and 0-8 respectively.

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

    How This Was Tested

    • cargo make all

    Integration Instructions

    • N/A


📖 Documentation Updates

  • [REBASE \& FF] Add Stability Patina Tests @os-d (#1146)
    Change Details
      ## Description

    This PR adds stability tests to Patina DXE Core. It also adds timer based patina test dispatch.

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

    How This Was Tested

    Tested on Q35 and SBSA.

    Integration Instructions

    See docs.




  • patina\_mm: Include readme in module docs @Javagedes (#1139)
    Change Details
      ## Description
    1. It partially reworks the README to provide additional information and examples regarding both platform and component integration of patina_mm.
    2. It replaces the current crate-level module documentation with the readme. This has two effects: The first is that the examples provided in the readme are now tested and secondly the readme and module documentation will always match.
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    CI

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

Full Changelog: patina-v17.0.0...v17.1.0