patina-v17.1.0
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
&Storageparameters (multiple immutable references) - Allow a single
&mut Storageparameter (exclusive mutable reference) - Prevent mixing
&Storagewith&mut Storage - Prevent duplicate
&mut Storageparameters
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 Storageparameter.
- 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
- Allow multiple
🚀 Features & ✨ Enhancements
-
patina\_dxe\_core: PI dispatcher subsystem / removal of statics @Javagedes (#1121)
Change Details
## Description
This pull-request combines
fv.rsanddispatcher.rsinto a single module (pi_dispatcher) and removes the statics currently used infv.rsanddispatcher.rs. This is a part of the work to remove all statics inpatina_dxe_core.This also begins the work of removing any
efiapifunctions from the public interface and only making them available via system tables.There may be extra work in a separate PR to bring
image.rsinto the fold ofpi_dispatcher.Reviewing This PR
This PR, while it has a lot of LoC Changes, This is mainly due to the re-organization of
dispatcher.rsandfv.rs. The main things to review, that actually changed are:fv.rsneeds 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 useNonNull- A new struct defintion in
pi_dispatchercalledPiDispatcherthat has some abstractions over theDispatcherContextandFvData(Now calledFvProtocolData) code - 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.
- Minor changes to
dxe_services.rsto account for needing to callSelf::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
- It partially reworks the README to provide additional information and examples regarding both platform and component integration of patina_mm.
- 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