patina-v1.0.1
What's Changed
-
Ingest patina\_paging version 7 @cfernald (#471)
Change Details
## Description
Ingests the patina_paging and adjusts for braking changes that come with it. Primarily the removal of the
borrow_allocatorandALLOCATORdefinitions in thePageTabletrait.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Unit Tests
- Q35 Boot
- SBSA Boot
Integration Instructions
N/A
</blockquote> <hr> </details>
-
RFC: Standardize crate layout for component crates @Javagedes (#434)
Change Details
An RFC for defining a standardize crate layout for any crate who produces a component
Current RFC State: FCP
-
.github: Re-enable cargo release dry-run @vineelko (#463)
Change Details
## Description
.github: Re-enable cargo release dry-run which were disabled during the crate rename PR(#425).
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
NA
Integration Instructions
NA
-
[REBASE\&FF] Set minimum rust version to 1.85.0 @Javagedes (#464)
Change Details
## Description
Updates the minimum supported rust version to 1.85.0 as we are also updating goblin to 0.10, which requires 1.85
- 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 v1.0.0 @vineelko (#465)
Change Details
## Description
This pull request updates the
Cargo.tomlfile to release version1.0.0of thepatinapackage after the patina sdk crate refactoring.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
NA
Integration Instructions
NA
</blockquote> <hr> </details>
🐛 Bug Fixes
-
Update core\_disconnect\_controller to not disconnect drivers that are already disconnected and preserve ordering. @joschock (#470)
Change Details
## Description
core_disconnect_controlleridentifies all drivers that have any protocol on the given controller handle open by driver and attempts to stop them all. In some cases, however, stopping a driver earlier in the list may have the side effect of stopping a driver not yet processed. Prior to this change, a driver that had already been stopped was unconditionally processed again when it was reached in the list, resulting in a second call to it driver_binding->stop(). This is unexpected behavior not aligned with the EDK2 C core reference or the spec.This change ensures that a driver that has already been stopped is skipped when it is later processed. In addition, it updates the driver and child handle processing to maintain stable ordering (i.e. driver and child handles are processed in the order they were added to the handle).
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Functionally tested using USB hot add/hot remove flows to stimulate relatively complicated connect/disconnect flows. Observed no more double stops() with this change.
Integration Instructions
N/A
-
Fix issues with Uninstall and Close protocol caused by remove\_protocol\_usage behavior. @joschock (#462)
Change Details
## Description
Prior to this change,
remove_protocol_usagewas using retain, which removed all matching usages. This had the effect of prematurely removing some usages which changed the ordering/execution expectations of some calling code, causing certain flows involving DisconnectController to fail.remove_protocol_usagenow only removes a single instance, and instances are removed in last-in-first-out order. This matches EDK2 reference behavior for usage management and is also symmetric withadd_protocol_usage.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Functional testing involving USB mass storage hot add/remove. Prior to this change, removing USB storage could cause ASSERTs in FAT and Partition drivers due to behavior described above violating assumptions in those drivers. After this change, USB mass storage hot add/remove now works as expected.
Integration Instructions
N/A
📖 Documentation Updates
-
patina\_sdk:memory: Implement mock MemoryManager @Javagedes (#448)
Change Details
## Description
Implements a working MemoryManager implementation for the MemoryManager trait by using the global allocator. This should be used when a mock is needed for testing purposes, that can allocate and deallocate memory as expected.
This commit also adds mockall's automock to the MemoryManager trait, to simplify mocking MemoryManager interface method failures in tests.
Overall this provides two mocks for MemoryManager automock's
MockMemoryManagerand a custom working MemoryManager,StdMemoryManager.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Compiles
Integration Instructions
N/A
</blockquote> <hr> </details>
Full Changelog: patina-v1.0.0...v1.0.1