summaryrefslogtreecommitdiffstats
path: root/firmware/57X-GSP/570.144/decompilation_summary.json
diff options
context:
space:
mode:
authorOpen-IOV <dev@open-iov.org>2026-09-23 05:44:08 -0400
committerOpen-IOV <dev@open-iov.org>2026-09-23 05:46:43 -0400
commit2302fc09080bad51c73f293294e19fd4db464eb0 (patch)
treec722d186347fdef5a34131e9e143b1549b1daf8e /firmware/57X-GSP/570.144/decompilation_summary.json
downloadopen-iov-2302fc09080bad51c73f293294e19fd4db464eb0.tar.gz
open-iov-2302fc09080bad51c73f293294e19fd4db464eb0.zip
Open-IOV: initial public release
Open-IOV virtualizes NVIDIA GPUs so that unmodified guest drivers run with real GPU functionality - CUDA first, 3D and video to follow - on unmodified hosts, without a proprietary vGPU license and without patching any driver, firmware or hypervisor. Core principle: emulate the interface, pass through the work. kernel/ open-iov-vfio.ko - host VFIO mdev driver: virtual GPU device (PCI config space, BAR shadows, MSI-X), GSP boot emulation, GSP-RM message-queue/RPC emulation, memory model (GPU-VA to guest-PA discovery) and the semaphore-completion service that advances guest UVM progress. userspace/ libiov.so management API and examples. tools/ guest diagnostics, firmware analysis wrappers, RM probes. scripts/ stack manager, VM harness, build/load/test automation. config/ hardware/version profiles (the portability surface). docs/ documentation tree - start at docs/README.md. wiki/ long-form firmware and protocol deep dives. Status: initialization works end to end for a stock 570.144 Linux guest on Turing (TU104): driver probe, nvidia-smi, the full GSP-RM control battery, object creation and the early CUDA/UVM start-up path. GPU work forwarding - the step that makes CUDA kernels execute on real hardware - is the active work item; see docs/04-implementation/01-known-knowns-and-unknowns.md. License: BSD-3-Clause for the project; GPL-2.0 for kernel modules that link GPL-only kernel interfaces. See LICENSE and docs/09-reference/legal-and-licensing.md.
Diffstat (limited to 'firmware/57X-GSP/570.144/decompilation_summary.json')
-rw-r--r--firmware/57X-GSP/570.144/decompilation_summary.json1027
1 files changed, 1027 insertions, 0 deletions
diff --git a/firmware/57X-GSP/570.144/decompilation_summary.json b/firmware/57X-GSP/570.144/decompilation_summary.json
new file mode 100644
index 0000000..4cfcdf9
--- /dev/null
+++ b/firmware/57X-GSP/570.144/decompilation_summary.json
@@ -0,0 +1,1027 @@
+{
+ "rpc_dispatcher_primary": {
+ "address": "0x057a1ac0",
+ "instruction_count": 12,
+ "analysis": {
+ "name": "rpc_dispatcher_primary",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [],
+ "rpc_refs": [],
+ "strings": []
+ }
+ },
+ "rpc_dispatcher_secondary": {
+ "address": "0x04ed39dc",
+ "instruction_count": 500,
+ "analysis": {
+ "name": "rpc_dispatcher_secondary",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 82654392,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708,
+ 82655708
+ ],
+ "rpc_refs": [
+ [
+ 80,
+ "MAP"
+ ],
+ [
+ 112,
+ "ALLOC"
+ ],
+ [
+ 204,
+ "YIELD"
+ ],
+ [
+ 216,
+ "SCHEDULE"
+ ],
+ [
+ 228,
+ "UNPIN"
+ ],
+ [
+ 240,
+ "PIN"
+ ],
+ [
+ 252,
+ "UNMAP"
+ ],
+ [
+ 264,
+ "MAP"
+ ],
+ [
+ 276,
+ "FREE"
+ ],
+ [
+ 288,
+ "ALLOC"
+ ],
+ [
+ 312,
+ "MIGRATE"
+ ],
+ [
+ 324,
+ "BAR_TRAP"
+ ],
+ [
+ 336,
+ "NOTIFY"
+ ],
+ [
+ 528,
+ "ALLOC"
+ ],
+ [
+ 1920,
+ "FREE"
+ ],
+ [
+ 1956,
+ "ALLOC"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "rpc_dispatcher_tertiary": {
+ "address": "0x04cc58f8",
+ "instruction_count": 213,
+ "analysis": {
+ "name": "rpc_dispatcher_tertiary",
+ "stack_size": 160,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 80500940,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500984,
+ 80500932
+ ],
+ "rpc_refs": [
+ [
+ 108,
+ "YIELD"
+ ],
+ [
+ 116,
+ "SCHEDULE"
+ ],
+ [
+ 124,
+ "UNPIN"
+ ],
+ [
+ 132,
+ "PIN"
+ ],
+ [
+ 140,
+ "UNMAP"
+ ],
+ [
+ 148,
+ "MAP"
+ ],
+ [
+ 156,
+ "FREE"
+ ],
+ [
+ 316,
+ "MIGRATE"
+ ],
+ [
+ 324,
+ "BAR_TRAP"
+ ],
+ [
+ 412,
+ "ALLOC"
+ ],
+ [
+ 420,
+ "NOTIFY"
+ ],
+ [
+ 552,
+ "UNMAP"
+ ],
+ [
+ 712,
+ "UNMAP"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "rpc_dispatcher_quaternary": {
+ "address": "0x05723ef4",
+ "instruction_count": 24,
+ "analysis": {
+ "name": "rpc_dispatcher_quaternary",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [],
+ "rpc_refs": [],
+ "strings": []
+ }
+ },
+ "rpc_bar_trap_handler": {
+ "address": "0x04cb8189",
+ "instruction_count": 849,
+ "analysis": {
+ "name": "rpc_bar_trap_handler",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 79435365,
+ 81008363,
+ 81424399,
+ 80943183
+ ],
+ "rpc_refs": [],
+ "strings": []
+ }
+ },
+ "entry_point": {
+ "address": "0x04009000",
+ "instruction_count": 971,
+ "analysis": {
+ "name": "entry_point",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 67145840
+ ],
+ "rpc_refs": [
+ [
+ 8,
+ "ALLOC"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "rpc_alloc_handler": {
+ "address": "0x057e94ec",
+ "instruction_count": 500,
+ "analysis": {
+ "name": "rpc_alloc_handler",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 92181484,
+ 92186228,
+ 92181740,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181784,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740,
+ 92181740
+ ],
+ "rpc_refs": [
+ [
+ 20,
+ "ALLOC"
+ ],
+ [
+ 92,
+ "FREE"
+ ],
+ [
+ 132,
+ "ALLOC"
+ ],
+ [
+ 196,
+ "ALLOC"
+ ],
+ [
+ 252,
+ "MAP"
+ ],
+ [
+ 292,
+ "ALLOC"
+ ],
+ [
+ 328,
+ "ALLOC"
+ ],
+ [
+ 364,
+ "ALLOC"
+ ],
+ [
+ 400,
+ "ALLOC"
+ ],
+ [
+ 436,
+ "ALLOC"
+ ],
+ [
+ 472,
+ "ALLOC"
+ ],
+ [
+ 508,
+ "ALLOC"
+ ],
+ [
+ 544,
+ "ALLOC"
+ ],
+ [
+ 580,
+ "ALLOC"
+ ],
+ [
+ 608,
+ "ALLOC"
+ ],
+ [
+ 636,
+ "ALLOC"
+ ],
+ [
+ 664,
+ "ALLOC"
+ ],
+ [
+ 692,
+ "ALLOC"
+ ],
+ [
+ 720,
+ "ALLOC"
+ ],
+ [
+ 748,
+ "ALLOC"
+ ],
+ [
+ 776,
+ "ALLOC"
+ ],
+ [
+ 804,
+ "ALLOC"
+ ],
+ [
+ 832,
+ "ALLOC"
+ ],
+ [
+ 860,
+ "ALLOC"
+ ],
+ [
+ 888,
+ "ALLOC"
+ ],
+ [
+ 916,
+ "ALLOC"
+ ],
+ [
+ 944,
+ "ALLOC"
+ ],
+ [
+ 972,
+ "ALLOC"
+ ],
+ [
+ 1000,
+ "ALLOC"
+ ],
+ [
+ 1028,
+ "ALLOC"
+ ],
+ [
+ 1056,
+ "ALLOC"
+ ],
+ [
+ 1084,
+ "ALLOC"
+ ],
+ [
+ 1112,
+ "ALLOC"
+ ],
+ [
+ 1140,
+ "ALLOC"
+ ],
+ [
+ 1168,
+ "ALLOC"
+ ],
+ [
+ 1196,
+ "ALLOC"
+ ],
+ [
+ 1224,
+ "ALLOC"
+ ],
+ [
+ 1252,
+ "ALLOC"
+ ],
+ [
+ 1280,
+ "ALLOC"
+ ],
+ [
+ 1308,
+ "ALLOC"
+ ],
+ [
+ 1336,
+ "ALLOC"
+ ],
+ [
+ 1364,
+ "ALLOC"
+ ],
+ [
+ 1392,
+ "ALLOC"
+ ],
+ [
+ 1420,
+ "ALLOC"
+ ],
+ [
+ 1448,
+ "ALLOC"
+ ],
+ [
+ 1476,
+ "ALLOC"
+ ],
+ [
+ 1504,
+ "ALLOC"
+ ],
+ [
+ 1532,
+ "ALLOC"
+ ],
+ [
+ 1560,
+ "ALLOC"
+ ],
+ [
+ 1588,
+ "ALLOC"
+ ],
+ [
+ 1616,
+ "ALLOC"
+ ],
+ [
+ 1644,
+ "ALLOC"
+ ],
+ [
+ 1672,
+ "ALLOC"
+ ],
+ [
+ 1700,
+ "ALLOC"
+ ],
+ [
+ 1728,
+ "ALLOC"
+ ],
+ [
+ 1756,
+ "ALLOC"
+ ],
+ [
+ 1784,
+ "ALLOC"
+ ],
+ [
+ 1812,
+ "ALLOC"
+ ],
+ [
+ 1840,
+ "ALLOC"
+ ],
+ [
+ 1868,
+ "ALLOC"
+ ],
+ [
+ 1896,
+ "ALLOC"
+ ],
+ [
+ 1924,
+ "ALLOC"
+ ],
+ [
+ 1952,
+ "ALLOC"
+ ],
+ [
+ 1980,
+ "ALLOC"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "rpc_alloc_handler_2": {
+ "address": "0x04d00a18",
+ "instruction_count": 20,
+ "analysis": {
+ "name": "rpc_alloc_handler_2",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [],
+ "rpc_refs": [
+ [
+ 0,
+ "UNMAP"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "rpc_schedule_handler": {
+ "address": "0x051efbf4",
+ "instruction_count": 368,
+ "analysis": {
+ "name": "rpc_schedule_handler",
+ "stack_size": 48,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 85916540,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916604,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916540,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916660,
+ 85916676,
+ 85916676
+ ],
+ "rpc_refs": [
+ [
+ 44,
+ "SCHEDULE"
+ ],
+ [
+ 60,
+ "SCHEDULE"
+ ],
+ [
+ 76,
+ "SCHEDULE"
+ ],
+ [
+ 108,
+ "SCHEDULE"
+ ],
+ [
+ 124,
+ "SCHEDULE"
+ ],
+ [
+ 140,
+ "SCHEDULE"
+ ],
+ [
+ 308,
+ "SCHEDULE"
+ ],
+ [
+ 360,
+ "ALLOC"
+ ],
+ [
+ 636,
+ "ALLOC"
+ ],
+ [
+ 652,
+ "ALLOC"
+ ],
+ [
+ 668,
+ "ALLOC"
+ ],
+ [
+ 684,
+ "DEBUG"
+ ],
+ [
+ 700,
+ "DEBUG"
+ ],
+ [
+ 712,
+ "ALLOC"
+ ],
+ [
+ 748,
+ "ALLOC"
+ ],
+ [
+ 760,
+ "ALLOC"
+ ],
+ [
+ 772,
+ "ALLOC"
+ ],
+ [
+ 788,
+ "DEBUG"
+ ],
+ [
+ 800,
+ "MAP"
+ ],
+ [
+ 816,
+ "DEBUG"
+ ],
+ [
+ 828,
+ "ALLOC"
+ ],
+ [
+ 840,
+ "ALLOC"
+ ],
+ [
+ 876,
+ "DEBUG"
+ ],
+ [
+ 904,
+ "ALLOC"
+ ],
+ [
+ 920,
+ "ALLOC"
+ ],
+ [
+ 932,
+ "ALLOC"
+ ],
+ [
+ 944,
+ "ALLOC"
+ ],
+ [
+ 956,
+ "ALLOC"
+ ],
+ [
+ 968,
+ "ALLOC"
+ ],
+ [
+ 984,
+ "ALLOC"
+ ],
+ [
+ 1000,
+ "MAP"
+ ],
+ [
+ 1032,
+ "DEBUG"
+ ],
+ [
+ 1064,
+ "MAP"
+ ],
+ [
+ 1080,
+ "ALLOC"
+ ],
+ [
+ 1192,
+ "DEBUG"
+ ],
+ [
+ 1256,
+ "PIN"
+ ],
+ [
+ 1264,
+ "ALLOC"
+ ],
+ [
+ 1296,
+ "ALLOC"
+ ],
+ [
+ 1380,
+ "NOTIFY"
+ ]
+ ],
+ "strings": []
+ }
+ },
+ "top_call_target": {
+ "address": "0x04efeac8",
+ "instruction_count": 11,
+ "analysis": {
+ "name": "top_call_target",
+ "stack_size": null,
+ "ra_save_reg": null,
+ "ra_restore_reg": null,
+ "calls": [
+ 82855180
+ ],
+ "rpc_refs": [],
+ "strings": []
+ }
+ }
+} \ No newline at end of file