1212 - [ 3.3 V/F points] ( #33-vf-points )
1313 - [ 3.4 PERF limits] ( #34-perf-limits )
1414 - [ 3.5 L2 stability test] ( #35-l2-stability-test )
15- - [ 4. Dynamic layout adaptation] ( #4-dynamic-layout-adaptation )
16- - [ 5. Driver validation matrix] ( #5-driver-validation-matrix )
15+ - [ 4. Reverse engineering process and artifacts] ( #4-reverse-engineering-process-and-artifacts )
16+ - [ 5. Dynamic layout adaptation] ( #5-dynamic-layout-adaptation )
17+ - [ 6. Driver validation matrix] ( #6-driver-validation-matrix )
18+ - [ 7. Debugging] ( #7-debugging )
19+ - [ 8. Adding support for a new driver] ( #8-adding-support-for-a-new-driver )
20+ - [ 9. References] ( #9-references )
21+ - [ 10. Known limitations] ( #10-known-limitations )
1722- [ 6. Debugging] ( #6-debugging )
1823- [ 7. Adding support for a new driver] ( #7-adding-support-for-a-new-driver )
1924- [ 8. References] ( #8-references )
@@ -106,7 +111,37 @@ docs/
106111- Uses random L2 reads over a 32 MiB buffer and atomic mismatch counting.
107112- Integrated as ` l2-test ` .
108113
109- ## 4. Dynamic layout adaptation
114+ ## 4. Reverse engineering process and artifacts
115+
116+ The disassembly process is documented through:
117+
118+ - Static table parsing (` scripts/validate_nvapi_drivers.py ` )
119+ - Offset derivation (` scripts/derive_nvapi_offsets.py ` )
120+ - Capstone disassembly tool (` scripts/disasm_nvapi.py ` )
121+ - Raw disassembly artifacts in [ ` docs/reverse/ ` ] ( reverse/ )
122+
123+ The key steps were:
124+
125+ 1 . Locate the NvAPI static ID table (` {u64 ptr, u32 id, u32 pad} ` ).
126+ 2 . Resolve wrapper stubs and real implementations.
127+ 3 . Disassemble the real functions and identify version checks.
128+ 4 . Map buffer writes to structure fields.
129+ 5 . Cross-validate across R572..R610.
130+
131+ Raw files include:
132+
133+ ``` text
134+ docs/reverse/lookup_102f50_full_61088.txt
135+ docs/reverse/get_info_real_full_61088.txt
136+ docs/reverse/get_control_real_full_61088.txt
137+ docs/reverse/set_control_real_full_61088.txt
138+ docs/reverse/clk_get_61088.txt
139+ docs/reverse/vf_status_61088.txt
140+ docs/reverse/vf_get_61088.txt
141+ docs/reverse/rtx5090_gameready_direct_links.txt
142+ ```
143+
144+ ## 5. Dynamic layout adaptation
110145
111146The program no longer relies on per-card hardcoded layout for:
112147
@@ -118,7 +153,7 @@ The program no longer relies on per-card hardcoded layout for:
118153
119154Remaining constants are NvAPI structure field offsets (e.g. ` +0x114 ` , ` +0x38 ` ). They are API-structure-level and were verified across R572..R610.
120155
121- ## 5 . Driver validation matrix
156+ ## 6 . Driver validation matrix
122157
123158Validated driver versions (desktop and selected notebook):
124159
@@ -140,7 +175,7 @@ Scripts:
140175python scripts/run_full_validation.py
141176```
142177
143- ## 6 . Debugging
178+ ## 7 . Debugging
144179
145180``` powershell
146181python run.py --verbose --log-file debug.log status
@@ -160,7 +195,7 @@ If `probe` fails:
160195- Do ** not** use ` --force-driver ` .
161196- Collect ` probe ` output and report it.
162197
163- ## 7 . Adding support for a new driver
198+ ## 8 . Adding support for a new driver
164199
1652001 . Obtain ` nvapi64.dll ` or ` nvapi64_impl.dll ` from the driver package.
1662012 . Run:
@@ -171,15 +206,15 @@ If `probe` fails:
1712063 . If all checks pass, add the version prefix to ` driver_check.VALIDATED_DRIVER_PREFIXES ` .
1722074 . If a check fails, reverse-engineer the new layout and update this document.
173208
174- ## 8 . References
209+ ## 9 . References
175210
176211- LACT issue #1147 : https://github.com/ilya-zlobintsev/LACT/issues/1147
177212- LACT PR #1158 : https://github.com/ilya-zlobintsev/LACT/pull/1158
178213- LACT issue #1159 : https://github.com/ilya-zlobintsev/LACT/issues/1159
179214- NVIDIA/open-gpu-kernel-modules #1266 : https://github.com/NVIDIA/open-gpu-kernel-modules/issues/1266
180215- mVolt+: https://github.com/b00nz/mVolt
181216
182- ## 9 . Known limitations
217+ ## 10 . Known limitations
183218
184219- Physical MSVDD direct read is not implemented.
185220- PERF limits SET is not exposed.
0 commit comments