Difference between revisions of "Glossary"
Jump to navigation
Jump to search
m (Re-sync page from tracked wiki source: fix cross-document links and diagram; refresh status) |
|||
| Line 1: | Line 1: | ||
= Glossary = | |||
<blockquote>'''Historical document — superseded.''' The authoritative glossary is [https://git.vgpu.io/open-iov/blob/master/docs/09-reference/glossary-and-faq.md <code>../docs/09-reference/glossary-and-faq.md</code>].</blockquote> | |||
== Terms & Abbreviations == | |||
== | === General === | ||
{| class="wikitable" | |||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''GSP''' | |||
| GPU System Processor - NVIDIA's on-GPU RISC-V microcontroller | |||
|- | |||
| '''vGPU''' | |||
| Virtual GPU - Partitioned GPU for multi-tenant workloads | |||
|- | |||
| '''VF''' | |||
| Virtual Function - Single vGPU instance with dedicated resources | |||
|- | |||
| '''PF''' | |||
| Physical Function - Host GPU managing VFs (SR-IOV) | |||
|- | |||
| '''IOV''' | |||
| I/O Virtualization - SR-IOV implementation | |||
|- | |||
| '''RPC''' | |||
| Remote Procedure Call - GSP-host communication protocol | |||
|- | |||
| '''BAR''' | |||
| Base Address Register - PCIe memory-mapped I/O window | |||
|- | |||
| '''WPR''' | |||
| Write-Protected Region - VRAM area reserved for firmware | |||
|- | |||
| '''SR-IOV''' | |||
| Single Root I/O Virtualization - PCIe virtualization standard | |||
|} | |||
=== | === Firmware Architecture === | ||
= | {| class="wikitable" | ||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''RV64IMAC''' | |||
| RISC-V 64-bit ISA with Integer, Multiply, Atomic, Compressed extensions | |||
|- | |||
| '''Dispatcher''' | |||
| Central RPC routing function (primary/secondary) | |||
|- | |||
| '''Jump Table''' | |||
| Array of function pointers for sub-command dispatch | |||
|- | |||
| '''Sub-Command''' | |||
| Specific operation within an RPC type | |||
|- | |||
| '''Descriptor''' | |||
| Return structure with ID and echoed parameters | |||
|- | |||
| '''Entry Point''' | |||
| Firmware boot address (0x04009000) | |||
|- | |||
| '''Frame Guard''' | |||
| Stack canary at 0x041DC350 | |||
|} | |||
=== | === Memory Management === | ||
= | {| class="wikitable" | ||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''VRAM''' | |||
| Video RAM - GPU local memory | |||
|- | |||
| '''Sysmem''' | |||
| System Memory - Host DRAM | |||
|- | |||
| '''Page Table''' | |||
| GPU virtual-to-physical mapping tables | |||
|- | |||
| '''Pinning''' | |||
| Locking pages for DMA access | |||
|- | |||
| '''Bounce Buffer''' | |||
| Intermediate buffer for data transfer | |||
|- | |||
| '''Aperture''' | |||
| Mappable BAR window size | |||
|- | |||
| '''Backing Store''' | |||
| Memory backing emulated BAR regions | |||
|} | |||
=== | === RPC Types === | ||
= | {| class="wikitable" | ||
|- | |||
! RPC | |||
! Name | |||
! Purpose | |||
|- | |||
| 0x01 | |||
| '''ALLOC''' | |||
| Allocate GPU memory | |||
|- | |||
| 0x02 | |||
| '''FREE''' | |||
| Free GPU memory | |||
|- | |||
| 0x03 | |||
| '''MAP''' | |||
| Map memory to VF address space | |||
|- | |||
| 0x04 | |||
| '''UNMAP''' | |||
| Unmap memory from VF | |||
|- | |||
| 0x05 | |||
| '''PIN''' | |||
| Pin pages for DMA | |||
|- | |||
| 0x06 | |||
| '''UNPIN''' | |||
| Unpin pages | |||
|- | |||
| 0x07 | |||
| '''SCHEDULE''' | |||
| VF scheduling control | |||
|- | |||
| 0x08 | |||
| '''YIELD''' | |||
| Voluntary yield | |||
|- | |||
| 0x09 | |||
| '''NOTIFY''' | |||
| Event notification | |||
|- | |||
| 0x0A | |||
| '''BAR_TRAP''' | |||
| BAR access emulation | |||
|- | |||
| 0x0B | |||
| '''MIGRATE''' | |||
| Live VF migration | |||
|- | |||
| 0xFF | |||
| '''DEBUG''' | |||
| Debug interface | |||
|} | |||
=== | === Migration === | ||
= | {| class="wikitable" | ||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''Pre-copy''' | |||
| Iterative page transfer while VF runs | |||
|- | |||
| '''Post-copy''' | |||
| Start VF on destination, fetch pages on demand | |||
|- | |||
| '''Quiesce''' | |||
| Pause VF for consistent state snapshot | |||
|- | |||
| '''Dirty Page''' | |||
| Page modified since last transfer | |||
|- | |||
| '''Cutover''' | |||
| Switch execution from source to destination | |||
|- | |||
| '''Token''' | |||
| Opaque migration context handle | |||
|} | |||
=== | === BAR Emulation === | ||
=== | {| class="wikitable" | ||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''BAR1''' | |||
| 256 MB VRAM aperture (the register interface is BAR0, 16 MB; BAR3 is the instance/PRAMIN window) | |||
|- | |||
| '''Bar1Rest''' | |||
| BAR1 state restoration | |||
|- | |||
| '''ForceBarAccess''' | |||
| Hypervisor bypass of VF permissions | |||
|- | |||
| '''Aperture''' | |||
| Configurable BAR window size/offset | |||
|} | |||
=== WPR (Write-Protected Region) === | |||
{| class="wikitable" | |||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''Write Protect''' | |||
| Trap on write access to region | |||
|- | |||
| '''Read Protect''' | |||
| Trap on read access to region | |||
|- | |||
| '''NV_WPR''' | |||
| NVIDIA-specific WPR extensions | |||
|- | |||
| '''Completion''' | |||
| Successful trap handling | |||
|- | |||
| '''Timeout''' | |||
| Trap handling exceeded time limit | |||
|} | |||
=== Hardware Registers === | |||
{| class="wikitable" | |||
|- | |||
! Register | |||
! Purpose | |||
|- | |||
| '''Doorbell''' | |||
| Host→GSP notification (PCIe BAR0 + 0x1000) | |||
|- | |||
| '''Message Ring''' | |||
| Shared memory for RPC messages | |||
|- | |||
| '''Cache Manager''' | |||
| 0x429B428 - Flush/invalidate | |||
|- | |||
| '''Allocator Arena''' | |||
| 0x429B450 - Memory allocation | |||
|- | |||
| '''Global Error Flag''' | |||
| 0x04296048 - Global error state | |||
|- | |||
| '''Stack Canary''' | |||
| 0x041DC350 - Frame integrity | |||
|} | |||
=== Tools & Scripts === | |||
{| class="wikitable" | |||
|- | |||
! Tool | |||
! Purpose | |||
|- | |||
| '''analyzeHeadless''' | |||
| Ghidra headless analyzer | |||
|- | |||
| '''DecompileFunctions.java''' | |||
| Ghidra script for batch decompilation | |||
|- | |||
| '''trace_all_subsystems.py''' | |||
| Binary analysis script | |||
|- | |||
| '''RPC_HANDLER_MAP.md''' | |||
| Complete RPC address map | |||
|- | |||
| '''FINAL_REPORT.md''' | |||
| Full analysis report | |||
|} | |||
=== Debugging === | |||
{| class="wikitable" | |||
|- | |||
! Term | |||
! Definition | |||
|- | |||
| '''ebreak''' | |||
| RISC-V breakpoint instruction (fatal in FW) | |||
|- | |||
| '''String Ref''' | |||
| Cross-reference to string literal | |||
|- | |||
| '''XRef''' | |||
| Cross-reference (code/data) | |||
|- | |||
| '''Pcode''' | |||
| Ghidra's intermediate representation | |||
|- | |||
| '''VBIOS''' | |||
| Video BIOS - firmware for GPU initialization | |||
|} | |||
=== Calling Convention (RISC-V) === | |||
{| class="wikitable" | |||
|- | |||
! Register | |||
! ABI Name | |||
! Purpose | |||
|- | |||
| x0 | |||
| zero | |||
| Hardwired zero | |||
|- | |||
| x1 | |||
| ra | |||
| Return address | |||
|- | |||
| x2 | |||
| sp | |||
| Stack pointer | |||
|- | |||
| x3 | |||
| gp | |||
| Global pointer | |||
|- | |||
| x4 | |||
| tp | |||
| Thread pointer | |||
|- | |||
| x5-7 | |||
| t0-t2 | |||
| Temporaries | |||
|- | |||
| x8 | |||
| s0/fp | |||
| Frame pointer | |||
|- | |||
| x9 | |||
| s1 | |||
| Callee-saved (RA save) | |||
|- | |||
| x10-11 | |||
| a0-a1 | |||
| Arguments/returns | |||
|- | |||
| x12 | |||
| s4 | |||
| Callee-saved (RA save) | |||
|- | |||
| x13-17 | |||
| a2-a6 | |||
| Arguments | |||
|- | |||
| x18-27 | |||
| s2-s11 | |||
| Callee-saved | |||
|- | |||
| x28-31 | |||
| t3-t6 | |||
| Temporaries | |||
|} | |||
=== Firmware Sections (ELF) === | |||
{| class="wikitable" | |||
|- | |||
! Section | |||
! Purpose | |||
|- | |||
| <code>.text</code> | |||
| Executable code | |||
|- | |||
| <code>.rodata</code> | |||
| Read-only data | |||
|- | |||
| <code>.data</code> | |||
| Initialized data | |||
|- | |||
| <code>.bss</code> | |||
| Zero-initialized data | |||
|- | |||
| <code>.section_task_rm_*</code> | |||
| Task-specific sections | |||
|} | |||
=== Migration Phases === | |||
{| class="wikitable" | |||
|- | |||
! Phase | |||
! Description | |||
|- | |||
| '''QUERY''' | |||
| Check migratability | |||
|- | |||
| '''PREPARE''' | |||
| Quiesce, snapshot | |||
|- | |||
| '''TRANSFER''' | |||
| Iterative page copy | |||
|- | |||
| '''COMMIT''' | |||
| Final sync, cutover | |||
|- | |||
| '''CLEANUP''' | |||
| Release resources | |||
|} | |||
== File Naming Conventions == | |||
=== Decompiled Output === | |||
<pre>FUN_ram_<ADDRESS>_ram_<ADDRESS>.c</pre> | |||
* <code>FUN_ram_057A1AC0_ram_057A1AC0.c</code> = Function at 0x057A1AC0 | |||
=== Ghidra Projects === | |||
<pre>gsp-<purpose>/</pre> | |||
* <code>gsp-subcmds</code>, <code>gsp-rpc-handlers</code>, <code>gsp-bar-fns</code>, etc. | |||
== References == | |||
* RISC-V ISA: https://riscv.org/technical/specifications/ | |||
* SR-IOV Spec: https://pcisig.com/specifications/iov/ | |||
* Ghidra: https://ghidra-sre.org/ | |||
Revision as of 04:10, 12 October 2026
Glossary
Historical document — superseded. The authoritative glossary is
../docs/09-reference/glossary-and-faq.md.
Terms & Abbreviations
General
| Term | Definition |
|---|---|
| GSP | GPU System Processor - NVIDIA's on-GPU RISC-V microcontroller |
| vGPU | Virtual GPU - Partitioned GPU for multi-tenant workloads |
| VF | Virtual Function - Single vGPU instance with dedicated resources |
| PF | Physical Function - Host GPU managing VFs (SR-IOV) |
| IOV | I/O Virtualization - SR-IOV implementation |
| RPC | Remote Procedure Call - GSP-host communication protocol |
| BAR | Base Address Register - PCIe memory-mapped I/O window |
| WPR | Write-Protected Region - VRAM area reserved for firmware |
| SR-IOV | Single Root I/O Virtualization - PCIe virtualization standard |
Firmware Architecture
| Term | Definition |
|---|---|
| RV64IMAC | RISC-V 64-bit ISA with Integer, Multiply, Atomic, Compressed extensions |
| Dispatcher | Central RPC routing function (primary/secondary) |
| Jump Table | Array of function pointers for sub-command dispatch |
| Sub-Command | Specific operation within an RPC type |
| Descriptor | Return structure with ID and echoed parameters |
| Entry Point | Firmware boot address (0x04009000) |
| Frame Guard | Stack canary at 0x041DC350 |
Memory Management
| Term | Definition |
|---|---|
| VRAM | Video RAM - GPU local memory |
| Sysmem | System Memory - Host DRAM |
| Page Table | GPU virtual-to-physical mapping tables |
| Pinning | Locking pages for DMA access |
| Bounce Buffer | Intermediate buffer for data transfer |
| Aperture | Mappable BAR window size |
| Backing Store | Memory backing emulated BAR regions |
RPC Types
| RPC | Name | Purpose |
|---|---|---|
| 0x01 | ALLOC | Allocate GPU memory |
| 0x02 | FREE | Free GPU memory |
| 0x03 | MAP | Map memory to VF address space |
| 0x04 | UNMAP | Unmap memory from VF |
| 0x05 | PIN | Pin pages for DMA |
| 0x06 | UNPIN | Unpin pages |
| 0x07 | SCHEDULE | VF scheduling control |
| 0x08 | YIELD | Voluntary yield |
| 0x09 | NOTIFY | Event notification |
| 0x0A | BAR_TRAP | BAR access emulation |
| 0x0B | MIGRATE | Live VF migration |
| 0xFF | DEBUG | Debug interface |
Migration
| Term | Definition |
|---|---|
| Pre-copy | Iterative page transfer while VF runs |
| Post-copy | Start VF on destination, fetch pages on demand |
| Quiesce | Pause VF for consistent state snapshot |
| Dirty Page | Page modified since last transfer |
| Cutover | Switch execution from source to destination |
| Token | Opaque migration context handle |
BAR Emulation
| Term | Definition |
|---|---|
| BAR1 | 256 MB VRAM aperture (the register interface is BAR0, 16 MB; BAR3 is the instance/PRAMIN window) |
| Bar1Rest | BAR1 state restoration |
| ForceBarAccess | Hypervisor bypass of VF permissions |
| Aperture | Configurable BAR window size/offset |
WPR (Write-Protected Region)
| Term | Definition |
|---|---|
| Write Protect | Trap on write access to region |
| Read Protect | Trap on read access to region |
| NV_WPR | NVIDIA-specific WPR extensions |
| Completion | Successful trap handling |
| Timeout | Trap handling exceeded time limit |
Hardware Registers
| Register | Purpose |
|---|---|
| Doorbell | Host→GSP notification (PCIe BAR0 + 0x1000) |
| Message Ring | Shared memory for RPC messages |
| Cache Manager | 0x429B428 - Flush/invalidate |
| Allocator Arena | 0x429B450 - Memory allocation |
| Global Error Flag | 0x04296048 - Global error state |
| Stack Canary | 0x041DC350 - Frame integrity |
Tools & Scripts
| Tool | Purpose |
|---|---|
| analyzeHeadless | Ghidra headless analyzer |
| DecompileFunctions.java | Ghidra script for batch decompilation |
| trace_all_subsystems.py | Binary analysis script |
| RPC_HANDLER_MAP.md | Complete RPC address map |
| FINAL_REPORT.md | Full analysis report |
Debugging
| Term | Definition |
|---|---|
| ebreak | RISC-V breakpoint instruction (fatal in FW) |
| String Ref | Cross-reference to string literal |
| XRef | Cross-reference (code/data) |
| Pcode | Ghidra's intermediate representation |
| VBIOS | Video BIOS - firmware for GPU initialization |
Calling Convention (RISC-V)
| Register | ABI Name | Purpose |
|---|---|---|
| x0 | zero | Hardwired zero |
| x1 | ra | Return address |
| x2 | sp | Stack pointer |
| x3 | gp | Global pointer |
| x4 | tp | Thread pointer |
| x5-7 | t0-t2 | Temporaries |
| x8 | s0/fp | Frame pointer |
| x9 | s1 | Callee-saved (RA save) |
| x10-11 | a0-a1 | Arguments/returns |
| x12 | s4 | Callee-saved (RA save) |
| x13-17 | a2-a6 | Arguments |
| x18-27 | s2-s11 | Callee-saved |
| x28-31 | t3-t6 | Temporaries |
Firmware Sections (ELF)
| Section | Purpose |
|---|---|
.text
|
Executable code |
.rodata
|
Read-only data |
.data
|
Initialized data |
.bss
|
Zero-initialized data |
.section_task_rm_*
|
Task-specific sections |
Migration Phases
| Phase | Description |
|---|---|
| QUERY | Check migratability |
| PREPARE | Quiesce, snapshot |
| TRANSFER | Iterative page copy |
| COMMIT | Final sync, cutover |
| CLEANUP | Release resources |
File Naming Conventions
Decompiled Output
FUN_ram_<ADDRESS>_ram_<ADDRESS>.c
FUN_ram_057A1AC0_ram_057A1AC0.c= Function at 0x057A1AC0
Ghidra Projects
gsp-<purpose>/
gsp-subcmds,gsp-rpc-handlers,gsp-bar-fns, etc.
References
- RISC-V ISA: https://riscv.org/technical/specifications/
- SR-IOV Spec: https://pcisig.com/specifications/iov/
- Ghidra: https://ghidra-sre.org/