v16.0.0
What's Changed
-
Disable cargo release dry run - To pass CI for PR#425 @vineelko (#426)
Change Details
## Description
Disable Cargo Release Dry Run – To Pass CI for [PR#425](#425)
Why is this one-off exception needed?
With [PR#425](#425), we are restructuring the crates and their names. Most of these crates do not yet exist in the registry.Currently, our CI setup performs a dry run of the release process for every PR, which includes checking whether all specified dependency crates are available in the registry. Since these are new and not yet published, the dry run fails.
This change disables the dry run to allow the CI to pass for the above PR. Once the PR is merged, we will proceed with the usual process of generating a draft release, and the
publishreleaseworkflow will handle the actual publication of the crates.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
NA
Integration Instructions
NA
-
RFC: Categorizing and Renaming Patina Crates for Consistency @vineelko (#408)
Change Details
## Description
This RFC proposes a classification of Patina crates into public and internal categories, and renames them to follow a consistent naming convention.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
NA
Integration Instructions
NA
-
add unit tests for driver\_services @kat-perez (#419)
Change Details
## Description
This PR adds unit tests for driver_services and raises coverage to 50.86%.
Fixes #245 (will continue to work on this)- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make coverage
Integration Instructions
N/A
</blockquote> <hr> </details>
-
Use new `patina_mtrr` and `patina_paging` crate names @makubacki (#422)
Change Details
## Description
We decided to change the crate names from the hyphenated name (e.g.
patina-mtrr) to one with an underscore (e.g.patina_mtrr) for consistency with other Patina crate names.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all
Integration Instructions
- Patina MTRR and Paging crate names are now
patina-mtrrandpatina-paging
⚠️ Breaking Changes
-
Allow multiple HOB parsers per guided HOB @makubacki (#423)
Change Details
## Description
Today, if multiple components register against the same HOB GUID, the subsequent HOB parsers will "overwrite" the earlier ones.
To allow independent components to both register parsers against the same HOB GUID, the HOB parser map now contains a set of maps to each unique type (
TypeId) that registers a HOB parser so that they can parse the HOB however they intended without collision.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all- Unit test with multiple parsers for the same HOB GUID
- QEMU boot with two components using different parsers for the same HOB GUID
Integration Instructions
This is marked a breaking change because of the change to the
uefi_sdk::component::storage::Storage::get_hob_parser()function signature:- Before:
pub fn get_hob_parser(&self, guid: &Guid) -> Option<fn(&[u8], &mut Storage)> - After:
pub fn get_hob_parsers(&self, guid: &Guid) -> Vec<fn(&[u8], &mut Storage)>
🚀 Features & ✨ Enhancements
-
Allow multiple HOB parsers per guided HOB @makubacki (#423)
Change Details
## Description
Today, if multiple components register against the same HOB GUID, the subsequent HOB parsers will "overwrite" the earlier ones.
To allow independent components to both register parsers against the same HOB GUID, the HOB parser map now contains a set of maps to each unique type (
TypeId) that registers a HOB parser so that they can parse the HOB however they intended without collision.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all- Unit test with multiple parsers for the same HOB GUID
- QEMU boot with two components using different parsers for the same HOB GUID
Integration Instructions
This is marked a breaking change because of the change to the
uefi_sdk::component::storage::Storage::get_hob_parser()function signature:- Before:
pub fn get_hob_parser(&self, guid: &Guid) -> Option<fn(&[u8], &mut Storage)> - After:
pub fn get_hob_parsers(&self, guid: &Guid) -> Vec<fn(&[u8], &mut Storage)>
🐛 Bug Fixes
-
Allow multiple HOB parsers per guided HOB @makubacki (#423)
Change Details
## Description
Today, if multiple components register against the same HOB GUID, the subsequent HOB parsers will "overwrite" the earlier ones.
To allow independent components to both register parsers against the same HOB GUID, the HOB parser map now contains a set of maps to each unique type (
TypeId) that registers a HOB parser so that they can parse the HOB however they intended without collision.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all- Unit test with multiple parsers for the same HOB GUID
- QEMU boot with two components using different parsers for the same HOB GUID
Integration Instructions
This is marked a breaking change because of the change to the
uefi_sdk::component::storage::Storage::get_hob_parser()function signature:- Before:
pub fn get_hob_parser(&self, guid: &Guid) -> Option<fn(&[u8], &mut Storage)> - After:
pub fn get_hob_parsers(&self, guid: &Guid) -> Vec<fn(&[u8], &mut Storage)>
-
Handle All Notify Events and Prevent Double-Queueing of Event Notifications @kouchekiniad (#415)
Change Details
## Description
When a TPL is restored, any notify events are processed, which may result in a notify callback being called. This callback may result in a notify events being added to the event queue. This change will continuously process all events in the event queue until the queue is empty. Additionally, this commit moves the EVENT_NOTIFIES_IN_PROGRESS static inside of the restore_tpl function, as it is only used in that function.
Closes #199
Additionally, this change guarantees that event notifications will not be double-queued in order to match the Tianocore implementation of events. Before this change, the implementation of
OrdonTaggedEventNotificationprevents an event notification being queued twice ifsignal_eventis called one-after-the-other, but allows double-queuing in the scenario where an event is signaled, the pending events iterator is collected, then the event is signaled again before the event's callback is called. This scenario will be run into when an event is signaled, then the callback for an event earlier in the iterator signals the same event.Closes #374
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Booted to Windows on x64 physical platform. Includes unit test.
Integration Instructions
N/A
Full Changelog: v15.1.1...v16.0.0