Skip to content

patina-v21.0.4

Choose a tag to compare

@github-actions github-actions released this 13 May 19:41
· 139 commits to refs/heads/main since this release
a0385a3

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 links
    

    Note: The follow-web-links default option is left to its default
    value of false to 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