patina-v21.0.4
What's Changed
-
[REBASE \& FF] patina\_debugger: Don't Touch Uncached Memory By Default @os-d (#1503)
Change Details
## Description
This PR contains two commits:
Debugger: Move to PatinaPageTable Trait
Currently, the debugger uses the PageTable trait from patina_paging directly. On X64, this does not allow getting caching attributes since they are managed by MTRRs.
In preparation for using caching attributes in the debugger, move to the PatinaPageTable trait from patina_internal_cpu to get caching attributes uniformly.
This requires a new API in patina_internal_cpu to get the existing page table instead of creating a new one.
patina_debugger: Don't Access Uncached Memory By Default
It has been observed on physical platforms that WinDbg can request addresses in uncached memory. This results in the debugger attempting to read them. It uses the poke test to tell if this is safe. Sometimes the poke test works, but in one case, a machine check is generated to all cpus and the poke test cannot recover from this.
This changes this to check if memory is uncached. If so, the debugger will fail to read it. A new monitor cmd will toggle the ability of the debugger to read uncached memory or not.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
On a physical Intel platform that was getting a #MC when an uncached range was requested to be read by WinDbg and so the debugger read it because it was mapped. After this, the #MC doesn't occur.
Integration Instructions
If uncached memory must be touched from the debugger, call
!uefiext.monitor toggle_uncached_access(or otherwise call the monitor command) to toggle the ability.
-
components: Fix grammatical error in patina\_adv\_logger code example @makubacki (#1504)
Change Details
## Description
Fixes duplicate articles ("a the") that has been observed in logs from a few platforms copying the example as-is.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all
Integration Instructions
- N/A
📖 Documentation Updates
-
mdbook: Add training videos page @makubacki (#1507)
Change Details
## Description
Make Patina training video content conveniently accessible from the documentation by adding a training video page.
Closes #1432
Closes #1433
Closes #1434
If you're going to preview the page, view the rendered mdbook content locally with
mdbook serve ./docs(not the GitHub markdown page).- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
mdbook build ./docs
Integration Instructions
- N/A
-
mdbook: Update intro material, add mdbook-linkcheck, minor fixes [Rebase \& FF] @makubacki (#1499)
Change Details
## Description
mdbook updates that at a high-level:
- Add mdbook-linkcheck as a backend
- Update introduction material
- Makes some miscellaneous fixes
.github/workflows/publish-mdbook.yml: Do not attempt to deploy on forks
Most forks are likely not intending to publish the Patina mdbook
on their fork repository. Skip the deployment step on forks.
docs: Sort links in SUMMARY.md
Make links easier to find by sorting them alphabetically.
mdbook: Update introduction material
Moves content in the navigation bar to prioritize key information
when less familiar with the project.Adds a new page on "Patina in the UEFI Rust Ecosystem" to provide more
context on how Patina fits into the broader UEFI Rust ecosystem.Minor other edits in introduction material to improve flow and
readability.
mdbook: Minor fixes and updates
- dxe_core/memory_management.md: Fixed a couple of typos
- patina.md: Fixed trailing whitespace and updated current code
coverage in the "Notable DXE Core Features" section
mdbook: Add linkcheck backend
Adds the mdbook-linkcheck backend to check for broken links in the
book.https://github.com/Michael-F-Bryan/mdbook-linkcheck
- mdbook-linkcheck added to rust-toolchain.toml
- Configuration is added to book.toml
- A few cases where square brackets were not escaped in md files
are fixed - publish-mdbook.yml is updated to upload artifacts from docs/book/html
instead of docs/book because when mdbook has multiple output backends
([output.html] and [output.linkcheck]), it nests output in
subdirectories under the build dir (e.g., book/html/, book/linkcheck/)
instead of writing directly to book/.
Since mdbook-linkcheck can run after these changes without warnings,
it is not marked as optional in the book.toml configuration and it is
installed in the CI workflow, so it can run like the other mdbook
tools.A broken link will fail
mdbook build, with a clear error message
about which link is broken:(mdbook::renderer): Invoking the "linkcheck" renderer error: File not found: todo!() ┌─ introduction.md:118:4 │ 118 │ 4. [Contributing to Patina](todo!()) │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File not found: todo!() error: File not found: ../does_not_exist.md ┌─ dev/documenting/reference.md:15:1 │ 15 │ [Test Broken Link](../does_not_exist.md) │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File not found: ../does_not_exist.md Error: One or more incorrect linksNote: The
follow-web-linksdefault option is left to its default
value offalseto avoid linkcheck attempting to validate external
links and potentially causing CI failures due to external sites being
down or rate-limiting requests.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
mdbook build ./docs- Run cspell on
./docs
Integration Instructions
- N/A
Full Changelog: patina-v21.0.3...v21.0.4