1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
# Open-IOV — Software Bill of Materials (SBOM)
> **Format:** CycloneDX 1.6 (machine-readable: [`sbom/open-iov-0.1.0.cdx.json`](sbom/open-iov-0.1.0.cdx.json)) +
> this human-readable page. The document follows the NTIA *Minimum Elements for
> a Software Bill of Materials* and is suitable for commercial review,
> procurement, vulnerability management and regulatory submission (see §9).
> SPDX 2.3 can be produced from the CycloneDX document with standard tooling on
> request.
| Field | Value |
|---|---|
| **SBOM document name** | Open-IOV SBOM |
| **SBOM version** | 1 |
| **SBOM serial (URN)** | `urn:uuid:e626c5a1-9697-4546-bb2b-5b4feb58e922` |
| **Created (UTC)** | 2026-10-02T06:47:39Z |
| **Created by** | The Open-IOV Project (automated inventory audit of the tracked tree) |
| **Primary component** | Open-IOV virtual GSP/vGPU stack |
| **Primary version** | `0.1.0` (`VGSP_VERSION` in `kernel/include/nvidia-vgpu-vfio.h`) |
| **Primary license** | BSD-3-Clause (kernel side: GPL-2.0; see §8) |
| **Repository** | <https://git.vgpu.io/open-iov.git> |
| **Scope** | All files tracked in the repository, plus the external components required to build, run and support it |
| **Distribution** | Firmware images, GPU drivers, hypervisors and guest OS images are **not distributed** in this repository (see §2 and §8) |
---
## 1. Primary component
**Open-IOV** is an open-source virtualization layer for NVIDIA GPUs. It lets an
unmodified NVIDIA guest driver run in a VM by emulating the GPU System
Processor (GSP) and its resource-manager firmware interface (GSP-RM) in a host
kernel module, and by arranging for guest work to execute on the physical GPU.
* Supplier: The Open-IOV Project
* Version: `0.1.0` — defined by `VGSP_VERSION` in
`kernel/include/nvidia-vgpu-vfio.h`
* Unique ID: `pkg:generic/open-iov@0.1.0`
* License: BSD-3-Clause (see `LICENSE`)
* Source revision: audited from the parent of the commit that adds this
document; the repository history is the authoritative record (`git log`)
## 2. Scope, conventions and exclusions
* **Included:** every first-party component and every third-party file tracked
in the repository (including vendored sources, generated analysis data and
prebuilt tools that are tracked).
* **Documented but not distributed:** external build/run dependencies (§6) —
NVIDIA drivers and GSP firmware, the Linux kernel, QEMU/KVM, GNU toolchain,
Python, Ghidra, CUDA toolkit, guest operating systems, and so on.
* **Third-party media in the historical wiki archive** (§5): the `wiki/` tree
is an archived scrape of the project's earlier public wiki. It includes
diagrams and logos whose provenance is third-party; they are historical
documentation, not part of the runnable software. Their licenses are
reported as `NOASSERTION` unless a per-file license exists.
* **Not tracked, not shipped:** `firmware/**/*.bin`, decompiled output,
local source checkouts, VM disk images, SDK headers and local notes are
gitignored and are not part of this SBOM's software payload.
* Components are identified with Package URLs (`pkg:…`) where an ecosystem
identifier exists; tracked files carry SHA-256 hashes in the machine SBOM.
## 3. First-party components
All first-party components are © 2026 The Open-IOV Project and licensed
**BSD-3-Clause** unless the per-file `SPDX-License-Identifier` states otherwise.
The kernel module is **GPL-2.0** (see §8).
| Component | Version | License | Location | Unique ID | Contents / purpose |
|---|---|---|---|---|---|
| `vgsp` kernel module | 0.1.0 | GPL-2.0 | `kernel/**` | `pkg:generic/vgsp@0.1.0` | Host VFIO mdev driver + emulated GSP/GSP-RM, semaphore service, memory model, physical-GPU backend, BAR/MSI-X emulation, mdev/VFIO lifecycle |
| `libiov` userspace library | 0.1.0 | BSD-3-Clause | `userspace/lib/**`, `userspace/include/libvgpu.h` | `pkg:generic/libiov@0.1.0` | Management library (`libiov.so`) + `libvgpu.so` compatibility link, RPC emulation helpers, pkg-config metadata |
| `example_vgpu` example | 0.1.0 | BSD-3-Clause | `userspace/examples/**` | `pkg:generic/open-iov-example@0.1.0` | Minimal library usage example and build files |
| Userspace tests | 0.1.0 | BSD-3-Clause | `userspace/tests/**` | `pkg:generic/open-iov-userspace-tests@0.1.0` | Userspace VF management tests |
| Kernel tests | 0.1.0 | GPL-2.0 | `kernel/tests/**` | `pkg:generic/open-iov-kernel-tests@0.1.0` | In-kernel unit/smoke tests |
| Guest diagnostics suite | 0.1.0 | BSD-3-Clause | `tools/guest-diag/**` | `pkg:generic/open-iov-guest-diag@0.1.0` | VM cycle harness, kprobes, pin scanners, CUDA smoke test wrappers, QEMU launch snapshots (internal tooling; may invoke an optional external VM manager) |
| CUDA A/B harness | 0.1.0 | BSD-3-Clause | `tools/cuda-ab/**` | `pkg:generic/open-iov-cuda-ab@0.1.0` | Host-vs-guest `vector_add` comparison harness (`vector_add.cu`, `ab.sh`, tracked prebuilt `run/vector_add`) |
| RM queue / WPR tools | 0.1.0 | BSD-3-Clause | `tools/rmq/**` | `pkg:generic/open-iov-rmq@0.1.0` | RM queue probes, WPR2 reset helper (+ companion kernel module), tracked prebuilt `wpr2_reset` |
| Ghidra analysis tooling | 0.1.0 | BSD-3-Clause | `tools/ghidra/**` | `pkg:generic/open-iov-ghidra-tools@0.1.0` | Scripts for firmware analysis under Ghidra (Ghidra itself is external, §6) |
| Guest test agent | 0.1.0 | BSD-3-Clause | `tools/guest_agent/**` | `pkg:generic/open-iov-guest-agent@0.1.0` | Optional guest-side test agent (may use PyTorch) |
| VM/module/debug tools | 0.1.0 | BSD-3-Clause | `tools/{vm,module_ops,debug,test}/**` | `pkg:generic/open-iov-tools-misc@0.1.0` | VM harness, module operations, debug and test helpers |
| GSP firmware analysis artifacts | 570.144W | BSD-3-Clause | `firmware/57X-GSP/570.144/**` | `pkg:generic/open-iov-gsp-analysis@570.144W` | Python analysis scripts, function/prologue maps, RPC handler maps, reports — the project's own work product; no NVIDIA binaries |
| CUDA userspace driver analysis | 570.144 | BSD-3-Clause | `userspace/cuda/**` | `pkg:generic/open-iov-cuda-analysis@570.144` | Documentation, decompilation tooling wrappers, Ghidra scripts and annotation tables for `libcuda.so.570.144` |
| Automation & build scripts | 0.1.0 | BSD-3-Clause | `scripts/**`, `install.sh`, `validate.sh`, `Makefile` | `pkg:generic/open-iov-scripts@0.1.0` | Install, build, VM harness, stack management and validation automation |
| Portability configuration | 0.1.0 | BSD-3-Clause | `config/**` | `pkg:generic/open-iov-config@0.1.0` | Hardware (Turing/Ampere/Blackwell) and driver-version (550/560/570/580) matrices |
| Documentation | 0.1.0 | BSD-3-Clause | `docs/**`, `README.md`, `STATE-CURRENT.md` | `pkg:generic/open-iov-docs@0.1.0` | Architecture, implementation, operations, portability, ecosystem and reference material |
| Project wiki archive | 2023 (imported) | BSD-3-Clause (third-party media excepted, §5) | `wiki/**` | `pkg:generic/open-iov-wiki-archive@2023` | Markdown wiki pages + archived HTML snapshot of the earlier project wiki |
| CI configuration | 0.1.0 | BSD-3-Clause | `.github/workflows/ci.yml` | `pkg:generic/open-iov-ci@0.1.0` | Build/test matrix (kernels 6.1/6.6/6.8, GCC 11/12/13) |
### Tracked build artifacts (first-party)
These prebuilt binaries are tracked in the tree. Their sources are present and
the hashes allow integrity verification.
| File | SHA-256 | Built from | Toolchain |
|---|---|---|---|
| `tools/cuda-ab/run/vector_add` | `8edc28a8814f108a85b794ca4e636138de03f45f706cb96bd008f420a87e8036` | `tools/cuda-ab/vector_add.cu` | NVIDIA CUDA toolkit (external, §6); links libc only |
| `tools/rmq/wpr2_reset` | `cae6537a41f0e548349617a7c44f411dc5c38f16000ce1879ba49814e82c2361` | `tools/rmq/wpr2_reset.c` | GCC 13 / glibc |
## 4. Bundled third-party components
Third-party files tracked in the repository, with upstream project and license.
Hashes are SHA-256.
| Component | Upstream | License | Files | SHA-256 |
|---|---|---|---|---|
| tomlc99 (TOML parser) | <https://github.com/cktan/tomlc99> | MIT | `userspace/extern/src/toml.c`, `userspace/extern/inc/toml.h` | `ca70a545ce442d878587bb2767de8c7e6219b43ba832fa87c4b8a8c4f4f8221f`, `0c56ba78add80e49073b12de039835718c29410669d7a526e65bc8212e1dc135` |
| cargs (argument parser) | <https://github.com/likle/cargs> | MIT | `userspace/extern/src/cargs.c`, `userspace/extern/inc/cargs.h` | `d6c88f89b1d948f4b221c54103f17f6575bd580fcaffb0de3dfbceb2dd6136ab`, `93d3e1cb40d6eb646b7f50051ee9ad3f664ffe21d103164f98e89e9775bb91cb` |
| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nv-hypervisor.h` | `733409c43ab65708bf5563b76e4dea9d1dfbe1d5cfa0d846fbba511a1186f932` |
| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nv-vgpu-vfio-interface.h` | `83908a89a7f6df2631d24bb2518bbb5643c4f1fb270300d20b76a04a0af735b6` |
| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nvstatus.h` | `e8267172a1f7a56420d612c6734b3554b9ff6a3d33fdda21b1371ff4ce4b8675` |
| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nvtypes.h` | `e647e23504fe4b6cc2337836b2155c49918ed174bd9a3d806125e7c12e894f2a` |
| GPL-2.0 license text | FSF | License text (not software) | `userspace/LICENSE` | — |
No NVIDIA source code, firmware image or binary driver is bundled: only
independently written code and public MIT-licensed interface headers.
## 5. Archived documentation and media (third-party provenance)
`wiki/` contains a historical scrape of the project's earlier wiki (year 2023)
plus current project wiki pages. It is documentation, not runnable software.
* The project's own wiki pages are BSD-3-Clause.
* The archived HTML pages and images include **third-party diagrams, screenshots
and logos** produced by other projects/vendors (for example Intel, Red Hat,
NVIDIA, the Linux kernel community, Looking Glass and QEMU contributors).
These are retained for historical reference; their licenses are
`NOASSERTION` here and are governed by their originating projects.
* If any archived media must be redistributed under a specific license, obtain
it from the originating project; if an artifact is believed to be improperly
included, open an issue (the project would rather over-comply).
## 6. External dependencies (required to build, run or support the software)
These components are **not distributed** in this repository. Versions are those
the project develops and tests against; see `config/versions/*.yaml` and
`.github/workflows/ci.yml` for the supported matrix.
### Runtime — virtualization platform
| Component | Version | License | Role |
|---|---|---|---|
| Linux kernel | ≥ 6.1 (tested 6.8.0-142; CI 6.1/6.6/6.8) | GPL-2.0-only | Host kernel; VFIO, mdev, IOMMU and DMA interfaces |
| QEMU | distribution version | GPL-2.0 | VM monitor (q35 + `pcie-root-port` + `vfio-pci` mdev) |
| KVM | in-kernel | GPL-2.0 | Hardware virtualization |
| VFIO / mdev / IOMMUFD | in-kernel | GPL-2.0 | Device assignment and mediated devices |
| libvirt | distribution version | LGPL-2.1 | Optional management layer |
| OVMF | distribution version | BSD-2-Clause-Patent | UEFI firmware for guests (optional) |
### Runtime — NVIDIA (proprietary, user-supplied; not distributed)
| Component | Version | License | Role |
|---|---|---|---|
| NVIDIA guest driver (`nvidia.ko`, `libcuda.so`) | 570.144 | NVIDIA proprietary EULA | The unmodified guest driver Open-IOV serves |
| NVIDIA GSP firmware (TU102) | 570.144W | NVIDIA proprietary (redistribution restricted) | Fetched by `install.sh` from public NVIDIA `linux-firmware`; pinned MD5 `13ce12a392a31eeb79a2e6ebd3a4a93a`; **never committed** |
| NVIDIA host distribution driver | 570.211.01 | NVIDIA proprietary EULA | Host GPU management (tested configuration) |
| NVIDIA open-gpu-kernel-modules | tag 610.57.04 | MIT / GPL-2.0 dual | Cloned at a pinned tag by `install.sh` for build glue; **not committed** |
| NVIDIA CUDA toolkit | 12.4 | NVIDIA proprietary EULA | Building `tools/cuda-ab` and running CUDA workloads |
| Ubuntu guest OS | 24.04 LTS | Various (GPL and others) | Guest environment |
### Build, test and analysis tooling
| Component | Version | License | Role |
|---|---|---|---|
| GCC / binutils / make / bc / flex / bison | distribution | GPL-3.0 / LGPL-2.1 | Kernel and userspace builds |
| Linux kernel headers | matching host kernel | GPL-2.0 | Kernel module builds |
| OpenSSL (`libssl-dev`), libelf | distribution | Apache-2.0, LGPL-2.1/GPL | Build dependencies |
| Python 3 | ≥ 3.10 | PSF-2.0 | All analysis and diagnostic tooling |
| PyTorch | distribution version (optional) | BSD-3-Clause | Optional guest test agent (`tools/guest_agent/`) |
| GDB (+ Python bindings) | distribution | GPL-3.0 | Guest/host debugging and one-shot samplers |
| Ghidra | 11.x | Apache-2.0 | Firmware and CUDA userspace decompilation |
| OpenJDK | 21 | GPL-2.0 with Classpath Exception | Runs Ghidra |
| pkg-config, uuid-runtime, kmod, pciutils, curl, wget, git, ca-certificates | distribution | GPL-2.0/BSD-3-Clause/curl license/MPL-2.0 | Build and diagnostic utilities |
| GitHub Actions (CI service) | hosted | GitHub Terms | CI runner service used by `.github/workflows/ci.yml` |
## 7. Dependency relationships
```
pkg:generic/open-iov@0.1.0
├── contains vgsp (kernel module) ── depends on ── Linux kernel (VFIO/mdev/IOMMU/DMA)
├── contains libiov / libvgpu ── depends on ── tomlc99, cargs
├── contains example_vgpu, userspace tests, kernel tests
├── contains tools (guest-diag, cuda-ab, rmq, ghidra, guest_agent, vm/module/debug/test)
│ ├── cuda-ab ── needs ── NVIDIA CUDA toolkit 12.4
│ ├── ghidra tools ── needs ── Ghidra + OpenJDK
│ └── guest_agent ── optional ── PyTorch
├── contains firmware analysis artifacts (570.144W) and CUDA analysis (570.144)
├── contains scripts, config, docs, wiki archive, CI
└── operates against (external, not distributed)
├── NVIDIA guest driver 570.144 + libcuda
├── NVIDIA GSP firmware 570.144W (fetched at install time)
├── QEMU + KVM + VFIO/mdev (hypervisor platform)
└── Ubuntu 24.04 guest OS
```
The machine-readable document encodes these relationships in the CycloneDX
`dependencies` graph.
## 8. License summary and redistribution
| License | Applies to | Redistribution |
|---|---|---|
| BSD-3-Clause | Project code outside `kernel/` (`userspace/`, `tools/`, `scripts/`, `config/`, `docs/`, examples, tests, CI) | Permitted, with copyright notice |
| GPL-2.0 | `kernel/**` (kernel module) and in-kernel tests | Permitted under GPL-2.0 terms |
| MIT | tomlc99, cargs, NVIDIA public interface headers | Permitted, with notice |
| NVIDIA proprietary | Guest driver, host driver, GSP firmware, CUDA toolkit | **Not redistributed by this project**; governed by NVIDIA's EULA. Users obtain them directly from NVIDIA/public distribution channels |
| Various / NOASSERTION | Archived third-party media in `wiki/` (§5) | Governed by originating projects; remove if terms cannot be met |
Notes:
* `userspace/LICENSE` contains GPL-2.0 license text; the authoritative license
of each file is its `SPDX-License-Identifier` (the userspace libraries are
BSD-3-Clause per `docs/09-reference/legal-and-licensing.md`).
* GSP firmware and drivers may be subject to export-control regulations;
deployers are responsible for compliance.
* Contributions are inbound=outbound (BSD-3 for BSD-3 files, GPL-2.0 for
GPL-2.0 files); see `docs/09-reference/legal-and-licensing.md`.
## 9. NTIA minimum-elements compliance
| NTIA minimum element | Where satisfied |
|---|---|
| Supplier name | §1, §3, §4, §6 (per component) |
| Component name | §3, §4, §6 |
| Component version | §3, §4, §6 |
| Other unique identifiers | Package URLs (`pkg:…`) in §1/§3 and the CycloneDX file |
| Dependency relationships | §7 and CycloneDX `dependencies` |
| SBOM author | Document metadata (The Open-IOV Project) |
| Timestamp | Document metadata (`2026-10-02T06:47:39Z`) |
| Hash of component | SHA-256 for bundled files and tracked binaries (§3, §4, CycloneDX `hashes`) |
## 10. Verification
* Machine-readable SBOM: [`sbom/open-iov-0.1.0.cdx.json`](sbom/open-iov-0.1.0.cdx.json)
(CycloneDX 1.6, serial `urn:uuid:e626c5a1-9697-4546-bb2b-5b4feb58e922`).
* File hashes in this document and in the CycloneDX file can be verified with
`sha256sum` against a checkout of the same revision.
* To reproduce the inventory: all paths above are relative to the repository
root; `git ls-files` enumerates the tracked payload.
* Vulnerability management: components with known ecosystems (tomlc99, cargs,
NVIDIA headers, Linux kernel, Python, Ghidra) can be matched by purl/CPE by
standard SBOM tooling. The project itself carries no bundled libraries with
third-party transitive dependencies.
## 11. Generation and revision history
| Date (UTC) | Version | Change |
|---|---|---|
| 2026-10-02 | 1 | Initial complete SBOM replacing the 2023 wiki survey page. Inventory audited against the tracked tree; tracked binaries hashed; external/optional dependencies enumerated; NTIA checklist added. |
|