diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-02 11:44:31 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-02 11:44:31 -0400 |
| commit | 05797fd8cf884bb680540dfc188f36836a215c9f (patch) | |
| tree | d64966acd9d47037bc8dae1ab9e2e1c66c9d526d /docs/07-developers/02-development-and-analysis-environment.md | |
| parent | 4467eb66a4c8a776e35e9644960eba699dc85e6f (diff) | |
| download | open-iov-05797fd8cf884bb680540dfc188f36836a215c9f.tar.gz open-iov-05797fd8cf884bb680540dfc188f36836a215c9f.zip | |
rename (cosmetic): green-eye -> risc-v-gsp-rm-debugger in user-facing names, docs, CLI, launcher and CI workflow; internal greeneye package/module identifiers unchanged (includes in-flight greeneye module edits present in the tree)
Diffstat (limited to 'docs/07-developers/02-development-and-analysis-environment.md')
| -rw-r--r-- | docs/07-developers/02-development-and-analysis-environment.md | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/docs/07-developers/02-development-and-analysis-environment.md b/docs/07-developers/02-development-and-analysis-environment.md index 114345b..4bff443 100644 --- a/docs/07-developers/02-development-and-analysis-environment.md +++ b/docs/07-developers/02-development-and-analysis-environment.md @@ -1,8 +1,8 @@ -# Development and analysis environment: Ghidra, green-eye and the Open-IOV toolchain +# Development and analysis environment: Ghidra, risc-v-gsp-rm-debugger and the Open-IOV toolchain > The single front door to the environment an Open-IOV developer works in: > the host stack, the guest diagnostics, the CUDA userspace and GSP firmware -> Ghidra corpora, the host RM tooling, green-eye, CI and MCP. Each component +> Ghidra corpora, the host RM tooling, risc-v-gsp-rm-debugger, CI and MCP. Each component > links to the document that specifies it; this page is the map, not a > duplicate of the manuals. @@ -21,7 +21,7 @@ In scope: the developer-facing analysis environment. Out of scope: end-user installation (see [`02-getting-started/01-install-and-first-run.md`](../02-getting-started/01-install-and-first-run.md)), the emulation architecture itself (see [`03-architecture/01-system-overview.md`](../03-architecture/01-system-overview.md)) -and product roadmaps. The green-eye toolchain is **in development and not +and product roadmaps. The risc-v-gsp-rm-debugger toolchain is **in development and not ready yet** — status, limits and flag-removal criteria are in [`05-operations/03-risc-v-gsp-rm-vm.md`](../05-operations/03-risc-v-gsp-rm-vm.md) and the tool's own @@ -45,14 +45,14 @@ flowchart TB GHFW["tools/ghidra + firmware/57X-GSP/<ver><br/>GSP firmware Ghidra projects"] GHCUDA["userspace/cuda Ghidra corpus<br/>+ analysis tools"] end - subgraph DYN["Dynamic firmware analysis - green-eye"] + subgraph DYN["Dynamic firmware analysis - risc-v-gsp-rm-debugger"] GE["Session: hooks, watchpoints, memory,<br/>call, run_until, record"] GEB["Backends: QEMU-RSP + native RV64IMAC"] GEH["harness/, injection SDK,<br/>Ghidra bridges, device maps"] RMH["rmharness host captures"] end subgraph AUTO["Automation"] - CI[".github/workflows/ci.yml<br/>.github/workflows/greeneye.yml"] + CI[".github/workflows/ci.yml<br/>.github/workflows/risc-v-gsp-rm-debugger.yml"] MCP["plugins/mcp_server.py<br/>agent tool surface"] end end @@ -76,7 +76,7 @@ flowchart TB | CUDA static corpus | what is `libcuda` doing, and what changed? | `userspace/cuda/READ-ME-FIRST.md` | | GSP firmware static | what does the firmware image contain? | `tools/ghidra/`, `firmware/57X-GSP/<ver>/` | | Host RM oracle | what does real RM report on this GPU? | `tools/rmtool`, `tools/rmtop`, `rmharness/` | -| Dynamic firmware | what did the firmware server actually do? | `debug/risc-v-gsp-rm-vm/greeneye.sh` | +| Dynamic firmware | what did the firmware server actually do? | `debug/risc-v-gsp-rm-vm/risc-v-gsp-rm-debugger.sh` | | CI / agent | did the broad suite pass; can an agent drive it? | `.github/workflows/`, `plugins/mcp_server.py` | ## 3. Host stack: KVM, QEMU, VFIO and the module @@ -147,7 +147,7 @@ low. Current tooling translates; re-derive old conclusions |---|---| | `tools/cudatool.py` | exports/FDEs/wrappers, `info`, `nearest`, `crash`, `delta`, `fdematch` | | `tools/callwalk.py` | callers/callees/chains over `callgraph.tsv` | -| `tools/diff_corpus.py` | corpus diff across driver versions (match discipline reused by green-eye version diffs) | +| `tools/diff_corpus.py` | corpus diff across driver versions (match discipline reused by risc-v-gsp-rm-debugger version diffs) | | `tools/name_candidates.py`, `subsystem_digest.py` | name candidates and per-subsystem call-tree digests | | `tools/ghidra_*.sh`, `tools/ghidra/` | headless analysis, decompile-at, index/name-map export, merge | | `tools/annotate_corpus.py` | apply the name map to the corpus | @@ -173,7 +173,7 @@ firmware analysis pipeline is driven from `tools/ghidra/`: The upgrade procedure — acquire, version, decompile, diff the RPC dispatcher, update the version surface, validate, roll back safely — is [`05-operations/02` §4.1](../05-operations/02-debugging-and-maintenance-workflows.md); -green-eye adds a runtime layer on top in +risc-v-gsp-rm-debugger adds a runtime layer on top in [`debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md`](../../debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md). ## 7. Host RM oracle: rmtool, rmtop, rmq and rmharness @@ -182,7 +182,7 @@ green-eye adds a runtime layer on top in ioctl layer (`tools/rmtool/src/rm_api.c`, `query.c`); `tools/rmq` is the pre-existing device-info oracle. They allocate only an RM client/device/ subdevice handle and never create engine, channel or memory objects; write -paths are refused in code. Green-eye's `rmharness/` wrappers locate, build and +paths are refused in code. Risc-V GSP-RM debugger's `rmharness/` wrappers locate, build and capture them into sessions. ```bash @@ -197,7 +197,7 @@ Details: `tools/rmtool/` sources, [`rmharness/README.md`](../../debug/risc-v-gsp the tool doc [`17-RM-HARNESS.md`](../../debug/risc-v-gsp-rm-vm/docs/17-RM-HARNESS.md), and the metric use (M1/M6) in `docs/06-ACCURACY.md`. -## 8. green-eye and its subsystems +## 8. risc-v-gsp-rm-debugger and its subsystems `debug/risc-v-gsp-rm-vm/` is the dynamic firmware environment. Its subsystem map: `greeneye/` (Session, memory, symbols, structs, probes, record, analyze, @@ -210,9 +210,9 @@ plugins, Ghidra bridges, injection, device map, native backend), `sim/` ```bash cd debug/risc-v-gsp-rm-vm make demo sdk -./greeneye.sh info && ./greeneye.sh demo -./greeneye.sh probe # real fwimage: first divergence, honestly bounded -./greeneye.sh analyze dumps/<session> +./risc-v-gsp-rm-debugger.sh info && ./risc-v-gsp-rm-debugger.sh demo +./risc-v-gsp-rm-debugger.sh probe # real fwimage: first divergence, honestly bounded +./risc-v-gsp-rm-debugger.sh analyze dumps/<session> ``` The full architecture and API surfaces are @@ -220,13 +220,13 @@ The full architecture and API surfaces are purpose/status is [`05-operations/03-risc-v-gsp-rm-vm.md`](../05-operations/03-risc-v-gsp-rm-vm.md); the long-term program is -[`GREEN-EYE-ROADMAP.md`](../../debug/risc-v-gsp-rm-vm/GREEN-EYE-ROADMAP.md). +[`RISC-V-GSP-RM-DEBUGGER-ROADMAP.md`](../../debug/risc-v-gsp-rm-vm/RISC-V-GSP-RM-DEBUGGER-ROADMAP.md). ## 9. CI and MCP * **Project CI**: `.github/workflows/ci.yml` builds the kernel module, userspace and host tests on the main tree. -* **Tool CI**: `.github/workflows/greeneye.yml` installs +* **Tool CI**: `.github/workflows/risc-v-gsp-rm-debugger.yml` installs `qemu-system-misc clang lld-18`, builds `sdk`/`demo`, and runs the tool unit tests (`python3 -m unittest discover -s tests -t .`) on pushes/PRs touching `debug/risc-v-gsp-rm-vm/**` or `tools/rm*/**`. No secrets, hardware or guest. @@ -257,11 +257,11 @@ the long-term program is | `rmtop` | ncurses dashboard; `--once` for capture | human overview / session capture | `tools/rmtop/` | [`17`](../../debug/risc-v-gsp-rm-vm/docs/17-RM-HARNESS.md) | | `rmq` | device-info tables (unmodified) | TU104 static data queries | `tools/rmq/` | [`17`](../../debug/risc-v-gsp-rm-vm/docs/17-RM-HARNESS.md) | | `rmharness` | capture host oracle runs into sessions | pairing real RM data with a sim session | `debug/risc-v-gsp-rm-vm/rmharness/` | [`rmharness/README`](../../debug/risc-v-gsp-rm-vm/rmharness/README.md) | -| green-eye CLI | session lifecycle, probe, record, analyze, compare, inject, Ghidra | all dynamic firmware questions | `debug/risc-v-gsp-rm-vm/greeneye.sh` | [`00`](../../debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md), [`02`](../../debug/risc-v-gsp-rm-vm/docs/02-USAGE.md) | -| green-eye Python API | scripted instrumentation and injection | repeatable/CI-able experiments | `greeneye/`, `examples/` | [`03`](../../debug/risc-v-gsp-rm-vm/docs/03-SCRIPTING.md) | -| green-eye Ghidra bridge | run-until/breakpoints from the decompiler | static↔dynamic address joins | `ghidra/`, `greeneye/gdbridge.py` | [`05`](../../debug/risc-v-gsp-rm-vm/docs/05-GHIDRA-BRIDGE.md), [`13`](../../debug/risc-v-gsp-rm-vm/docs/13-GHIDRA-CONTROL.md) | +| risc-v-gsp-rm-debugger CLI | session lifecycle, probe, record, analyze, compare, inject, Ghidra | all dynamic firmware questions | `debug/risc-v-gsp-rm-vm/risc-v-gsp-rm-debugger.sh` | [`00`](../../debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md), [`02`](../../debug/risc-v-gsp-rm-vm/docs/02-USAGE.md) | +| risc-v-gsp-rm-debugger Python API | scripted instrumentation and injection | repeatable/CI-able experiments | `greeneye/`, `examples/` | [`03`](../../debug/risc-v-gsp-rm-vm/docs/03-SCRIPTING.md) | +| risc-v-gsp-rm-debugger Ghidra bridge | run-until/breakpoints from the decompiler | static↔dynamic address joins | `ghidra/`, `greeneye/gdbridge.py` | [`05`](../../debug/risc-v-gsp-rm-vm/docs/05-GHIDRA-BRIDGE.md), [`13`](../../debug/risc-v-gsp-rm-vm/docs/13-GHIDRA-CONTROL.md) | | injection SDK | PIC RV64 service blobs + ABI | prototyping a service or engine | `sdk/`, `greeneye/inject.py` | [`12`](../../debug/risc-v-gsp-rm-vm/docs/12-INJECTION-SDK.md) | -| green-eye harness | matrix, mutation, discovery, reach, version diff, release bundle, demos | porting, regression, evidence packs | `debug/risc-v-gsp-rm-vm/harness/` | [`18`](../../debug/risc-v-gsp-rm-vm/docs/18-HARNESS-AUTOMATION.md), [`19`](../../debug/risc-v-gsp-rm-vm/docs/19-CONTROL-DISCOVERY.md), [`21`](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md) | +| risc-v-gsp-rm-debugger harness | matrix, mutation, discovery, reach, version diff, release bundle, demos | porting, regression, evidence packs | `debug/risc-v-gsp-rm-vm/harness/` | [`18`](../../debug/risc-v-gsp-rm-vm/docs/18-HARNESS-AUTOMATION.md), [`19`](../../debug/risc-v-gsp-rm-vm/docs/19-CONTROL-DISCOVERY.md), [`21`](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md) | | native simulator + trace | deterministic RV64IMAC + exec/access trace | speed/determinism experiments | `sim/`, `greeneye/sim_backend.py` | [`16`](../../debug/risc-v-gsp-rm-vm/docs/16-CUSTOM-SIMULATOR.md) | | device map | first-touch MMIO data + lenient mode | device-model bring-up | `greeneye/device_map.py` | [`24`](../../debug/risc-v-gsp-rm-vm/docs/24-DEVICE-MAP.md) | | TCG trace plugin | full instruction/memory JSONL trace | coverage map when hooks are not enough | `qemu/greeneye_trace.c` | [`qemu/README.md`](../../debug/risc-v-gsp-rm-vm/qemu/README.md) | @@ -279,7 +279,7 @@ flowchart LR A1["CUDA corpus + GSP firmware projects"] --> A2["name transfer, corpus diff,<br/>symbol inventory diff"] A2 --> A3["hypothesis: dispatch tables,<br/>call paths, data layouts"] end - subgraph DYN["Dynamic loop (green-eye)"] + subgraph DYN["Dynamic loop (risc-v-gsp-rm-debugger)"] B1["Session + injection on the firmware"] --> B2["observe, record, compare<br/>sessions"] B2 --> B3["evidence: hits, watch PCs,<br/>written pages, reply values"] end @@ -293,13 +293,13 @@ flowchart LR * **Static loop**: import the binary/version into Ghidra, transfer the name map (`cudatool.py delta`/`fdematch` for CUDA; `diff_gsp_firmware.py` and the RPC map for firmware), diff the corpus, and read the changed functions. -* **Dynamic loop**: boot the firmware in green-eye, instrument it, record a +* **Dynamic loop**: boot the firmware in risc-v-gsp-rm-debugger, instrument it, record a session, compare against a reference, and attach the session as evidence. * **Interlock**: a Ghidra symbol/address is resolved into the runtime through a symbol DB with the right bias; a runtime hit or fault PC is exported back (`export_hits`) and annotated into the project (`MarkGreenEyeHits.java`); `corpus_location()` maps a hit to its decompiled - body when the index carried `bucket:line`. See the green-eye + body when the index carried `bucket:line`. See the risc-v-gsp-rm-debugger [`05`](../../debug/risc-v-gsp-rm-vm/docs/05-GHIDRA-BRIDGE.md), [`13`](../../debug/risc-v-gsp-rm-vm/docs/13-GHIDRA-CONTROL.md) and [`26` §7](../../debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md). @@ -311,11 +311,11 @@ Detailed procedures are not duplicated here. | Axis | Static triage | Dynamic confirmation | Full procedure | |---|---|---|---| -| New CUDA userspace (`libcuda` bump) | `cudatool.py info/delta`, `fdematch`, `diff_corpus.py`, name-map apply | guest smoke (`cuda_drv_test.c`), `cuda-ab`, symbol spot-checks | [`userspace/cuda/docs/07`](../../userspace/cuda/docs/07-version-upgrade-playbook.md); green-eye [`22`](../../debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md) §2 | -| New GSP/RM firmware version | decompile + diff RPC dispatcher/controls; Ghidra symbol inventory | `greeneye probe` first-touch, scripted/re-hosted `record`, `compare`, `version_diff.py` | [`05-operations/02` §4.1](../05-operations/02-debugging-and-maintenance-workflows.md) (upgrade runbook); green-eye [`07 P1`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`21`](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md), [`22`](../../debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md) §3 | -| New device / architecture | device profile data, ISA/image shape, PMU/SOE deltas | portability matrix, probe first-touch on the new image | [`06-portability/hardware-software-matrix.md`](../06-portability/hardware-software-matrix.md) and [`03-device-validation-and-porting-sequence.md`](../06-portability/03-device-validation-and-porting-sequence.md); green-eye [`07 P2/P3`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`18`](../../debug/risc-v-gsp-rm-vm/docs/18-HARNESS-AUTOMATION.md) | -| A/B accuracy ritual (real vs emulated) | M1–M6 metric definition | hardware/VFIO reference capture vs green-eye session | [`05-operations/01`](../05-operations/01-performance-correctness-security.md); green-eye [`06`](../../debug/risc-v-gsp-rm-vm/docs/06-ACCURACY.md), [`07 P4`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`25`](../../debug/risc-v-gsp-rm-vm/docs/25-VALUE-VALIDATION.md) | -| RM 610 family | — | gate first; nothing opened before approval | green-eye [`23`](../../debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md) (hard gate), [`21` §3](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md) | +| New CUDA userspace (`libcuda` bump) | `cudatool.py info/delta`, `fdematch`, `diff_corpus.py`, name-map apply | guest smoke (`cuda_drv_test.c`), `cuda-ab`, symbol spot-checks | [`userspace/cuda/docs/07`](../../userspace/cuda/docs/07-version-upgrade-playbook.md); risc-v-gsp-rm-debugger [`22`](../../debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md) §2 | +| New GSP/RM firmware version | decompile + diff RPC dispatcher/controls; Ghidra symbol inventory | `greeneye probe` first-touch, scripted/re-hosted `record`, `compare`, `version_diff.py` | [`05-operations/02` §4.1](../05-operations/02-debugging-and-maintenance-workflows.md) (upgrade runbook); risc-v-gsp-rm-debugger [`07 P1`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`21`](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md), [`22`](../../debug/risc-v-gsp-rm-vm/docs/22-PORTING-CUDA-AND-DEVICES.md) §3 | +| New device / architecture | device profile data, ISA/image shape, PMU/SOE deltas | portability matrix, probe first-touch on the new image | [`06-portability/hardware-software-matrix.md`](../06-portability/hardware-software-matrix.md) and [`03-device-validation-and-porting-sequence.md`](../06-portability/03-device-validation-and-porting-sequence.md); risc-v-gsp-rm-debugger [`07 P2/P3`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`18`](../../debug/risc-v-gsp-rm-vm/docs/18-HARNESS-AUTOMATION.md) | +| A/B accuracy ritual (real vs emulated) | M1–M6 metric definition | hardware/VFIO reference capture vs risc-v-gsp-rm-debugger session | [`05-operations/01`](../05-operations/01-performance-correctness-security.md); risc-v-gsp-rm-debugger [`06`](../../debug/risc-v-gsp-rm-vm/docs/06-ACCURACY.md), [`07 P4`](../../debug/risc-v-gsp-rm-vm/docs/07-PORTABILITY-PLAYBOOKS.md), [`25`](../../debug/risc-v-gsp-rm-vm/docs/25-VALUE-VALIDATION.md) | +| RM 610 family | — | gate first; nothing opened before approval | risc-v-gsp-rm-debugger [`23`](../../debug/risc-v-gsp-rm-vm/docs/23-RM610-READINESS.md) (hard gate), [`21` §3](../../debug/risc-v-gsp-rm-vm/docs/21-CI-RELEASE-PIPELINE.md) | The fast pipeline for a GSP version is: `harness/version_diff.py` → `harness/portability_matrix.py` → `harness/mutation_harness.py`, wrapped by @@ -349,7 +349,7 @@ dynamic session disposes, and physical confirmation gates any product change. → this document → the subsystem doc for what you will touch. * **CUDA bring-up**: [`../../userspace/cuda/READ-ME-FIRST.md`](../../userspace/cuda/READ-ME-FIRST.md) → `docs/01`, `docs/03`, `docs/05` → `docs/22` for porting. -* **Firmware/green-eye**: [`05-operations/03-risc-v-gsp-rm-vm.md`](../05-operations/03-risc-v-gsp-rm-vm.md) +* **Firmware/risc-v-gsp-rm-debugger**: [`05-operations/03-risc-v-gsp-rm-vm.md`](../05-operations/03-risc-v-gsp-rm-vm.md) → tool [`00`](../../debug/risc-v-gsp-rm-vm/docs/00-OVERVIEW.md), [`26`](../../debug/risc-v-gsp-rm-vm/docs/26-ARCHITECTURE.md), then [`03`](../../debug/risc-v-gsp-rm-vm/docs/03-SCRIPTING.md), @@ -358,7 +358,7 @@ dynamic session disposes, and physical confirmation gates any product change. * **Host stack / VM**: [`03-architecture/06-host-module-and-hybrid-model.md`](../03-architecture/06-host-module-and-hybrid-model.md) and [`05-operations/02-debugging-and-maintenance-workflows.md`](../05-operations/02-debugging-and-maintenance-workflows.md). * **Portability**: [`06-portability/hardware-software-matrix.md`](../06-portability/hardware-software-matrix.md) - plus green-eye `docs/07` and `docs/22`. + plus risc-v-gsp-rm-debugger `docs/07` and `docs/22`. Every path in this document was verified at the time of writing; when a tool moves, update this table first — it is the front door. |
