patina-v1.0.0
What's Changed
-
Remove TPL lock from uninstall\_multiple\_protocol\_interfaces @joschock (#453)
Change Details
## Description
This removes the TPL lock from
uninstall_multiple_protocol_interfaces. This brings the behavior of this function with respect to TPL in line with EDK2 C reference behavior.Acquiring the lock in unisntall_multiple_protocol_interfaces can lead to issues with drivers that are coded against the EDK2 behavior.
An example of such an issue is in the FAT driver (https://github.com/tianocore/edk2/tree/master/FatPkg/EnhancedFatDxe) which attempts to acquire its own lock at TPL_CALLBACK as part of DriverBindingStop() functionality. This will trigger a TPL inversion if
uninstall_multiple-protocol_interfacesis used to remove a BlockIo instance that is being used by the FAT driver - this will cause the FAT driver to be stopped while the TPL is NOTIFY and when it tries to acquire its own lock at TPL_CALLBACK a TPL inversion occurs.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Functional testing with USB hot remove - prior to this change, USB hot remove will cause a TPL assert in FAT driver binding as described above. After this change, TPL assert in FAT driver no longer occurs.
Integration Instructions
N/A
</blockquote> <hr> </details>
-
Temporarily use goblin 0.9.3-hotfix.1 @makubacki (#454)
Change Details
## Description
Based on this commit which is currently the goblin/master tip:
Hotfix in the patina-fw registry is temporarily used until m4b/goblin@f06b768 is released.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all
Integration Instructions
N/A
-
chore: Release v0.1.1 @kouchekiniad (#456)
Change Details
## Description
Version change to v0.1.1.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
⚠️ Breaking Changes
-
RFC Implementation: Consolidate SDK Crates into patina\_sdk and patina\_sdk\_macro as Modules @vineelko (#449)
Change Details
## Description
This PR implements the RFC(#437) consolidating the existing crates inside the
Patinasdkdirectory into thepatina_sdkandpatina_sdk_macrocrates,
organized by modules. No functional changes to the modules are intended.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Validated on Q35/SBSA
Integration Instructions
The crates inside
sdkhave been consolidated intopatina_sdkandpatina_sdk_macro. Any new code should adhere to the module hierarchy below.</blockquote> <hr> </details>
🐛 Bug Fixes
-
Debugger: Invalidate TLB and instruction caches on exit @cfernald (#414)
Change Details
## Description
The debugger may edit the page table mappings or instructions in the instruction cache. These caches are not inherently coherent with the data cache and so these should be invalidated on returning from the debugger.
Notably, the x64 memory model does guarantee writes will invalidate the icache so long as they use the same linear address, which will be true since we only operate identity mapped.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested on QEMU
Integration Instructions
N/A
</blockquote> <hr> </details>
Full Changelog: patina-v0.1.1...v1.0.0