summaryrefslogtreecommitdiffstats
path: root/docs/07-developers/02-development-and-analysis-environment.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 11:44:31 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 11:44:31 -0400
commit1c99bfbeffff04529f6f669601fdf835a73778da (patch)
tree5867bab46e5848541df36c703f6fd8d6d0256e54 /docs/07-developers/02-development-and-analysis-environment.md
parent2fd653044127a665e4677a2cdfb58120d7b3e16b (diff)
downloadopen-iov-1c99bfbeffff04529f6f669601fdf835a73778da.tar.gz
open-iov-1c99bfbeffff04529f6f669601fdf835a73778da.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.md58
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/&lt;ver&gt;<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.