Share isolation level 3 across Armv8-M ports and bring MIMXRT700 to parity - #72
aidangarske wants to merge 8 commits into
Conversation
…form hooks across ports
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #72
Scan targets checked: wolftrust-src, wolftrust-bugs
Coverage: 6 of 16 in-scope changed file(s) opened by the reviewer; not opened: port/common/armv8m/l3_layout.h, port/common/armv8m/secure_l3_bands.ld, port/common/armv8m/secure_l3_memory.ld, port/common/armv8m/secure_l3_symbols.ld, port/common/armv8m/secure_l3_tail.ld, port/mimxrt700/l3_port.h, port/mimxrt700/platform_mimxrt700.c, port/stm32h563/l3_port.h, port/stm32h563/platform_stm32h563.c, port/stm32h563/secure.ld
Fenrir result: Approved ✅
No new issues found in the changed files.
Advisory only — this automated result does not count as a GitHub approval.
Review tier: Lite
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The security-critical linker and isolation refactor spans both Armv8-M ports and requires final human validation.
Review effort: Balanced
Findings: None
What changed in this PR
Centralizes Armv8-M isolation-level-3 infrastructure and brings MIMXRT700 scenario coverage to STM32H563 parity.
Changes:
- Shares L3 memory layouts, linker fragments, and platform hooks.
- Derives layout checks from port headers.
- Expands MIMXRT700 isolation probes and CI scenarios.
| File | Description |
|---|---|
.github/workflows/cross-compile.yml |
Tests fail-closed layout extraction. |
docs/MIMXRT700-Guide.md |
Documents shared L3 integration. |
docs/Porting.md |
Adds shared-port guidance. |
docs/Testing.md |
Documents RT700 L3 scenarios. |
mk/arch-armv8m.mk |
Integrates shared L3 build inputs. |
mk/common.mk |
Compiles shared port sources. |
mk/target-mimxrt700.mk |
Derives layout-check arguments. |
mk/target-stm32h563.mk |
Selects the port linker script. |
port/common/armv8m/l3_layout.h |
Defines shared L3 layout. |
port/common/armv8m/platform_l3.c |
Implements shared platform hooks. |
port/common/armv8m/secure_l3_bands.ld |
Defines partition data sections. |
port/common/armv8m/secure_l3_memory.ld |
Defines shared memory regions. |
port/common/armv8m/secure_l3_symbols.ld |
Defines shared stack symbols. |
port/common/armv8m/secure_l3_tail.ld |
Enforces layout invariants. |
port/mimxrt700/hsm_flash.c |
Adds deputy flash probes. |
port/mimxrt700/l3_port.h |
Supplies the RT700 peripheral input. |
port/mimxrt700/memory_map.h |
Adopts the shared layout. |
port/mimxrt700/platform_mimxrt700.c |
Removes duplicated L3 hooks. |
port/mimxrt700/secure.ld |
Includes shared linker fragments. |
port/stm32h563/l3_port.h |
Supplies the H563 peripheral input. |
port/stm32h563/memory_map.h |
Adopts the shared layout. |
port/stm32h563/platform_stm32h563.c |
Removes duplicated L3 hooks. |
port/stm32h563/secure.ld |
Adds the port-owned linker script. |
src/services/wolfhsm/runner/secure.ld |
Removes the former shared script. |
tests/firmware/mimxrt700-baremetal/guest0.c |
Adds the TRNG isolation probe. |
tests/firmware/mimxrt700-baremetal/Makefile |
Configures the peripheral probe. |
tests/firmware/psa-guest/Makefile |
Selects the breakpoint guest. |
tests/target/lib/scenario.sh |
Centralizes L3 assertions. |
tests/target/lib/scenario_matrix.py |
Enforces required L3 coverage. |
tests/target/run_m33mu_scenario.sh |
Uses shared H563 assertions. |
tests/target/run_rt700_m33mu.sh |
Runs expanded RT700 scenarios. |
tools/check-port-only-diff.sh |
Allows architecture-shared port files. |
tools/l3_layout_args.py |
Extracts layout constants. |
tools/secure_owners.txt |
Assigns the shared object owner. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This PR allows for a more portable solution for Cortex-M L3
Closes #65. Part of #40: MIMXRT700 level 3 is proven under M33MU here, and #40 stays open until the EVK items below pass.
TODO before merge (rest of #40)