From 0054d3acbc3017d2a535239f8153d3c99f7abc18 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Fri, 2 Oct 2026 02:50:38 -0400 Subject: docs: add complete SBOM, ignore local deployment resources, remove stale third-party references --- .gitignore | 4 + README.md | 1 + SBOM.md | 246 ++++++++ .../02-getting-started/01-install-and-first-run.md | 2 +- docs/07-developers/onboarding-and-standards.md | 2 +- docs/09-reference/legal-and-licensing.md | 4 + install.sh | 2 +- kernel/main.c | 4 +- sbom/open-iov-0.1.0.cdx.json | 625 +++++++++++++++++++++ scripts/launch_qemu_direct.sh | 2 +- scripts/stack_manager.sh | 4 +- tools/guest-diag/README.md | 4 +- .../cuda/docs/04-virtualization-and-emulation.md | 2 +- wiki/GPU_SBOM.md | 282 +--------- .../GPU_Software_Bill_Of_Materials_(SBOM).html | 8 +- .../index.php/LIME_Is_Mediated_Emulation.html | 2 +- wiki/open-iov.org/index.php/Mdev-GPU.html | 12 +- ...tware_Bill_Of_Materials_(SBOM)&action=edit.html | 8 +- ...re_Bill_Of_Materials_(SBOM)&action=history.html | 2 +- ...tware_Bill_Of_Materials_(SBOM)&oldid=23786.html | 8 +- ...tle=LIME_Is_Mediated_Emulation&action=edit.html | 2 +- ...title=LIME_Is_Mediated_Emulation&oldid=786.html | 2 +- .../index.php?title=Mdev-GPU&action=edit.html | 12 +- .../index.php?title=Mdev-GPU&action=history.html | 2 +- .../index.php?title=Mdev-GPU&oldid=23740.html | 12 +- 25 files changed, 944 insertions(+), 310 deletions(-) create mode 100644 SBOM.md create mode 100644 sbom/open-iov-0.1.0.cdx.json diff --git a/.gitignore b/.gitignore index 9cb3517..d15499f 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,10 @@ tools/ghidra/**/*.lock~ *.vdi *.raw +# Local VM deployment resources (autoinstall seeds; not part of the +# reproducible core) +/qemu-resources/ + # Compiled helper binaries (build from adjacent .c source instead) tools/debug/nv2080_ctrl diff --git a/README.md b/README.md index 8efbe25..06cfffa 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ patching any driver or firmware, and without forking any hypervisor. | `firmware/` | versioned GSP firmware analysis artifacts (images fetched by `install.sh`) | | `docs/` | **the documentation tree** (entry point: `docs/README.md`) | | `wiki/` | long-form firmware/protocol deep dives | +| `SBOM.md`, `sbom/` | software bill of materials: human-readable page + machine-readable CycloneDX 1.6 | Not tracked in git by design: GSP firmware blobs, decompiled firmware output, local analysis material, VM disks/ISOs and Ghidra databases. diff --git a/SBOM.md b/SBOM.md new file mode 100644 index 0000000..5182376 --- /dev/null +++ b/SBOM.md @@ -0,0 +1,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` (`OPEN_IOV_VFIO_VERSION` in `kernel/include/nvidia-vgpu-vfio.h`) | +| **Primary license** | BSD-3-Clause (kernel side: GPL-2.0; see §8) | +| **Repository** | | +| **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 `OPEN_IOV_VFIO_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 | +|---|---|---|---|---|---| +| `open-iov-vfio` kernel module | 0.1.0 | GPL-2.0 | `kernel/**` | `pkg:generic/open-iov-vfio@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) | | MIT | `userspace/extern/src/toml.c`, `userspace/extern/inc/toml.h` | `ca70a545ce442d878587bb2767de8c7e6219b43ba832fa87c4b8a8c4f4f8221f`, `0c56ba78add80e49073b12de039835718c29410669d7a526e65bc8212e1dc135` | +| cargs (argument parser) | | 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 open-iov-vfio (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. | diff --git a/docs/02-getting-started/01-install-and-first-run.md b/docs/02-getting-started/01-install-and-first-run.md index d1c57c3..c1a8f5d 100644 --- a/docs/02-getting-started/01-install-and-first-run.md +++ b/docs/02-getting-started/01-install-and-first-run.md @@ -88,7 +88,7 @@ any other VFIO device. ./scripts/stack_manager.sh qemu # reference raw-QEMU guest with the mdev ``` -Or integrate with your own stack (libvirt, ``, Xen, ...): attach the mdev +Or integrate with your own stack (libvirt, Xen, ...): attach the mdev device to the guest exactly as you would any VFIO device: ```xml diff --git a/docs/07-developers/onboarding-and-standards.md b/docs/07-developers/onboarding-and-standards.md index b3ac1c5..241e03f 100644 --- a/docs/07-developers/onboarding-and-standards.md +++ b/docs/07-developers/onboarding-and-standards.md @@ -112,7 +112,7 @@ The following rules each come from a real bug and are enforced in review: * `open-iov-vfio.ko` is **standalone**: no `MODULE_SOFTDEP`/dependency on `nvidia` — `nvidia.ko` imports our symbols, not the other way around. * VM access in tooling goes through `scripts/vgpu_vm.py`; do not invoke - ``/QEMU directly. + QEMU directly. * Scripts never reboot or otherwise change system state without explicit operator action (project hard rule). * Do not widen an API's hardware assumptions silently: if a function needs diff --git a/docs/09-reference/legal-and-licensing.md b/docs/09-reference/legal-and-licensing.md index 57aad43..87d8002 100644 --- a/docs/09-reference/legal-and-licensing.md +++ b/docs/09-reference/legal-and-licensing.md @@ -2,6 +2,10 @@ > What is licensed how, what we may redistribute, and how we stay clean while > doing adversarial interoperability. +> +> The complete component and license inventory is the SBOM: +> [`../../SBOM.md`](../../SBOM.md) (machine-readable: +> [`../../sbom/open-iov-0.1.0.cdx.json`](../../sbom/open-iov-0.1.0.cdx.json)). ## 1. The project's licenses diff --git a/install.sh b/install.sh index 36a1ef2..a70e84b 100755 --- a/install.sh +++ b/install.sh @@ -14,7 +14,7 @@ # 7. mdev Create a vGPU mdev device (root) # # After install.sh completes, attach the mdev to ANY QEMU wrapper you like -# (libvirt , , or raw QEMU -device vfio-pci,sysfsdev=...). +# (libvirt , or raw QEMU -device vfio-pci,sysfsdev=...). # A reference raw-QEMU launcher is provided: scripts/launch_qemu_vgpu.sh # # Read first (progressive disclosure): diff --git a/kernel/main.c b/kernel/main.c index 3784a70..fbeb7e3 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -105,9 +105,9 @@ static unsigned int nv_vgpu_get_available(struct mdev_type *mtype) /* * show_description - mdev type description for management tools. * - * / parses "framebuffer=M" from this string for EVERY + * Management tools parse "framebuffer=M" from this string for every * supported type before creating an mdev, so the field is mandatory - * (missing description file -> readFile failure -> no vGPU). + * (a missing description fails type enumeration). * 256M matches the vGPU BAR1 (VRAM aperture) size we expose to guests. */ static ssize_t nv_vgpu_show_description(struct mdev_type *mtype, char *buf) diff --git a/sbom/open-iov-0.1.0.cdx.json b/sbom/open-iov-0.1.0.cdx.json new file mode 100644 index 0000000..1db09d3 --- /dev/null +++ b/sbom/open-iov-0.1.0.cdx.json @@ -0,0 +1,625 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.6", + "serialNumber": "urn:uuid:e626c5a1-9697-4546-bb2b-5b4feb58e922", + "version": 1, + "metadata": { + "timestamp": "2026-10-02T06:47:39Z", + "authors": [ + { "name": "The Open-IOV Project" } + ], + "tools": { + "components": [ + { + "type": "application", + "bom-ref": "tool:open-iov-inventory-audit", + "name": "open-iov-inventory-audit", + "version": "1", + "supplier": { "name": "The Open-IOV Project" } + } + ] + }, + "component": { + "type": "application", + "bom-ref": "pkg:generic/open-iov@0.1.0", + "name": "open-iov", + "version": "0.1.0", + "description": "Open-source virtualization layer for NVIDIA GPUs: emulates the GSP/GSP-RM interface in a host kernel module so unmodified guest drivers can run in VMs and work executes on the physical GPU.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov@0.1.0", + "externalReferences": [ + { "type": "vcs", "url": "https://git.vgpu.io/open-iov.git" }, + { "type": "documentation", "url": "https://git.vgpu.io/open-iov.git/blob/master/docs/README.md" } + ], + "properties": [ + { "name": "open-iov:license-policy", "value": "BSD-3-Clause for userspace/tools/scripts/config/docs; GPL-2.0-only for kernel/**; per-file SPDX headers govern" }, + { "name": "open-iov:compliance", "value": "NTIA minimum elements; CycloneDX 1.6" }, + { "name": "open-iov:sbom-page", "value": "SBOM.md" } + ] + }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "properties": [ + { "name": "open-iov:scope", "value": "All files tracked in the repository plus external build/run dependencies; NVIDIA firmware and drivers are not distributed" }, + { "name": "open-iov:audited-revision", "value": "parent commit of the commit adding this document (version 0.1.0)" } + ] + }, + "components": [ + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-vfio@0.1.0", + "name": "open-iov-vfio", + "version": "0.1.0", + "description": "Host VFIO mdev kernel module: virtual GPU device, GSP/GSP-RM emulation, semaphore service, memory model, physical-GPU backend.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "GPL-2.0-only" } } ], + "purl": "pkg:generic/open-iov-vfio@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "kernel/**" } ] + }, + { + "type": "library", + "bom-ref": "pkg:generic/libiov@0.1.0", + "name": "libiov", + "version": "0.1.0", + "description": "Userspace management library (libiov.so, libvgpu.so compatibility link) with RPC emulation helpers.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/libiov@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "userspace/lib/**, userspace/include/libvgpu.h" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-example@0.1.0", + "name": "open-iov-example", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-example@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "userspace/examples/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-userspace-tests@0.1.0", + "name": "open-iov-userspace-tests", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-userspace-tests@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "userspace/tests/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-kernel-tests@0.1.0", + "name": "open-iov-kernel-tests", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "GPL-2.0-only" } } ], + "purl": "pkg:generic/open-iov-kernel-tests@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "kernel/tests/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-guest-diag@0.1.0", + "name": "open-iov-guest-diag", + "version": "0.1.0", + "description": "Guest diagnostics and VM cycle tooling: kprobes, pin scanners, CUDA smoke test wrappers, QEMU launch snapshots.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-guest-diag@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/guest-diag/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-cuda-ab@0.1.0", + "name": "open-iov-cuda-ab", + "version": "0.1.0", + "description": "CUDA A/B harness comparing host and guest execution of a deterministic vector_add workload.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-cuda-ab@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/cuda-ab/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-rmq@0.1.0", + "name": "open-iov-rmq", + "version": "0.1.0", + "description": "RM queue / WPR tooling including a companion kernel module.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-rmq@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/rmq/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-ghidra-tools@0.1.0", + "name": "open-iov-ghidra-tools", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-ghidra-tools@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/ghidra/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-guest-agent@0.1.0", + "name": "open-iov-guest-agent", + "version": "0.1.0", + "description": "Guest test agent (optional; uses PyTorch when available).", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-guest-agent@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/guest_agent/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-tools-misc@0.1.0", + "name": "open-iov-tools-misc", + "version": "0.1.0", + "description": "VM harness, module operations, debug helpers and test helpers.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-tools-misc@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "tools/{vm,module_ops,debug,test}/**" } ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-gsp-analysis@570.144W", + "name": "open-iov-gsp-analysis", + "version": "570.144W", + "description": "GSP firmware analysis work product: analysis scripts, function maps, RPC handler maps and reports. No NVIDIA binaries.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-gsp-analysis@570.144W", + "properties": [ { "name": "open-iov:path", "value": "firmware/57X-GSP/570.144/**" } ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-cuda-analysis@570.144", + "name": "open-iov-cuda-analysis", + "version": "570.144", + "description": "CUDA userspace driver (libcuda) analysis: docs, tooling and annotation tables.", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-cuda-analysis@570.144", + "properties": [ { "name": "open-iov:path", "value": "userspace/cuda/**" } ] + }, + { + "type": "application", + "bom-ref": "pkg:generic/open-iov-scripts@0.1.0", + "name": "open-iov-scripts", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-scripts@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "scripts/**, install.sh, validate.sh, Makefile" } ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-config@0.1.0", + "name": "open-iov-config", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-config@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "config/**" } ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-docs@0.1.0", + "name": "open-iov-docs", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-docs@0.1.0", + "properties": [ { "name": "open-iov:path", "value": "docs/**, README.md, STATE-CURRENT.md" } ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-wiki-archive@2023", + "name": "open-iov-wiki-archive", + "version": "2023", + "description": "Project wiki pages plus an archived scrape of the earlier public wiki. Contains historical third-party media (NOASSERTION).", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-wiki-archive@2023", + "properties": [ + { "name": "open-iov:path", "value": "wiki/**" }, + { "name": "open-iov:third-party-media", "value": "Archived diagrams/screenshots/logos retain their originating projects' terms; see SBOM.md section 5" } + ] + }, + { + "type": "data", + "bom-ref": "pkg:generic/open-iov-ci@0.1.0", + "name": "open-iov-ci", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "purl": "pkg:generic/open-iov-ci@0.1.0", + "properties": [ { "name": "open-iov:path", "value": ".github/workflows/ci.yml" } ] + }, + { + "type": "file", + "bom-ref": "file:vector_add", + "name": "vector_add (prebuilt)", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "hashes": [ { "alg": "SHA-256", "content": "8edc28a8814f108a85b794ca4e636138de03f45f706cb96bd008f420a87e8036" } ], + "properties": [ + { "name": "open-iov:path", "value": "tools/cuda-ab/run/vector_add" }, + { "name": "open-iov:source", "value": "tools/cuda-ab/vector_add.cu" } + ] + }, + { + "type": "file", + "bom-ref": "file:wpr2_reset", + "name": "wpr2_reset (prebuilt)", + "version": "0.1.0", + "supplier": { "name": "The Open-IOV Project" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "hashes": [ { "alg": "SHA-256", "content": "cae6537a41f0e548349617a7c44f411dc5c38f16000ce1879ba49814e82c2361" } ], + "properties": [ + { "name": "open-iov:path", "value": "tools/rmq/wpr2_reset" }, + { "name": "open-iov:source", "value": "tools/rmq/wpr2_reset.c" } + ] + }, + { + "type": "library", + "bom-ref": "pkg:github/cktan/tomlc99@vendored", + "name": "tomlc99", + "version": "vendored snapshot (version not recorded)", + "description": "TOML parser used by the userspace library.", + "supplier": { "name": "CK Tan" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "purl": "pkg:github/cktan/tomlc99@vendored", + "hashes": [ { "alg": "SHA-256", "content": "ca70a545ce442d878587bb2767de8c7e6219b43ba832fa87c4b8a8c4f4f8221f" } ], + "properties": [ + { "name": "open-iov:path", "value": "userspace/extern/src/toml.c, userspace/extern/inc/toml.h" }, + { "name": "open-iov:header-sha256", "value": "0c56ba78add80e49073b12de039835718c29410669d7a526e65bc8212e1dc135" } + ] + }, + { + "type": "library", + "bom-ref": "pkg:github/likle/cargs@vendored", + "name": "cargs", + "version": "vendored snapshot (version not recorded)", + "description": "Command-line argument parser used by the userspace library.", + "supplier": { "name": "Leonard Iklo" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "purl": "pkg:github/likle/cargs@vendored", + "hashes": [ { "alg": "SHA-256", "content": "d6c88f89b1d948f4b221c54103f17f6575bd580fcaffb0de3dfbceb2dd6136ab" } ], + "properties": [ + { "name": "open-iov:path", "value": "userspace/extern/src/cargs.c, userspace/extern/inc/cargs.h" }, + { "name": "open-iov:header-sha256", "value": "93d3e1cb40d6eb646b7f50051ee9ad3f664ffe21d103164f98e89e9775bb91cb" } + ] + }, + { + "type": "file", + "bom-ref": "file:nv-hypervisor.h", + "name": "nv-hypervisor.h", + "version": "570.144", + "supplier": { "name": "NVIDIA CORPORATION" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "hashes": [ { "alg": "SHA-256", "content": "733409c43ab65708bf5563b76e4dea9d1dfbe1d5cfa0d846fbba511a1186f932" } ], + "properties": [ { "name": "open-iov:path", "value": "kernel/include/nv-hypervisor.h" } ] + }, + { + "type": "file", + "bom-ref": "file:nv-vgpu-vfio-interface.h", + "name": "nv-vgpu-vfio-interface.h", + "version": "570.144", + "supplier": { "name": "NVIDIA CORPORATION" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "hashes": [ { "alg": "SHA-256", "content": "83908a89a7f6df2631d24bb2518bbb5643c4f1fb270300d20b76a04a0af735b6" } ], + "properties": [ { "name": "open-iov:path", "value": "kernel/include/nv-vgpu-vfio-interface.h" } ] + }, + { + "type": "file", + "bom-ref": "file:nvstatus.h", + "name": "nvstatus.h", + "version": "570.144", + "supplier": { "name": "NVIDIA CORPORATION" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "hashes": [ { "alg": "SHA-256", "content": "e8267172a1f7a56420d612c6734b3554b9ff6a3d33fdda21b1371ff4ce4b8675" } ], + "properties": [ { "name": "open-iov:path", "value": "kernel/include/nvstatus.h" } ] + }, + { + "type": "file", + "bom-ref": "file:nvtypes.h", + "name": "nvtypes.h", + "version": "570.144", + "supplier": { "name": "NVIDIA CORPORATION" }, + "licenses": [ { "license": { "id": "MIT" } } ], + "hashes": [ { "alg": "SHA-256", "content": "e647e23504fe4b6cc2337836b2155c49918ed174bd9a3d806125e7c12e894f2a" } ], + "properties": [ { "name": "open-iov:path", "value": "kernel/include/nvtypes.h" } ] + }, + { + "type": "operating-system", + "bom-ref": "dep:linux-kernel", + "name": "Linux kernel", + "version": ">=6.1 (tested 6.8.0-142; CI 6.1/6.6/6.8)", + "description": "Host kernel providing VFIO, mdev, IOMMU and DMA interfaces.", + "supplier": { "name": "Linux kernel community" }, + "licenses": [ { "license": { "id": "GPL-2.0-only" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:qemu", + "name": "QEMU", + "version": "distribution version", + "supplier": { "name": "QEMU Project" }, + "licenses": [ { "license": { "id": "GPL-2.0-only" } } ], + "scope": "required" + }, + { + "type": "library", + "bom-ref": "dep:vfio-mdev", + "name": "VFIO / mdev", + "version": "in-kernel", + "supplier": { "name": "Linux kernel community" }, + "licenses": [ { "license": { "id": "GPL-2.0-only" } } ], + "scope": "required" + }, + { + "type": "library", + "bom-ref": "dep:libvirt", + "name": "libvirt", + "version": "distribution version", + "supplier": { "name": "libvirt Project" }, + "licenses": [ { "license": { "id": "LGPL-2.1-only" } } ], + "scope": "optional" + }, + { + "type": "firmware", + "bom-ref": "dep:ovmf", + "name": "OVMF", + "version": "distribution version", + "supplier": { "name": "TianoCore" }, + "licenses": [ { "license": { "id": "BSD-2-Clause-Patent" } } ], + "scope": "optional" + }, + { + "type": "application", + "bom-ref": "dep:nvidia-guest-driver", + "name": "NVIDIA guest driver (nvidia.ko, libcuda.so)", + "version": "570.144", + "description": "The unmodified guest driver served by Open-IOV. Not distributed by this project.", + "supplier": { "name": "NVIDIA Corporation" }, + "licenses": [ { "license": { "name": "NVIDIA proprietary EULA" } } ], + "scope": "required" + }, + { + "type": "firmware", + "bom-ref": "dep:nvidia-gsp-firmware", + "name": "NVIDIA GSP firmware (TU102)", + "version": "570.144W", + "description": "Fetched at install time from public NVIDIA linux-firmware; pinned MD5 13ce12a392a31eeb79a2e6ebd3a4a93a. Never committed.", + "supplier": { "name": "NVIDIA Corporation" }, + "licenses": [ { "license": { "name": "NVIDIA proprietary (redistribution restricted)" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:nvidia-host-driver", + "name": "NVIDIA host distribution driver", + "version": "570.211.01", + "supplier": { "name": "NVIDIA Corporation" }, + "licenses": [ { "license": { "name": "NVIDIA proprietary EULA" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:nvidia-openrm", + "name": "NVIDIA open-gpu-kernel-modules", + "version": "610.57.04 (pinned tag)", + "description": "Cloned at a pinned tag by install.sh for build glue; patched locally; never committed.", + "supplier": { "name": "NVIDIA Corporation" }, + "licenses": [ { "expression": "MIT OR GPL-2.0-only" } ], + "scope": "optional" + }, + { + "type": "application", + "bom-ref": "dep:cuda-toolkit", + "name": "NVIDIA CUDA toolkit", + "version": "12.4", + "supplier": { "name": "NVIDIA Corporation" }, + "licenses": [ { "license": { "name": "NVIDIA proprietary EULA" } } ], + "scope": "optional" + }, + { + "type": "operating-system", + "bom-ref": "dep:ubuntu-guest", + "name": "Ubuntu", + "version": "24.04 LTS", + "supplier": { "name": "Canonical" }, + "licenses": [ { "license": { "name": "Various free software licenses" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:gcc", + "name": "GCC", + "version": "11-13", + "supplier": { "name": "GNU Project" }, + "licenses": [ { "license": { "id": "GPL-3.0-or-later" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:binutils", + "name": "GNU binutils", + "version": "distribution version", + "supplier": { "name": "GNU Project" }, + "licenses": [ { "license": { "id": "GPL-3.0-or-later" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:make", + "name": "GNU make", + "version": "distribution version", + "supplier": { "name": "GNU Project" }, + "licenses": [ { "license": { "id": "GPL-3.0-or-later" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:python3", + "name": "Python", + "version": ">=3.10", + "supplier": { "name": "Python Software Foundation" }, + "licenses": [ { "license": { "id": "PSF-2.0" } } ], + "scope": "required" + }, + { + "type": "library", + "bom-ref": "dep:pytorch", + "name": "PyTorch", + "version": "distribution version", + "supplier": { "name": "PyTorch Foundation" }, + "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], + "scope": "optional" + }, + { + "type": "application", + "bom-ref": "dep:gdb", + "name": "GDB", + "version": "distribution version", + "supplier": { "name": "GNU Project" }, + "licenses": [ { "license": { "id": "GPL-3.0-or-later" } } ], + "scope": "required" + }, + { + "type": "application", + "bom-ref": "dep:ghidra", + "name": "Ghidra", + "version": "11.x", + "supplier": { "name": "NSA / Ghidra Project" }, + "licenses": [ { "license": { "id": "Apache-2.0" } } ], + "scope": "optional" + }, + { + "type": "application", + "bom-ref": "dep:openjdk", + "name": "OpenJDK", + "version": "21", + "supplier": { "name": "OpenJDK community" }, + "licenses": [ { "expression": "GPL-2.0-only WITH Classpath-exception-2.0" } ], + "scope": "optional" + }, + { + "type": "library", + "bom-ref": "dep:openssl", + "name": "OpenSSL", + "version": "distribution version", + "supplier": { "name": "OpenSSL Project" }, + "licenses": [ { "license": { "id": "Apache-2.0" } } ], + "scope": "required" + }, + { + "type": "library", + "bom-ref": "dep:libelf", + "name": "libelf", + "version": "distribution version", + "supplier": { "name": "elfutils / Linux community" }, + "licenses": [ { "expression": "LGPL-2.1-or-later OR GPL-2.0-or-later" } ], + "scope": "required" + } + ], + "dependencies": [ + { + "ref": "pkg:generic/open-iov@0.1.0", + "dependsOn": [ + "pkg:generic/open-iov-vfio@0.1.0", + "pkg:generic/libiov@0.1.0", + "pkg:generic/open-iov-example@0.1.0", + "pkg:generic/open-iov-userspace-tests@0.1.0", + "pkg:generic/open-iov-kernel-tests@0.1.0", + "pkg:generic/open-iov-guest-diag@0.1.0", + "pkg:generic/open-iov-cuda-ab@0.1.0", + "pkg:generic/open-iov-rmq@0.1.0", + "pkg:generic/open-iov-ghidra-tools@0.1.0", + "pkg:generic/open-iov-guest-agent@0.1.0", + "pkg:generic/open-iov-tools-misc@0.1.0", + "pkg:generic/open-iov-gsp-analysis@570.144W", + "pkg:generic/open-iov-cuda-analysis@570.144", + "pkg:generic/open-iov-scripts@0.1.0", + "pkg:generic/open-iov-config@0.1.0", + "pkg:generic/open-iov-docs@0.1.0", + "pkg:generic/open-iov-wiki-archive@2023", + "pkg:generic/open-iov-ci@0.1.0", + "dep:linux-kernel", + "dep:qemu", + "dep:nvidia-guest-driver", + "dep:nvidia-gsp-firmware", + "dep:ubuntu-guest" + ] + }, + { + "ref": "pkg:generic/open-iov-vfio@0.1.0", + "dependsOn": [ + "dep:linux-kernel", + "dep:vfio-mdev", + "file:nv-hypervisor.h", + "file:nv-vgpu-vfio-interface.h", + "file:nvstatus.h", + "file:nvtypes.h" + ] + }, + { + "ref": "pkg:generic/libiov@0.1.0", + "dependsOn": [ + "pkg:github/cktan/tomlc99@vendored", + "pkg:github/likle/cargs@vendored" + ] + }, + { + "ref": "pkg:generic/open-iov-cuda-ab@0.1.0", + "dependsOn": [ + "dep:cuda-toolkit", + "file:vector_add" + ] + }, + { + "ref": "pkg:generic/open-iov-rmq@0.1.0", + "dependsOn": [ + "file:wpr2_reset" + ] + }, + { + "ref": "pkg:generic/open-iov-ghidra-tools@0.1.0", + "dependsOn": [ + "dep:ghidra", + "dep:openjdk" + ] + }, + { + "ref": "pkg:generic/open-iov-guest-agent@0.1.0", + "dependsOn": [ + "dep:python3", + "dep:pytorch" + ] + }, + { + "ref": "pkg:generic/open-iov-guest-diag@0.1.0", + "dependsOn": [ + "dep:python3", + "dep:gdb", + "dep:qemu" + ] + }, + { + "ref": "pkg:generic/open-iov-scripts@0.1.0", + "dependsOn": [ + "dep:gcc", + "dep:make", + "dep:binutils", + "dep:openssl", + "dep:libelf", + "dep:python3" + ] + } + ] +} diff --git a/scripts/launch_qemu_direct.sh b/scripts/launch_qemu_direct.sh index 25e628c..8ff315f 100755 --- a/scripts/launch_qemu_direct.sh +++ b/scripts/launch_qemu_direct.sh @@ -1,5 +1,5 @@ #!/bin/bash -# launch_qemu_direct.sh - launch the vGPU VM without , with a serial +# launch_qemu_direct.sh - launch the vGPU VM directly, with a serial # socket, QMP socket and guest agent socket that tools/guest-diag scripts # expect. The mdev UUID is taken from $1 or MDEV_UUID, else the first # existing /sys/bus/mdev/devices entry. diff --git a/scripts/stack_manager.sh b/scripts/stack_manager.sh index faf345b..5598817 100755 --- a/scripts/stack_manager.sh +++ b/scripts/stack_manager.sh @@ -238,8 +238,8 @@ cmd_list_mdev() { # ============================================================ cmd_launch_qemu() { - # WORKFLOW RULE: always use the QEMU harness (vgpu_vm.py), never - # or raw QEMU directly - the harness owns , mdev lifecycle, QMP, + # WORKFLOW RULE: always use the QEMU harness (vgpu_vm.py), never raw + # QEMU directly - the harness owns the mdev lifecycle, QMP, # guest-agent and serial logging. local harness="$BASE_DIR/scripts/vgpu_vm.py" if [[ ! -f "$harness" ]]; then diff --git a/tools/guest-diag/README.md b/tools/guest-diag/README.md index 618663b..ea5ac14 100644 --- a/tools/guest-diag/README.md +++ b/tools/guest-diag/README.md @@ -37,8 +37,8 @@ launch_qemu_rootport.sh -> relaunch. Guest boots in ~60-75 s. ## launch_qemu_rootport.sh - QEMU command line with pcie-root-port -Snapshot of the working launch command (derived from 's argv of a stopped -VM) plus the root-port fix. **Requires** the mdev UUID to be substituted and: +Snapshot of the working launch command (captured from a running VM's QEMU +process) plus the root-port fix. **Requires** the mdev UUID to be substituted and: mkdir -p /tmp/sockets/ # else QMP bind fails rm -f /tmp/qemu-guest-agent.sock /tmp/qemu-qmp.sock diff --git a/userspace/cuda/docs/04-virtualization-and-emulation.md b/userspace/cuda/docs/04-virtualization-and-emulation.md index 89adc35..6492a60 100644 --- a/userspace/cuda/docs/04-virtualization-and-emulation.md +++ b/userspace/cuda/docs/04-virtualization-and-emulation.md @@ -204,7 +204,7 @@ The same analysis supports: effect, the decoder learns it, not the whole stack. * **Multiple hypervisors**: the emulation boundary is VFIO/mdev today, but the interface analysis is hypervisor-neutral (the same stock guest runs under - libvirt, / or raw QEMU). + libvirt or raw QEMU). * **Emulation and passthrough**: as noted in §2, both are implementations of the same interface; a passthrough deployment validates the guest stack and narrows the emulation's responsibility to the control plane. diff --git a/wiki/GPU_SBOM.md b/wiki/GPU_SBOM.md index a277802..f7df955 100644 --- a/wiki/GPU_SBOM.md +++ b/wiki/GPU_SBOM.md @@ -1,264 +1,18 @@ -::: {#mw-page-base .noprint} -::: - -::: {#mw-head-base .noprint} -::: - -::: {#content .mw-body role="main"} -[]{#top} - -::: {#siteNotice} -::: - -::: mw-indicators -::: - -# GPU Software Bill Of Materials (SBOM) {#firstHeading .firstHeading} - -> **Imported 2023 material — superseded.** This page is an archived copy of the -> previous project wiki (circa 2023) and is kept for historical reference. -> Current documentation: -> [`../docs/03-architecture/`](../docs/03-architecture/) and -> [`../docs/09-reference/`](../docs/09-reference/). - -::: {#bodyContent .vector-body} -::: {#siteSub .noprint} -From Open-IOV -::: - -::: {#contentSub} -::: {.mw-revision .warningbox} -::: {#mw-revision-info} -Revision as of 14:58, 13 June 2023 by -[Arthur](./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html "User:Arthur (page does not exist)"){.new -.mw-userlink} -[([talk](./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html "User talk:Arthur (page does not exist)"){.new -.mw-usertoollinks-talk} \| -[contribs](index.php/Special:Contributions/Arthur.html "Special:Contributions/Arthur"){.mw-usertoollinks-contribs})]{.mw-usertoollinks} -[(Updated Nvidia VGX vGPU version to 15.2 in GPU SBOM.)]{.comment} -::: - -::: {#mw-revision-nav} -([diff](https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=prev&oldid=23786 "GPU Software Bill Of Materials (SBOM)")) -[← Older -revision](https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&direction=prev&oldid=23786 "GPU Software Bill Of Materials (SBOM)") -\| Latest revision (diff) \| Newer revision → (diff) -::: -::: -::: - -::: {#contentSub2} -::: - -::: {#jump-to-nav} -::: - -[Jump to -navigation](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html#mw-head){.mw-jump-link} -[Jump to -search](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html#searchInput){.mw-jump-link} - -::: {#mw-content-text .mw-body-content .mw-content-ltr lang="en" dir="ltr"} -::: mw-parser-output -This page will keep a running list of components used to achieve GPU -Virtualization. - -> An absence of critical technical documentation has historically slowed -> growth and adoption of developer ecosystems for GPU virtualization. -> -> This -> [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/){.external -> .text rel="nofollow"} licensed content can either be used with -> attribution, or used as inspiration for new documentation, created by -> GPU vendors for public commercial distribution as developer -> documentation. -> -> Where possible, this documentation will clearly label dates and -> versions of observed-but-not-guaranteed behaviour vs. -> vendor-documented stable interfaces/behaviour with guarantees of -> forward or backward compatibility. - - ------------- ----------------------------------------------------------------------------------------------------------------------------------------------- ------------- ----------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- ----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Vendor Component Description Version OSS or Blob Filesize Vendor Docs Release Date Interfaces / APIs Notes - Microsoft Indirect Display Driver (IDD) Driver [OSS](https://github.com/Microsoft/Windows-driver-samples/tree/main/video/IndirectDisplay){.external .text rel="nofollow"} [Indirect Display Driver Overview](https://learn.microsoft.com/en-us/windows-hardware/drivers/display/indirect-display-driver-model-overview){.external .text rel="nofollow"} [UMDF](https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf){.external .text rel="nofollow"}, [KMDF](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/){.external .text rel="nofollow"} The Indirect Display Driver (IDD) enables GPUs to render graphics at arbitrary resolutions without a physical display connected on Windows OS systems. - RedHat vfio_pci Driver 6.2-rc1 [OSS](https://github.com/torvalds/linux/tree/master/drivers/vfio/pci){.external .text rel="nofollow"} in-kernel [RedHat](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/virtualization/chap-virtualization-pci_passthrough){.external .text rel="nofollow"}, [kernel.org](https://docs.kernel.org/driver-api/vfio.html){.external .text rel="nofollow"} 2022.12.15 [irqfd](index.php/Virtual_I/O_Internals.html#Instruction_Execution){.external .text rel="nofollow"}, [ioeventfd](index.php/Virtual_I/O_Internals.html#Instruction_Execution){.external .text rel="nofollow"}, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"} Reference VFIO Stub driver used for discrete assignment of IO, and assignment of some SR-IOV-backed vGPU devices into virtual machines. This driver is commonly replaced with a vendor built VFIO interface with differing memory management and/or page pinning mechanisms which are specific to the vGPU software internals. - Mediated Core (mdev.ko) Driver 6.2-rc1 OSS 0.044 MB [kernel.org](https://docs.kernel.org/driver-api/vfio-mediated-device.html){.external .text rel="nofollow"} 2016.xx.xx [irqfd](index.php/Virtual_I/O_Internals.html#Instruction_Execution){.external .text rel="nofollow"}, [ioeventfd](index.php/Virtual_I/O_Internals.html#Instruction_Execution){.external .text rel="nofollow"}, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"}, [Type 1 IOMMU](index.php/Virtual_I/O_Internals.html#Mediated_DMA_Translations){.external .text rel="nofollow"} The Mediated Core driver provides a common interface for mediated device management that can be used by drivers of different devices. It is an IOMMU/device-agnostic framework for exposing direct device access to user space in a secure, IOMMU-protected environment (based on VFIO). - guest communication daemon Daemon 0.1.0 [OSS](https://){.external .text rel="nofollow"} [](){.external .text rel="nofollow"} 2023.02.08 [Virtio-Serial](https://fedoraproject.org/wiki/Features/VirtioSerial){.external .text rel="nofollow"}, CLI Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. - mdev management CLI 1.0 [OSS](https://){.external .text rel="nofollow"} 0.084 MB [](){.external .text rel="nofollow"} 2023.01.06 CLI, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"}, [RMAPI](index.php/GPU_Driver_Internals.html#RM_API){.external .text rel="nofollow"}, [Mediated Core](index.php/Virtual_I/O_Internals.html#Mediated_Core){.external .text rel="nofollow"} Configures the the [nvidia-vgpu-mgr](index.php/GPU_Driver_Internals.html#nvidia-vgpu-mgr){.external .text rel="nofollow"} process. - Intel i915 SR-IOV Driver [5.15](https://github.com/intel/linux-intel-lts/tree/5.15/ADL-linux-ER){.external .text rel="nofollow"} OSS in-kernel Intel\'s open source GPU driver for [GuC](index.php/GPU_Firmware.html#GuC){.external .text rel="nofollow"}-equipped graphics accelerators. - [GuC](index.php/GPU_Firmware.html#GuC){.external .text rel="nofollow"} μOS Firmware Blob IOMMU Interrupts, Power Management Interrupts, [GTT](index.php/GPU_Driver_Internals.html#GTT_(Graphics_Translation_Table)){.external .text rel="nofollow"} Handles scheduling, and power management. - HuC [GTT](index.php/GPU_Driver_Internals.html#GTT_(Graphics_Translation_Table)){.external .text rel="nofollow"} Handles video encoding/decoding. - [Display Virtualization for Windows OS](index.php/GPU_Driver_Internals.html#Display_Surface_Virtualization_2){.external .text rel="nofollow"} Driver [791](https://github.com/intel/Display-Virtualization-for-Windows-OS/releases/){.external .text rel="nofollow"} [OSS](https://github.com/intel/Display-Virtualization-for-Windows-OS){.external .text rel="nofollow"} [github.com/intel/Display-Virtualization-for-Windows-OS/blob/main/Readme.txt](https://github.com/intel/Display-Virtualization-for-Windows-OS/blob/main/Readme.txt){.external .text rel="nofollow"} [udmabuf](https://github.com/ikwzm/udmabuf){.external .text rel="nofollow"}, [UMDF](https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf){.external .text rel="nofollow"}, [KMDF](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/){.external .text rel="nofollow"} Intel\'s \'Display Virtualization for Windows OS\' provides a virtual pixel surface used for hardware graphics rendering using Microsoft\'s open source \'Indirect Display Driver (IDD)\'. Display virtualization for Windows OS makes use of display memory sharing primitives provided in-driver by the i915 host. - Nvidia [OpenRM](index.php/OpenRM.html "OpenRM") Driver 525.85.12 OSS [github.com/NVIDIA/open-gpu-kernel-modules/blob/main/README.md](https://github.com/NVIDIA/open-gpu-kernel-modules/blob/main/README.md){.external .text rel="nofollow"} 2023.01.31 Nvidia\'s open source GPU driver for [GSP](index.php/GPU_Firmware.html#GSP){.external .text rel="nofollow"}-equipped graphics accelerators. - [GSP](index.php/GPU_Firmware.html#GSP){.external .text rel="nofollow"} RM (uproc) Firmware Blob 2023.01.31 RPC Embedded firmware based on [LibOS](https://lwn.net/Articles/637658/){.external .text rel="nofollow"} containing the [RM Core](index.php/GPU_Driver_Internals.html#RM_Core){.external .text rel="nofollow"}. - Falcon/NvRISC (uproc) FBIF (Frame Buffer Interface) / GMMU Embedded firmware which handles many aspects of the device including configuring the GPU\'s GMMU controller. - nvidia-vgpud Daemon [v15.2](https://docs.nvidia.com/grid/15.0/whats-new-vgpu/index.html){.external .text rel="nofollow"} Blob 0.108 MB [docs.nvidia.com/grid](https://docs.nvidia.com/grid/index.html){.external .text rel="nofollow"} 2023.01.xx CLI, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"}, [RMAPI](index.php/GPU_Driver_Internals.html#RM_API){.external .text rel="nofollow"}, [Mediated Core](index.php/Virtual_I/O_Internals.html#Mediated_Core){.external .text rel="nofollow"} Configures the the [nvidia-vgpu-mgr](index.php/GPU_Driver_Internals.html#nvidia-vgpu-mgr){.external .text rel="nofollow"} process. - nvidia-vgpu-mgr 0.132 MB 2023.01.xx [vmiop](index.php/GPU_Driver_Internals.html#vmiop){.external .text rel="nofollow"}, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"}, [RMAPI](index.php/GPU_Driver_Internals.html#RM_API){.external .text rel="nofollow"}, [vRPC](index.php/GPU_Driver_Internals.html#Guest_kernel_(nvidia.ko)){.external .text rel="nofollow"}, pRPC, [Mediated Core](index.php/Virtual_I/O_Internals.html#Mediated_Core){.external .text rel="nofollow"} Handles IO to and from guest RM, host RM, and hardware. - libnvidia-vgpu.so Library 3.1 MB 2023.01.xx [vmiop](index.php/GPU_Driver_Internals.html#vmiop){.external .text rel="nofollow"}, [RMAPI](index.php/GPU_Driver_Internals.html#RM_API){.external .text rel="nofollow"}, [Mediated Core](index.php/Virtual_I/O_Internals.html#Mediated_Core){.external .text rel="nofollow"} Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with [nvidia-vgpu-mgr](index.php/GPU_Driver_Internals.html#nvidia-vgpu-mgr){.external .text rel="nofollow"}. - nvidia-vgpu-vfio.ko Driver 0.108 MB 2023.01.xx [Type 1 IOMMU](index.php/Virtual_I/O_Internals.html#Mediated_DMA_Translations){.external .text rel="nofollow"}, [irqfd, ioeventfd](index.php/Virtual_I/O_Internals.html#Instruction_Execution){.external .text rel="nofollow"}, [IOCTL](https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst){.external .text rel="nofollow"}, [Mediated Core](index.php/Virtual_I/O_Internals.html#Mediated_Core){.external .text rel="nofollow"} Handles incremental memory mapping (non-page pinning per the standard vfio-pci driver). - ------------- ----------------------------------------------------------------------------------------------------------------------------------------------- ------------- ----------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------- ----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - - : Component Table - -## [More Information]{#More_Information .mw-headline} - -1. [Nvidia RISC-V - Story](https://riscv.org/wp-content/uploads/2016/07/Tue1100_Nvidia_RISCV_Story_V2.pdf){.external - .text rel="nofollow"} -2. [](){.external .text - rel="nofollow"} -3. [Intel Graphics Programmer\'s Reference Manuals - (PRM)](https://01.org/linuxgraphics/documentation/hardware-specification-prms){.external - .text rel="nofollow"} -4. [i915: Hardware Contexts (and some bits about - batchbuffers)](https://bwidawsk.net/blog/2013/1/i915-hardware-contexts-and-some-bits-about-batchbuffers/){.external - .text rel="nofollow"} -5. [i915: The Global GTT Part - 1](https://bwidawsk.net/blog/2014/6/the-global-gtt-part-1/){.external - .text rel="nofollow"} -6. [i915: Aliasing PPGTT Part - 2](https://bwidawsk.net/blog/2014/6/aliasing-ppgtt-part-2/){.external - .text rel="nofollow"} -7. [i915: True PPGTT Part - 3](https://bwidawsk.net/blog/2014/7/true-ppgtt-part-3/){.external - .text rel="nofollow"} -8. [i915: Future PPGTT Part 4 (Dynamic page table allocations, 64 bit - address space, GPU \"mirroring\", and yeah, something about relocs - too)](https://bwidawsk.net/blog/2014/7/future-ppgtt-part-4-dynamic-page-table-allocations-64-bit-address-space-gpu-mirroring-and-yeah-something-about-relocs-too/){.external - .text rel="nofollow"} -9. [i915: Security of the Intel Graphics Stack - Part 1 - - Introduction](https://igor-blue.github.io/2021/02/10/graphics-part1.html){.external - .text rel="nofollow"} -10. [i915: Security of the Intel Graphics Stack - Part 2 - FW \<-\> - GuC](https://igor-blue.github.io/2021/02/24/graphics-part2.html){.external - .text rel="nofollow"} -11. [i915: An Introduction to Intel GVT-g (with new - architecture)](https://01.org/sites/default/files/documentation/an_introduction_to_intel_gvt-g_for_external.pdf){.external - .text rel="nofollow"} -::: - -::: printfooter -Retrieved from -\"[https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials\_(SBOM)&oldid=23786](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html){dir="ltr"}\" -::: -::: - -::: {#catlinks .catlinks .catlinks-allhidden mw="interface"} -::: -::: -::: - -::: {#mw-navigation} -## Navigation menu - -::: {#mw-head} -### Personal tools {#p-personal-label .vector-menu-heading} - -::: vector-menu-content -- [[Log - in](https://open-iov.org/index.php?title=Special:UserLogin&returnto=GPU+Software+Bill+Of+Materials+%28SBOM%29&returntoquery=oldid%3D23786 "You are encouraged to log in; however, it is not mandatory [o]"){accesskey="o"}]{#pt-login} -::: - -::: {#left-navigation} -### Namespaces {#p-namespaces-label .vector-menu-heading} - -::: vector-menu-content -- [[Page](index.php/GPU_Software_Bill_Of_Materials_(SBOM).html "View the content page [c]"){accesskey="c"}]{#ca-nstab-main} -- [[Discussion](https://open-iov.org/index.php?title=Talk:GPU_Software_Bill_Of_Materials_(SBOM)&action=edit&redlink=1 "Discussion about the content page (page does not exist) [t]"){rel="discussion" - accesskey="t"}]{#ca-talk} -::: - -### Variants [expanded]{.vector-menu-checkbox-expanded} [collapsed]{.vector-menu-checkbox-collapsed} {#p-variants-label .vector-menu-heading} - -::: vector-menu-content -::: -::: - -::: {#right-navigation} -### Views {#p-views-label .vector-menu-heading} - -::: vector-menu-content -- [[Read](index.php/GPU_Software_Bill_Of_Materials_(SBOM).html)]{#ca-view} -- [[View - source](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&action=edit.html "This page is protected. - You can view its source [e]"){accesskey="e"}]{#ca-viewsource} -- [[View - history](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&action=history.html "Past revisions of this page [h]"){accesskey="h"}]{#ca-history} -::: - -### More [expanded]{.vector-menu-checkbox-expanded} [collapsed]{.vector-menu-checkbox-collapsed} {#p-cactions-label .vector-menu-heading} - -::: vector-menu-content -::: - -::: {#p-search .vector-search-box role="search"} -
- -### Search - -::: {#simpleSearch search-loc="header-navigation"} -::: - -
-::: -::: -::: - -::: {#mw-panel} -::: {#p-logo role="banner"} -[](images/archive/c/c3/20221214193624!I915_Scheduling_Events_and_Requests.png.html "Visit the main page"){.mw-wiki-logo} -::: - -### Navigation {#p-navigation-label .vector-menu-heading} - -::: vector-menu-content -- [[Main - page](images/archive/c/c3/20221214193624!I915_Scheduling_Events_and_Requests.png.html "Visit the main page [z]"){accesskey="z"}]{#n-mainpage-description} -- [[Recent - changes](https://open-iov.org/index.php/Special:RecentChanges "A list of recent changes in the wiki [r]"){accesskey="r"}]{#n-recentchanges} -- [[Random - page](index.php/Special:Random.html "Load a random page [x]"){accesskey="x"}]{#n-randompage} -- [[Help about - MediaWiki](https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents)]{#n-help-mediawiki} -::: - -### Tools {#p-tb-label .vector-menu-heading} - -::: vector-menu-content -- [[What links - here](index.php/Special:WhatLinksHere/GPU_Software_Bill_Of_Materials_(SBOM).html "A list of all wiki pages that link here [j]"){accesskey="j"}]{#t-whatlinkshere} -- [[Related - changes](https://open-iov.org/index.php/Special:RecentChangesLinked/GPU_Software_Bill_Of_Materials_(SBOM) "Recent changes in pages linked from this page [k]"){rel="nofollow" - accesskey="k"}]{#t-recentchangeslinked} -- [[Special - pages](index.php/Special:SpecialPages.html "A list of all special pages [q]"){accesskey="q"}]{#t-specialpages} -- [[Printable - version](javascript:print(); "Printable version of this page [p]"){rel="alternate" - accesskey="p"}]{#t-print} -- [[Permanent - link](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html "Permanent link to this revision of the page")]{#t-permalink} -- [[Page - information](index.php%3Ftitle=GPU_Software_Bill_Of_Materials_(SBOM)&action=info.html "More information about this page")]{#t-info} -::: -::: -::: - -- [This page was last edited on 13 June 2023, at - 14:58.]{#footer-info-lastmod} - -```{=html} - -``` -- [[Privacy - policy](https://open-iov.org/index.php/Open-IOV:Privacy_policy "Open-IOV:Privacy policy")]{#footer-places-privacy} -- [[About - Open-IOV](index.php/Open-IOV:About.html "Open-IOV:About")]{#footer-places-about} -- [[Disclaimers](https://open-iov.org/index.php/Open-IOV:General_disclaimer "Open-IOV:General disclaimer")]{#footer-places-disclaimer} - -```{=html} - -``` -- [[![Powered by - MediaWiki](resources/assets/poweredby_mediawiki_88x31.png){srcset="resources/assets/poweredby_mediawiki_132x47.png 1.5x, resources/assets/poweredby_mediawiki_176x62.png 2x" - width="88" height="31" - loading="lazy"}](https://www.mediawiki.org/)]{#footer-poweredbyico} +# GPU Software Bill Of Materials (SBOM) + +> **This page is superseded.** The previous content was an imported 2023 wiki +> survey of third-party GPU-virtualization components. The complete, +> repository-scoped SBOM now lives at: + +* **[`SBOM.md`](../SBOM.md)** — human-readable SBOM: primary component, + first-party components, bundled third-party components with SHA-256 hashes, + archived-documentation provenance, external build/run dependencies, + dependency graph, license/redistribution terms, and the NTIA + minimum-elements checklist. +* **[`sbom/open-iov-0.1.0.cdx.json`](../sbom/open-iov-0.1.0.cdx.json)** — + machine-readable CycloneDX 1.6 SBOM + (serial `urn:uuid:e626c5a1-9697-4546-bb2b-5b4feb58e922`). + +The SBOM covers every file tracked in this repository plus the external +components required to build, run and support it. NVIDIA drivers, GSP +firmware and CUDA packages are documented but **not distributed** here. diff --git a/wiki/open-iov.org/index.php/GPU_Software_Bill_Of_Materials_(SBOM).html b/wiki/open-iov.org/index.php/GPU_Software_Bill_Of_Materials_(SBOM).html index ae9ec87..e2e8423 100644 --- a/wiki/open-iov.org/index.php/GPU_Software_Bill_Of_Materials_(SBOM).html +++ b/wiki/open-iov.org/index.php/GPU_Software_Bill_Of_Materials_(SBOM).html @@ -124,13 +124,13 @@ Where possible, this documentation will clearly label dates and versions of obse -guest communication daemon + Daemon 0.1.0 -OSS +OSS @@ -143,11 +143,11 @@ Where possible, this documentation will clearly label dates and versions of obse Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. -mdev management CLI + 1.0 -OSS +OSS 0.084 MB diff --git a/wiki/open-iov.org/index.php/LIME_Is_Mediated_Emulation.html b/wiki/open-iov.org/index.php/LIME_Is_Mediated_Emulation.html index bc7eb15..dbbd7f5 100644 --- a/wiki/open-iov.org/index.php/LIME_Is_Mediated_Emulation.html +++ b/wiki/open-iov.org/index.php/LIME_Is_Mediated_Emulation.html @@ -56,7 +56,7 @@

Design Goals

LIME aims to provide similar functionality to WINE Is Not Emulation, Valve's Proton / DXVK but with the use of graphics virtualization (vGPU/SR-IOV on consumer GPUs), a shared filesystem between host/guest, and KVM Frame Relay (high performance graphics buffer sharing via Inter-VM Shared Memory Device / IVSHMEM).

Compared to WINE, and Proton the benefits of this approach are that Win64 binaries execute without the incompatibilities introduced in new games taking advantage of the latest version of DirectX, or when changes are introduced to the latest version of the Win64 ABI. -

This functionality is enabled via the use of GPU Virtual Machine (for consumer GPU Virtualization), VirtIO-FS (for host <-> guest filesystem sharing), Looking Glass (for host <-> guest shared frame buffer), and (for orchestration). +

This functionality is enabled via the use of GPU Virtual Machine (for consumer GPU Virtualization), VirtIO-FS (for host <-> guest filesystem sharing), Looking Glass (for host <-> guest shared frame buffer), and (for orchestration).

Use-Cases

Win64 Subsystem

diff --git a/wiki/open-iov.org/index.php/Mdev-GPU.html b/wiki/open-iov.org/index.php/Mdev-GPU.html index de97b4e..c26141e 100644 --- a/wiki/open-iov.org/index.php/Mdev-GPU.html +++ b/wiki/open-iov.org/index.php/Mdev-GPU.html @@ -35,7 +35,7 @@

This page makes use of terms that are defined in the Open-IOV Glossary. If you're curious what a given term means you can check there for a definition.


This page will be used to document the Mdev-GPU API as well as provide an overview of the internals of the Mdev-GPU package. -

Mdev-GPU's source code can be found here. +

Mdev-GPU's source code can be found here.

Module docs can be found here.

An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization.

This CC-BY-4.0 licensed content can either be used with attribution, or used as inspiration for new documentation, created by GPU vendors for public commercial distribution as developer documentation. @@ -84,17 +84,17 @@ Where possible, this documentation will clearly label dates and versions of obse

Compilation

Compiling Mdev-GPU from source is very simple however it can take a long time to complete (10 minutes for existing sources). -

If you'd like to compile Mdev-GPU yourself you can do so by cloning the repo and running the following two commands from within the repository directory: +

If you'd like to compile Mdev-GPU yourself you can do so by cloning the repo and running the following two commands from within the repository directory:

curl -sSL https://get.haskellstack.org/ | sh

stack install

These commands will generate all binaries provided by Mdev-GPU under the path ~/.local/bin/. -

If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the Releases section of the repository on GitHub. +

If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the Releases section of the repository on GitHub.

Installation

-

The binaries compiled on your local machine by Stack in the ~/.local/bin/ path or downloaded from Releases on GitHub should be copied to /usr/bin/. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package. +

The binaries compiled on your local machine by Stack in the ~/.local/bin/ path or downloaded from Releases on GitHub should be copied to /usr/bin/. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package.

Mdev-GPU Configuration

-

The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the /etc/ folder. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path /etc/ on the user's computer. +

The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the /etc/ folder. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path /etc/ on the user's computer.

Systemd

GVM/Mdev-GPU exposes several of it's functions as Systemd services. @@ -102,7 +102,7 @@ Where possible, this documentation will clearly label dates and versions of obse

  • mdev-post.service
mdev-post.service
-

As the name would suggest mdev-post.service posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at /etc/gvm/mdev-gpu/generate-vgpu-types.yaml. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service ExecStart= line to specify an alternative path. +

As the name would suggest mdev-post.service posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at /etc/gvm/mdev-gpu/generate-vgpu-types.yaml. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service ExecStart= line to specify an alternative path.

Mdev-CLI

Configuration for Mdev-GPU can be found in the path /etc/gvm/mdev-gpu/. This path will by default contain several vendor-specific folders which may include configuration examples for various devices/architectures as well as the file generate-vgpu-types.yaml which you can configure to specify your desired Virtual GPU (vGPU) / VFIO-Mdev topologies as they are presented in the sysfsdev mdev_bus path and as seen by tools such as mdevctl. Once you have configured the available types your liking you can refresh the supported types registered with the Mediated Core by rebooting your machine or reloading the vendor driver kernel module then restarting mdev-post.service or by invoking mdev-cli. diff --git a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=edit.html b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=edit.html index 17806b8..393499f 100644 --- a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=edit.html +++ b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=edit.html @@ -91,19 +91,19 @@ Where possible, this documentation will clearly label dates and versions of obse |The Mediated Core driver provides a common interface for mediated device management that can be used by drivers of different devices. It is an IOMMU/device-agnostic framework for exposing direct device access to user space in a secure, IOMMU-protected environment (based on VFIO). |- | rowspan="2" | -|guest communication daemon +| | rowspan="2" |Daemon |0.1.0 -|[https:// OSS] +|[https://github.com/Open-IOV/ OSS] | |[ ] |2023.02.08 |[https://fedoraproject.org/wiki/Features/VirtioSerial Virtio-Serial], CLI |Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. |- -|mdev management CLI +| |1.0 -|[https:// OSS] +|[https://github.com/Open-IOV/ OSS] |0.084 MB |[ ] |2023.01.06 diff --git a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=history.html b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=history.html index 1a36f7b..918c647 100644 --- a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=history.html +++ b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&action=history.html @@ -91,7 +91,7 @@ Legend: (cur) = difference with latest revision, (prev)

  • curprev 23:53, 9 December 2022‎ Arthur talk contribs‎ 2,588 bytes +1,574‎ Tag: Visual edit
  • curprev 23:41, 9 December 2022‎ Arthur talk contribs‎ 1,014 bytes +35‎ Tag: Visual edit
  • curprev 23:40, 9 December 2022‎ Arthur talk contribs‎ 979 bytes +41‎ Tag: Visual edit
  • -
  • curprev 23:09, 9 December 2022‎ Arthur talk contribs‎ 938 bytes +938‎ Created page with "This page will keep a running list of components used to achieve GPU Virtualization. {| class="wikitable" |+Component Table !Vendor !Component !Description !Version !OSS or Blob !Release Date !Notes |- | |mdev management CLI |Daemon |1.0 |OSS | | |- | |mdev management daemon |Daemon |1.0 |OSS | | |- |Intel |GuC μOS |Firmware |Unknown |Blob | | |- |Intel |HuC |Firmware |Unknown |Blob | | |- |Intel |i915 (with SR-IOV patches) |Driver |5.10 |OSS | | |- |Nvidia |OpenRM |Driver |..." Tag: Visual edit
  • +
  • curprev 23:09, 9 December 2022‎ Arthur talk contribs‎ 938 bytes +938‎ Created page with "This page will keep a running list of components used to achieve GPU Virtualization. {| class="wikitable" |+Component Table !Vendor !Component !Description !Version !OSS or Blob !Release Date !Notes |- | | |Daemon |1.0 |OSS | | |- | |mdev management daemon |Daemon |1.0 |OSS | | |- |Intel |GuC μOS |Firmware |Unknown |Blob | | |- |Intel |HuC |Firmware |Unknown |Blob | | |- |Intel |i915 (with SR-IOV patches) |Driver |5.10 |OSS | | |- |Nvidia |OpenRM |Driver |..." Tag: Visual edit
  • diff --git a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html index 413b63a..7f70546 100644 --- a/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html +++ b/wiki/open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=23786.html @@ -125,13 +125,13 @@ Where possible, this documentation will clearly label dates and versions of obse -guest communication daemon + Daemon 0.1.0 -OSS +OSS @@ -144,11 +144,11 @@ Where possible, this documentation will clearly label dates and versions of obse Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. -mdev management CLI + 1.0 -OSS +OSS 0.084 MB diff --git a/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=edit.html b/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=edit.html index 06240c3..49f731c 100644 --- a/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=edit.html +++ b/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=edit.html @@ -47,7 +47,7 @@ LIME aims to provide similar functionality to [https://winehq.org/ WINE Is Not E Compared to WINE, and Proton the benefits of this approach are that Win64 binaries execute without the incompatibilities introduced in new games taking advantage of the latest version of [https://docs.microsoft.com/en-us/windows/win32/directx DirectX], or when changes are introduced to the latest version of the Win64 [https://infogalactic.com/info/Application_binary_interface ABI]. -This functionality is enabled via the use of [ GPU Virtual Machine] (for consumer GPU Virtualization), [https://virtio-fs.gitlab.io/design.html VirtIO-FS] (for host <-> guest filesystem sharing), [https://looking-glass.io/ Looking Glass] (for host <-> guest shared frame buffer), and [https://github.com///tree/master// ] (for orchestration). +This functionality is enabled via the use of [ GPU Virtual Machine] (for consumer GPU Virtualization), [https://virtio-fs.gitlab.io/design.html VirtIO-FS] (for host <-> guest filesystem sharing), [https://looking-glass.io/ Looking Glass] (for host <-> guest shared frame buffer), and [ ] (for orchestration). == Use-Cases == diff --git a/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&oldid=786.html b/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&oldid=786.html index 213e0e9..70628b0 100644 --- a/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&oldid=786.html +++ b/wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&oldid=786.html @@ -57,7 +57,7 @@

    Design Goals

    LIME aims to provide similar functionality to WINE Is Not Emulation, Valve's Proton / DXVK but with the use of graphics virtualization (vGPU/SR-IOV on consumer GPUs), a shared filesystem between host/guest, and KVM Frame Relay (high performance graphics buffer sharing via Inter-VM Shared Memory Device / IVSHMEM).

    Compared to WINE, and Proton the benefits of this approach are that Win64 binaries execute without the incompatibilities introduced in new games taking advantage of the latest version of DirectX, or when changes are introduced to the latest version of the Win64 ABI. -

    This functionality is enabled via the use of GPU Virtual Machine (for consumer GPU Virtualization), VirtIO-FS (for host <-> guest filesystem sharing), Looking Glass (for host <-> guest shared frame buffer), and (for orchestration). +

    This functionality is enabled via the use of GPU Virtual Machine (for consumer GPU Virtualization), VirtIO-FS (for host <-> guest filesystem sharing), Looking Glass (for host <-> guest shared frame buffer), and (for orchestration).

    Use-Cases

    Win64 Subsystem

    diff --git a/wiki/open-iov.org/index.php?title=Mdev-GPU&action=edit.html b/wiki/open-iov.org/index.php?title=Mdev-GPU&action=edit.html index 1e1f677..bbdde77 100644 --- a/wiki/open-iov.org/index.php?title=Mdev-GPU&action=edit.html +++ b/wiki/open-iov.org/index.php?title=Mdev-GPU&action=edit.html @@ -46,7 +46,7 @@ This page will be used to document the '''Mdev-GPU API''' as well as provide an overview of the internals of the Mdev-GPU package. -Mdev-GPU's source code can be found [https://github.com//Mdev-GPU here]. +Mdev-GPU's source code can be found [ here]. Module docs can be found [ here].<blockquote>An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization. @@ -57,7 +57,7 @@ Where possible, this documentation will clearly label dates and versions of obse === Compilation === Compiling Mdev-GPU from source is very simple however it can take a long time to complete (10 minutes for existing sources). -If you'd like to compile Mdev-GPU yourself you can do so by cloning [https://github.com//Mdev-GPU the repo] and running the following two commands from within the repository directory: +If you'd like to compile Mdev-GPU yourself you can do so by cloning [ the repo] and running the following two commands from within the repository directory: <code>curl -sSL <nowiki>https://get.haskellstack.org/</nowiki> | sh</code> @@ -65,13 +65,13 @@ If you'd like to compile Mdev-GPU yourself you can do so by cloning [https://git These commands will generate all binaries provided by Mdev-GPU under the path <code>~/.local/bin/</code>. -If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the [https://github.com//Mdev-GPU/releases/tag/0.1.0.0 Releases section of the repository on GitHub]. +If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the [ Releases section of the repository on GitHub]. === Installation === -The binaries compiled on your local machine by Stack in the <code>~/.local/bin/</code> path or downloaded from [https://github.com//Mdev-GPU/releases Releases on GitHub] should be copied to <code>/usr/bin/</code>. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package. +The binaries compiled on your local machine by Stack in the <code>~/.local/bin/</code> path or downloaded from [ Releases on GitHub] should be copied to <code>/usr/bin/</code>. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package. === Mdev-GPU Configuration === -The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the [https://github.com//Mdev-GPU/tree/master/etc /etc/ folder]. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path <code>/etc/</code> on the user's computer. +The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the [ /etc/ folder]. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path <code>/etc/</code> on the user's computer. ==== Systemd ==== GVM/Mdev-GPU exposes several of it's functions as Systemd services. @@ -81,7 +81,7 @@ As of the 0.1.0.0 release the following Systemd services are available: * '''mdev-post.service''' ===== mdev-post.service ===== -As the name would suggest '''[https://github.com//Mdev-GPU/blob/master/etc/systemd/system/mdev-post.service mdev-post.service]''' posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at '''<code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code>'''. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service [https://github.com//Mdev-GPU/blob/9993fd0781ddddfcca2cb9bee6455ea2c024cc23/etc/systemd/system/mdev-post.service#L10 ExecStart= line] to specify an alternative path. +As the name would suggest '''[ mdev-post.service]''' posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at '''<code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code>'''. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service [ ExecStart= line] to specify an alternative path. ==== Mdev-CLI ==== Configuration for Mdev-GPU can be found in the path '''<code>/etc/gvm/mdev-gpu/</code>'''. This path will by default contain several vendor-specific folders which may include configuration examples for various devices/architectures as well as the file <code>'''generate-vgpu-types.yaml'''</code> which you can configure to specify your desired Virtual GPU (vGPU) / VFIO-Mdev topologies as they are presented in the sysfsdev mdev_bus path and as seen by tools such as [https://github.com/mdevctl/mdevctl mdevctl]. Once you have configured the available types your liking you can refresh the supported types registered with the [https://open-iov.org/index.php/Virtual_IO_Internals#Mediated_Core Mediated Core] by rebooting your machine or reloading the vendor driver kernel module then restarting '''mdev-post.service''' or by invoking '''mdev-cli'''. diff --git a/wiki/open-iov.org/index.php?title=Mdev-GPU&action=history.html b/wiki/open-iov.org/index.php?title=Mdev-GPU&action=history.html index 08797b2..aab58b8 100644 --- a/wiki/open-iov.org/index.php?title=Mdev-GPU&action=history.html +++ b/wiki/open-iov.org/index.php?title=Mdev-GPU&action=history.html @@ -70,7 +70,7 @@ Legend: (cur) = difference with latest revision, (prev)
  • curprev 18:45, 2 August 2022‎ Arthur talk contribs‎ 1,803 bytes −12‎ Tag: Visual edit
  • curprev 18:45, 2 August 2022‎ Arthur talk contribs‎ 1,815 bytes +652‎ →‎Installation Tag: Visual edit
  • curprev 17:13, 2 August 2022‎ Arthur talk contribs‎ 1,163 bytes +807‎ Tag: Visual edit
  • -
  • curprev 16:01, 25 July 2022‎ Arthur talk contribs‎ 356 bytes +356‎ Created page with "This page will be used to document the internals of the Mdev-GPU package. Currently Mdev-GPU supports registering mediated callbacks with the Mediated Core and the creation of arbitrary mdev devices. Mdev-GPU's source code can be found [https://github.com//Mdev-GPU here]. Module docs can be found [ here]." Tag: Visual edit
  • +
  • curprev 16:01, 25 July 2022‎ Arthur talk contribs‎ 356 bytes +356‎ Created page with "This page will be used to document the internals of the Mdev-GPU package. Currently Mdev-GPU supports registering mediated callbacks with the Mediated Core and the creation of arbitrary mdev devices. Mdev-GPU's source code can be found [ here]. Module docs can be found [ here]." Tag: Visual edit
  • diff --git a/wiki/open-iov.org/index.php?title=Mdev-GPU&oldid=23740.html b/wiki/open-iov.org/index.php?title=Mdev-GPU&oldid=23740.html index 512ff16..6d9b197 100644 --- a/wiki/open-iov.org/index.php?title=Mdev-GPU&oldid=23740.html +++ b/wiki/open-iov.org/index.php?title=Mdev-GPU&oldid=23740.html @@ -36,7 +36,7 @@

    This page makes use of terms that are defined in the Open-IOV Glossary. If you're curious what a given term means you can check there for a definition.


    This page will be used to document the Mdev-GPU API as well as provide an overview of the internals of the Mdev-GPU package. -

    Mdev-GPU's source code can be found here. +

    Mdev-GPU's source code can be found here.

    Module docs can be found here.

    An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization.

    This CC-BY-4.0 licensed content can either be used with attribution, or used as inspiration for new documentation, created by GPU vendors for public commercial distribution as developer documentation. @@ -85,17 +85,17 @@ Where possible, this documentation will clearly label dates and versions of obse

    Compilation

    Compiling Mdev-GPU from source is very simple however it can take a long time to complete (10 minutes for existing sources). -

    If you'd like to compile Mdev-GPU yourself you can do so by cloning the repo and running the following two commands from within the repository directory: +

    If you'd like to compile Mdev-GPU yourself you can do so by cloning the repo and running the following two commands from within the repository directory:

    curl -sSL https://get.haskellstack.org/ | sh

    stack install

    These commands will generate all binaries provided by Mdev-GPU under the path ~/.local/bin/. -

    If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the Releases section of the repository on GitHub. +

    If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the Releases section of the repository on GitHub.

    Installation

    -

    The binaries compiled on your local machine by Stack in the ~/.local/bin/ path or downloaded from Releases on GitHub should be copied to /usr/bin/. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package. +

    The binaries compiled on your local machine by Stack in the ~/.local/bin/ path or downloaded from Releases on GitHub should be copied to /usr/bin/. This can be accomplished both via install script (currently testing in ) or via management layer-agnostic package.

    Mdev-GPU Configuration

    -

    The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the /etc/ folder. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path /etc/ on the user's computer. +

    The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the /etc/ folder. On installation the directories & files contained in the repository's /etc/ folder should be copied to the absolute path /etc/ on the user's computer.

    Systemd

    GVM/Mdev-GPU exposes several of it's functions as Systemd services. @@ -103,7 +103,7 @@ Where possible, this documentation will clearly label dates and versions of obse

    • mdev-post.service
    mdev-post.service
    -

    As the name would suggest mdev-post.service posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at /etc/gvm/mdev-gpu/generate-vgpu-types.yaml. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service ExecStart= line to specify an alternative path. +

    As the name would suggest mdev-post.service posts the GPU(s) in a state where they are ready to be virtualized. When the service is invoked the mdev-cli util registers Mdev callbacks and supported mediated device (Mdev) types with the Mediated Core according to the user's specified configuration at /etc/gvm/mdev-gpu/generate-vgpu-types.yaml. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service ExecStart= line to specify an alternative path.

    Mdev-CLI

    Configuration for Mdev-GPU can be found in the path /etc/gvm/mdev-gpu/. This path will by default contain several vendor-specific folders which may include configuration examples for various devices/architectures as well as the file generate-vgpu-types.yaml which you can configure to specify your desired Virtual GPU (vGPU) / VFIO-Mdev topologies as they are presented in the sysfsdev mdev_bus path and as seen by tools such as mdevctl. Once you have configured the available types your liking you can refresh the supported types registered with the Mediated Core by rebooting your machine or reloading the vendor driver kernel module then restarting mdev-post.service or by invoking mdev-cli. -- cgit v1.2.3