summaryrefslogtreecommitdiffstats
path: root/userspace/cuda/READ-ME-FIRST.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 13:48:00 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 13:48:00 -0400
commitc587eac377c1c5b720142edadebaace5cb1b17c0 (patch)
treec381be95dd02151022f58c3e84c6eeb0dfe91b25 /userspace/cuda/READ-ME-FIRST.md
parentbd6c3ee69d7157e2dabf9350be52367c6a6e3c42 (diff)
downloadopen-iov-c587eac377c1c5b720142edadebaace5cb1b17c0.tar.gz
open-iov-c587eac377c1c5b720142edadebaace5cb1b17c0.zip
userspace/cuda: complete the analysis pass
* Name recovery: name_candidates.py proposes the hand-written API-layer implementation for each exported wrapper by grouping version variants and intersecting their callees; 180 high-confidence proposals recorded in annotations/name-candidates.tsv, 29 of them body-verified and promoted to names.tsv with evidence in subsystems.tsv. * Engine records: identified the 0x14-byte per-engine descriptor, mapped its fields (kind, engine type, instance, class id, CE caps) and the existence callback, and documented how the missing async copy engine (COPY14) leaves the secondary record zeroed and blocks context creation (docs/05 section 3.7, public-safe). * Targeted type recovery: AnalyzeFunctions.java runs the parameter-ID analyzer over a curated list of 80 functions; 16 improved materially and the typed decompilations are kept under the version run tree. * Cross-version: cudatool.py fdematch measures how names transfer between patch versions (570.144 -> 570.211.01: exports 100%, verified internals ~70%, generated wrappers must be re-resolved by relocation, never by address arithmetic); documented in the upgrade playbook. * Corpus tooling: diff_corpus.py (version-to-version corpus diff) and subsystem_digest.py (per-subsystem call trees). * Deprecate the old per-version helpers whose address handling and analysis timeout produced wrong results. Generated corpora and typed outputs remain untracked under the version run tree.
Diffstat (limited to 'userspace/cuda/READ-ME-FIRST.md')
-rw-r--r--userspace/cuda/READ-ME-FIRST.md11
1 files changed, 8 insertions, 3 deletions
diff --git a/userspace/cuda/READ-ME-FIRST.md b/userspace/cuda/READ-ME-FIRST.md
index 180907f..2abb797 100644
--- a/userspace/cuda/READ-ME-FIRST.md
+++ b/userspace/cuda/READ-ME-FIRST.md
@@ -112,17 +112,22 @@ userspace/cuda/
├── README.md index + honest status
├── docs/01..07 public analysis (tracked)
├── tools/ reusable tooling (tracked)
-├── LOCAL-SOURCES.md local source map (gitignored)
+│ ├── cudatool.py ELF exports/FDEs/wrappers/delta/fdematch
+│ ├── callwalk.py callee/caller/path walker
+│ ├── name_candidates.py API-implementation name candidates
+│ ├── subsystem_digest.py per-subsystem call-tree digest
+│ ├── diff_corpus.py corpus diff across driver versions
+│ └── ghidra_*.sh, ghidra/ Ghidra analysis/decompile/name-map scripts
└── 570.144/
├── README.md, docs/, scripts/ version-specific helpers + old write-up
├── annotations/ name map + subsystem index (tracked)
- ├── LOCAL-ANALYSIS.md local version notes (gitignored)
└── run/
├── libcuda.so.570.144 the guest binary (md5 ed5b2fc0…)
├── ghidra-full/ analyzed project (29,494 functions)
├── analysis/elf-index/ functions/exports/callgraph/strings TSVs
├── analysis/decompiled/ raw corpus (29,254 functions, 0 failures)
- └── analysis/decompiled-annotated/ corpus + names + call context
+ ├── analysis/decompiled-annotated/ corpus + names + call context
+ └── analysis/subsystem-digest.txt, fdematch-*.txt generated reports
```
## 5. Rules while you work in this area