patina-v21.0.3
What's Changed
-
[REBASE \& FF] Add Ability To Hide Debugger Monitor Commands @os-d (#1477)
Change Details
## Description
patina_debugger: Allow Hidden Monitor Cmds
Patina adds some monitor cmds that are not intended to be run by a user, such as the reload cmd. UefiExt is expected to run this in response to the !loadcore cmd.
However, the monitor help will show this as a valid command for a user to run, which is confusing. This hides that command as well as generically providing a mechanism to do so.
Drop GCD Debugger Monitor Cmd
A more advanced GCD command is available as of UefiExt v0.5.0. Drop the monitor cmd.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested by connecting Q35 and a physical Intel platform to the debugger and confirming the reload and gcd monitor cmds do not show up any longer but that !loadcore still works.
Integration Instructions
Upgrade to the latest UefiExt release to ensure the UefiExt GCD command is available.
</blockquote> <hr> </details>
-
Drop abi\_x86\_interrupt Unstable Feature @os-d (#1478)
Change Details
## Description
The need for this feature was dropped in f0132a3, however, the feature was not removed. Remove it.
Closes #812
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A.
Integration Instructions
N/A.
</blockquote> <hr> </details>
-
Updated EFI\_CPU\_ARCH\_PROTOCOL to provide DmaBufferAlignment @rogurr (#1468)
Change Details
* Updated CPU trait to provide cache granule size * Added granule size reporting to x86, arm, and stub components * Updated publishing of CPU architecture protocol to include granule size.
Description
Addressing Issue #1466
Current Behavior: The code file patina_dxe_core\src\cpu\cpu_arch_protocol.rs is publishing an EFI_CPU_ARCH_PROTOCOL that has a field called DmaBufferAlignment to provide the size, in bytes, of the alignment required for DMA buffer allocations which is currently publishing a byte size of 0. The value should be the largest cache line size of any cache in the system per the UEFI PI spec, version 1.9, section II-12.3.1.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Found bug when porting Patina to a private build chipset reference and attempting to instantiate the NVME.
Integration Instructions
N/A
</blockquote> <hr> </details>
-
Components: Print Before Dispatching Components @os-d (#1473)
Change Details
## Description
Currently, Patina only prints after dispatching a component. However, it is more valuable in debug logs to print before dispatching a component so that if it crashes or hangs, it is easy to tell from the log which component it was.
This changes Patina to print before dispatching a component and to drop the print that prints after dispatching a component if it successfully returns and only log/debug_assert if the component returns with a failure.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Running Q35 and seeing the dispatch print occur before the component is dispatched:
and seeing the failure print/debug_assert when a component fails:
Previously this was seen:
Integration Instructions
N/A.
</blockquote> <hr> </details>
🐛 Bug Fixes
-
patina\_performance: Log cross-module phase markers @cfernald (#1476)
Change Details
## Description
The current implement does not log the cross-module markers for the transitions
from PEI to DXE. In EDK2, these are logged by the DXE Core. Here we need
to do this from the component because it initializes the underlying
functionality. This is not ideal, but it is the best we can do without
merging the performance component into the core.- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Dumped the performance data using
dpin the shellIntegration Instructions
N/A
</blockquote> <hr> </details>
📖 Documentation Updates
-
[REBASE \& FF] Move Architectural Interfaces to SDK @os-d (#1475)
Change Details
## Description
This contains three commits:
Drop x86_64 crate
Patina has light usage of the x86_64 crate and the main usage is for the IDT and GDT, where a different, simplified design is desired.
This updates all consumers to not use the crate and drops the crate.
Use Standard Exception Handler for #DF
Currently, a feature from x86_64 was being used to have special handling for a double fault. However, this is not required as we can use our standard exception handler and identify this is a double fault.
This commit drops use of the feature and instead handles the #DF as we normally do.
Move Architectural Interfaces to SDK's Arch Mod
Centralize architectural interfaces in the SDK instead of sprinkling them around the code.
As a result, the aarch64-cpu crate is no longer required.
This also fixes hyperlinks in the copilot-instructions.md doc.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Booting to Windows and Linux on Q35 and SBSA. Booting to Windows on a physical Intel device. On Q35 and the physical Intel device, connecting the debugger to confirm the IDT changes are working correctly.
Tested the #DF changes by generating a double fault on Q35 and a physical Intel platform by changing RSP to a bad value then generating a #PF.
Integration Instructions
N/A.
Full Changelog: patina-v21.0.2...v21.0.3