summaryrefslogtreecommitdiffstats
path: root/docs/05-operations/03-risc-v-gsp-rm-vm.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/05-operations/03-risc-v-gsp-rm-vm.md')
-rw-r--r--docs/05-operations/03-risc-v-gsp-rm-vm.md34
1 files changed, 32 insertions, 2 deletions
diff --git a/docs/05-operations/03-risc-v-gsp-rm-vm.md b/docs/05-operations/03-risc-v-gsp-rm-vm.md
index a55e3ac..b6e52db 100644
--- a/docs/05-operations/03-risc-v-gsp-rm-vm.md
+++ b/docs/05-operations/03-risc-v-gsp-rm-vm.md
@@ -67,6 +67,14 @@ run the same stimulus in risc-v-gsp-rm-debugger, and compare the recorded sessio
`docs/06-ACCURACY.md`. Portability runs (new GSP, new device, GB10-class
architecture) are described in `docs/07-PORTABILITY-PLAYBOOKS.md`.
+When the question is an accept/refuse predicate on a control or entry (e.g. a
+promote/shape the firmware keeps refusing), run the firmware's own validation
+branch offline first with `harness/valprobe.py` (crafted state, labelled
+outcome addresses, deterministic; `docs/47-VALIDATION-PREDICATE-PROBE.md`) —
+it answers in seconds what would otherwise cost a static guess or a supervised
+cycle. Use `harness/rehost.py` (`docs/46-SURGICAL-REHOST.md`) for a whole
+handler/function whose first missing state is itself the finding.
+
## 4. Quick start
From the repository root:
@@ -93,8 +101,30 @@ hooks/breakpoints/watchpoints, memory tools, structure decoding, session
recording and analysis, declarative probes, plugins, remote calls and
run-to-cursor, the injection SDK with direct and firmware-dispatched service
invocation, the Ghidra symbol/hit bridge and Ghidra control bridge, the
-real-firmware first-fault probe, and the TCG full-memory trace plugin. Not
-implemented: device model (R1), custom simulator (R2), MCP plugin (R3) — all
+real-firmware first-fault probe, and the TCG full-memory trace plugin.
+
+Standalone simulator increments (2026-10-06): the native RV64 machine with a
+GSP device model and a deterministic real-firmware boot ladder to **B3**
+(570.144 image, ~474k instructions, two-run identical), one-command release
+triage, GMMU/FBIF observe-only windows and the PTE/PDE decoder, the RM RPC
+capture decode/compare/stimulus tooling (`harness/rm_capture.py`, docs/45),
+surgical rehost (`harness/rehost.py`, docs/46) and the validation-predicate
+probe (`harness/valprobe.py`, docs/47). The predicate probe executes the
+shipped firmware's own accept/refuse branch offline with crafted state and
+labelled outcomes (seconds, deterministic) — the intended first stop for
+control/entry-shape questions before any supervised cycle. The functional
+GMMU page-table walker and launch memory-contract auditor
+(`sim/gmmu_walk.py`, `harness/launch_audit.py`, docs/48) resolve every
+engine-visible address of a submission (ring, inline-QMD destination,
+parameter/program pages, release slot) against captured page tables and
+classify mismatches, so "where would the engine read/write this VA?" is an
+offline question. The suite is at 489 tests.
+
+Limits: fidelity is instruction/memory semantics (L0/L1) — no timing (L2) and
+no device environment (L3); host message traffic (B4/B5) is not yet served,
+so sessions stay boot-state/predicate level; the GR engine and other GPU
+execution units are **not** modelled, so engine/silicon behaviour remains a
+hardware question. Not implemented: custom simulator (R2), MCP plugin (R3) —
roadmap. The long-term program (adversarial navigation, adjacent
microcontrollers, custom simulator, Verilog soft-core, agentic platform) is
documented in `debug/risc-v-gsp-rm-vm/RISC-V-GSP-RM-DEBUGGER-ROADMAP.md`.