diff options
25 files changed, 944 insertions, 310 deletions
@@ -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 @@ -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. @@ -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** | <https://git.vgpu.io/open-iov.git> | +| **Scope** | All files tracked in the repository, plus the external components required to build, run and support it | +| **Distribution** | Firmware images, GPU drivers, hypervisors and guest OS images are **not distributed** in this repository (see §2 and §8) | + +--- + +## 1. Primary component + +**Open-IOV** is an open-source virtualization layer for NVIDIA GPUs. It lets an +unmodified NVIDIA guest driver run in a VM by emulating the GPU System +Processor (GSP) and its resource-manager firmware interface (GSP-RM) in a host +kernel module, and by arranging for guest work to execute on the physical GPU. + +* Supplier: The Open-IOV Project +* Version: `0.1.0` — defined by `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) | <https://github.com/cktan/tomlc99> | MIT | `userspace/extern/src/toml.c`, `userspace/extern/inc/toml.h` | `ca70a545ce442d878587bb2767de8c7e6219b43ba832fa87c4b8a8c4f4f8221f`, `0c56ba78add80e49073b12de039835718c29410669d7a526e65bc8212e1dc135` | +| cargs (argument parser) | <https://github.com/likle/cargs> | MIT | `userspace/extern/src/cargs.c`, `userspace/extern/inc/cargs.h` | `d6c88f89b1d948f4b221c54103f17f6575bd580fcaffb0de3dfbceb2dd6136ab`, `93d3e1cb40d6eb646b7f50051ee9ad3f664ffe21d103164f98e89e9775bb91cb` | +| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nv-hypervisor.h` | `733409c43ab65708bf5563b76e4dea9d1dfbe1d5cfa0d846fbba511a1186f932` | +| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nv-vgpu-vfio-interface.h` | `83908a89a7f6df2631d24bb2518bbb5643c4f1fb270300d20b76a04a0af735b6` | +| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nvstatus.h` | `e8267172a1f7a56420d612c6734b3554b9ff6a3d33fdda21b1371ff4ce4b8675` | +| NVIDIA vGPU/VFIO interface headers | NVIDIA (public headers) | MIT | `kernel/include/nvtypes.h` | `e647e23504fe4b6cc2337836b2155c49918ed174bd9a3d806125e7c12e894f2a` | +| GPL-2.0 license text | FSF | License text (not software) | `userspace/LICENSE` | — | + +No NVIDIA source code, firmware image or binary driver is bundled: only +independently written code and public MIT-licensed interface headers. + +## 5. Archived documentation and media (third-party provenance) + +`wiki/` contains a historical scrape of the project's earlier wiki (year 2023) +plus current project wiki pages. It is documentation, not runnable software. + +* The project's own wiki pages are BSD-3-Clause. +* The archived HTML pages and images include **third-party diagrams, screenshots + and logos** produced by other projects/vendors (for example Intel, Red Hat, + NVIDIA, the Linux kernel community, Looking Glass and QEMU contributors). + These are retained for historical reference; their licenses are + `NOASSERTION` here and are governed by their originating projects. +* If any archived media must be redistributed under a specific license, obtain + it from the originating project; if an artifact is believed to be improperly + included, open an issue (the project would rather over-comply). + +## 6. External dependencies (required to build, run or support the software) + +These components are **not distributed** in this repository. Versions are those +the project develops and tests against; see `config/versions/*.yaml` and +`.github/workflows/ci.yml` for the supported matrix. + +### Runtime — virtualization platform + +| Component | Version | License | Role | +|---|---|---|---| +| Linux kernel | ≥ 6.1 (tested 6.8.0-142; CI 6.1/6.6/6.8) | GPL-2.0-only | Host kernel; VFIO, mdev, IOMMU and DMA interfaces | +| QEMU | distribution version | GPL-2.0 | VM monitor (q35 + `pcie-root-port` + `vfio-pci` mdev) | +| KVM | in-kernel | GPL-2.0 | Hardware virtualization | +| VFIO / mdev / IOMMUFD | in-kernel | GPL-2.0 | Device assignment and mediated devices | +| libvirt | distribution version | LGPL-2.1 | Optional management layer | +| OVMF | distribution version | BSD-2-Clause-Patent | UEFI firmware for guests (optional) | + +### Runtime — NVIDIA (proprietary, user-supplied; not distributed) + +| Component | Version | License | Role | +|---|---|---|---| +| NVIDIA guest driver (`nvidia.ko`, `libcuda.so`) | 570.144 | NVIDIA proprietary EULA | The unmodified guest driver Open-IOV serves | +| NVIDIA GSP firmware (TU102) | 570.144W | NVIDIA proprietary (redistribution restricted) | Fetched by `install.sh` from public NVIDIA `linux-firmware`; pinned MD5 `13ce12a392a31eeb79a2e6ebd3a4a93a`; **never committed** | +| NVIDIA host distribution driver | 570.211.01 | NVIDIA proprietary EULA | Host GPU management (tested configuration) | +| NVIDIA open-gpu-kernel-modules | tag 610.57.04 | MIT / GPL-2.0 dual | Cloned at a pinned tag by `install.sh` for build glue; **not committed** | +| NVIDIA CUDA toolkit | 12.4 | NVIDIA proprietary EULA | Building `tools/cuda-ab` and running CUDA workloads | +| Ubuntu guest OS | 24.04 LTS | Various (GPL and others) | Guest environment | + +### Build, test and analysis tooling + +| Component | Version | License | Role | +|---|---|---|---| +| GCC / binutils / make / bc / flex / bison | distribution | GPL-3.0 / LGPL-2.1 | Kernel and userspace builds | +| Linux kernel headers | matching host kernel | GPL-2.0 | Kernel module builds | +| OpenSSL (`libssl-dev`), libelf | distribution | Apache-2.0, LGPL-2.1/GPL | Build dependencies | +| Python 3 | ≥ 3.10 | PSF-2.0 | All analysis and diagnostic tooling | +| PyTorch | distribution version (optional) | BSD-3-Clause | Optional guest test agent (`tools/guest_agent/`) | +| GDB (+ Python bindings) | distribution | GPL-3.0 | Guest/host debugging and one-shot samplers | +| Ghidra | 11.x | Apache-2.0 | Firmware and CUDA userspace decompilation | +| OpenJDK | 21 | GPL-2.0 with Classpath Exception | Runs Ghidra | +| pkg-config, uuid-runtime, kmod, pciutils, curl, wget, git, ca-certificates | distribution | GPL-2.0/BSD-3-Clause/curl license/MPL-2.0 | Build and diagnostic utilities | +| GitHub Actions (CI service) | hosted | GitHub Terms | CI runner service used by `.github/workflows/ci.yml` | + +## 7. Dependency relationships + +``` +pkg:generic/open-iov@0.1.0 +├── contains 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 @@ -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 <hostdev>, , or raw QEMU -device vfio-pci,sysfsdev=...). +# (libvirt <hostdev>, 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=<n>M" from this string for EVERY + * Management tools parse "framebuffer=<n>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/<domain-uuid> # 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"} -<div> - -### Search - -::: {#simpleSearch search-loc="header-navigation"} -::: - -</div> -::: -::: -::: - -::: {#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} -<!-- --> -``` -- [[{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 <tr> <td rowspan="2"> </td> -<td>guest communication daemon +<td> </td> <td rowspan="2">Daemon </td> <td>0.1.0 </td> -<td><a rel="nofollow" class="external text" href="https://">OSS</a> +<td><a rel="nofollow" class="external text" href="https://github.com/Open-IOV/">OSS</a> </td> <td> </td> @@ -143,11 +143,11 @@ Where possible, this documentation will clearly label dates and versions of obse <td>Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. </td></tr> <tr> -<td>mdev management CLI +<td> </td> <td>1.0 </td> -<td><a rel="nofollow" class="external text" href="https://">OSS</a> +<td><a rel="nofollow" class="external text" href="https://github.com/Open-IOV/">OSS</a> </td> <td>0.084 MB </td> 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 @@ <h2><span class="mw-headline" id="Design_Goals">Design Goals</span></h2> <p>LIME aims to provide similar functionality to <a rel="nofollow" class="external text" href="https://winehq.org/">WINE Is Not Emulation</a>, Valve's <a rel="nofollow" class="external text" href="https://github.com/ValveSoftware/Proton/">Proton</a> / <a rel="nofollow" class="external text" href="https://github.com/ValveSoftware/dxvk">DXVK</a> but with the use of graphics virtualization (vGPU/SR-IOV on consumer GPUs), a shared filesystem between host/guest, and <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Looking_Glass_KVMFR">KVM Frame Relay</a> (high performance graphics buffer sharing via <a rel="nofollow" class="external text" href="https://www.qemu.org/docs/master/system/devices/ivshmem.html">Inter-VM Shared Memory Device / IVSHMEM</a>). </p><p>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 <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/directx">DirectX</a>, or when changes are introduced to the latest version of the Win64 <a rel="nofollow" class="external text" href="https://infogalactic.com/info/Application_binary_interface">ABI</a>. -</p><p>This functionality is enabled via the use of <a rel="nofollow" class="external text" href="">GPU Virtual Machine</a> (for consumer GPU Virtualization), <a rel="nofollow" class="external text" href="https://virtio-fs.gitlab.io/design.html">VirtIO-FS</a> (for host <-> guest filesystem sharing), <a rel="nofollow" class="external text" href="https://looking-glass.io/">Looking Glass</a> (for host <-> guest shared frame buffer), and <a rel="nofollow" class="external text" href="https://github.com///tree/master//"></a> (for orchestration). +</p><p>This functionality is enabled via the use of <a rel="nofollow" class="external text" href="">GPU Virtual Machine</a> (for consumer GPU Virtualization), <a rel="nofollow" class="external text" href="https://virtio-fs.gitlab.io/design.html">VirtIO-FS</a> (for host <-> guest filesystem sharing), <a rel="nofollow" class="external text" href="https://looking-glass.io/">Looking Glass</a> (for host <-> guest shared frame buffer), and (for orchestration). </p> <h2><span class="mw-headline" id="Use-Cases">Use-Cases</span></h2> <h3><span class="mw-headline" id="Win64_Subsystem">Win64 Subsystem</span></h3> 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 @@ <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-parser-output"><p>This page makes use of terms that are defined in the <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Glossary"><i>Open-IOV Glossary</i></a>. If you're curious what a given term means you can check there for a definition. </p><p><br /> </p><p>This page will be used to document the <b>Mdev-GPU API</b> as well as provide an overview of the internals of the Mdev-GPU package. -</p><p>Mdev-GPU's source code can be found <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU">here</a>. +</p><p>Mdev-GPU's source code can be found here. </p><p> Module docs can be found <a rel="nofollow" class="external text" href="">here</a>.</p><blockquote><p>An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization. </p><p>This <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a> 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 <h3><span class="mw-headline" id="Compilation">Compilation</span></h3> <p>Compiling Mdev-GPU from source is very simple however it can take a long time to complete (10 minutes for existing sources). -</p><p>If you'd like to compile Mdev-GPU yourself you can do so by cloning <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU">the repo</a> and running the following two commands from within the repository directory: +</p><p>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: </p><p><code>curl -sSL https://get.haskellstack.org/ | sh</code> </p><p><code>stack install</code> </p><p>These commands will generate all binaries provided by Mdev-GPU under the path <code>~/.local/bin/</code>. -</p><p>If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/releases/tag/0.1.0.0">Releases section of the repository on GitHub</a>. +</p><p>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. </p> <h3><span class="mw-headline" id="Installation">Installation</span></h3> -<p>The binaries compiled on your local machine by Stack in the <code>~/.local/bin/</code> path or downloaded from <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/releases">Releases on GitHub</a> 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. +<p>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. </p> <h3><span class="mw-headline" id="Mdev-GPU_Configuration">Mdev-GPU Configuration</span></h3> -<p>The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/tree/master/etc">/etc/ folder</a>. 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. +<p>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. </p> <h4><span class="mw-headline" id="Systemd">Systemd</span></h4> <p>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 </p> <ul><li><b>mdev-post.service</b></li></ul> <h5><span class="mw-headline" id="mdev-post.service">mdev-post.service</span></h5> -<p>As the name would suggest <b><a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/blob/master/etc/systemd/system/mdev-post.service">mdev-post.service</a></b> 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 <b><code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code></b>. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/blob/9993fd0781ddddfcca2cb9bee6455ea2c024cc23/etc/systemd/system/mdev-post.service#L10">ExecStart= line</a> to specify an alternative path. +<p>As the name would suggest <b>mdev-post.service</b> 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 <b><code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code></b>. 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. </p> <h4><span class="mw-headline" id="Mdev-CLI">Mdev-CLI</span></h4> <p>Configuration for Mdev-GPU can be found in the path <b><code>/etc/gvm/mdev-gpu/</code></b>. 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><b>generate-vgpu-types.yaml</b></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 <a rel="nofollow" class="external text" href="https://github.com/mdevctl/mdevctl">mdevctl</a>. Once you have configured the available types your liking you can refresh the supported types registered with the <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Virtual_IO_Internals#Mediated_Core">Mediated Core</a> by rebooting your machine or reloading the vendor driver kernel module then restarting <b>mdev-post.service</b> or by invoking <b>mdev-cli</b>. 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: <strong>(cur)</strong> = difference with latest revision, <strong>(prev) <li data-mw-revid="5576" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=23786&oldid=5576" title="GPU Software Bill Of Materials (SBOM)">cur</a></span><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=5576&oldid=5574" title="GPU Software Bill Of Materials (SBOM)">prev</a></span></span><input type="radio" value="5576" name="oldid" id="mw-oldid-5576" /><input type="radio" value="5576" name="diff" id="mw-diff-5576" /> <a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=5576" class="mw-changeslist-date" title="GPU Software Bill Of Materials (SBOM)">23:53, 9 December 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="2588">2,588 bytes</span> <strong dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="2,588 bytes after change">+1,574</strong> <span class="mw-changeslist-separator"></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> <li data-mw-revid="5574" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=23786&oldid=5574" title="GPU Software Bill Of Materials (SBOM)">cur</a></span><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=5574&oldid=5573" title="GPU Software Bill Of Materials (SBOM)">prev</a></span></span><input type="radio" value="5574" name="oldid" id="mw-oldid-5574" /><input type="radio" value="5574" name="diff" id="mw-diff-5574" /> <a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=5574" class="mw-changeslist-date" title="GPU Software Bill Of Materials (SBOM)">23:41, 9 December 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="1014">1,014 bytes</span> <span dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="1,014 bytes after change">+35</span> <span class="mw-changeslist-separator"></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> <li data-mw-revid="5573" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=23786&oldid=5573" title="GPU Software Bill Of Materials (SBOM)">cur</a></span><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=5573&oldid=5569" title="GPU Software Bill Of Materials (SBOM)">prev</a></span></span><input type="radio" value="5573" name="oldid" id="mw-oldid-5573" /><input type="radio" value="5573" name="diff" id="mw-diff-5573" /> <a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=5573" class="mw-changeslist-date" title="GPU Software Bill Of Materials (SBOM)">23:40, 9 December 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="979">979 bytes</span> <span dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="979 bytes after change">+41</span> <span class="mw-changeslist-separator"></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> -<li data-mw-revid="5569" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=23786&oldid=5569" title="GPU Software Bill Of Materials (SBOM)">cur</a></span><span>prev</span></span><input type="radio" value="5569" name="oldid" id="mw-oldid-5569" /><input type="radio" value="5569" name="diff" id="mw-diff-5569" /> <a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=5569" class="mw-changeslist-date" title="GPU Software Bill Of Materials (SBOM)">23:09, 9 December 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="938">938 bytes</span> <strong dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="938 bytes after change">+938</strong> <span class="mw-changeslist-separator"></span> <span class="comment comment--without-parentheses">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 |..."</span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> +<li data-mw-revid="5569" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&diff=23786&oldid=5569" title="GPU Software Bill Of Materials (SBOM)">cur</a></span><span>prev</span></span><input type="radio" value="5569" name="oldid" id="mw-oldid-5569" /><input type="radio" value="5569" name="diff" id="mw-diff-5569" /> <a href="https://open-iov.org/index.php?title=GPU_Software_Bill_Of_Materials_(SBOM)&oldid=5569" class="mw-changeslist-date" title="GPU Software Bill Of Materials (SBOM)">23:09, 9 December 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="938">938 bytes</span> <strong dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="938 bytes after change">+938</strong> <span class="mw-changeslist-separator"></span> <span class="comment comment--without-parentheses">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 |..."</span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> </ul> <div class="mw-history-compareselectedversions"><input class="historysubmit mw-history-compareselectedversions-button mw-ui-button" title="See the differences between the two selected revisions of this page [v]" accesskey="v" type="submit" value="Compare selected revisions"/> </div></form> 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 <tr> <td rowspan="2"> </td> -<td>guest communication daemon +<td> </td> <td rowspan="2">Daemon </td> <td>0.1.0 </td> -<td><a rel="nofollow" class="external text" href="https://">OSS</a> +<td><a rel="nofollow" class="external text" href="https://github.com/Open-IOV/">OSS</a> </td> <td> </td> @@ -144,11 +144,11 @@ Where possible, this documentation will clearly label dates and versions of obse <td>Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. </td></tr> <tr> -<td>mdev management CLI +<td> </td> <td>1.0 </td> -<td><a rel="nofollow" class="external text" href="https://">OSS</a> +<td><a rel="nofollow" class="external text" href="https://github.com/Open-IOV/">OSS</a> </td> <td>0.084 MB </td> 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 @@ <h2><span class="mw-headline" id="Design_Goals">Design Goals</span></h2> <p>LIME aims to provide similar functionality to <a rel="nofollow" class="external text" href="https://winehq.org/">WINE Is Not Emulation</a>, Valve's <a rel="nofollow" class="external text" href="https://github.com/ValveSoftware/Proton/">Proton</a> / <a rel="nofollow" class="external text" href="https://github.com/ValveSoftware/dxvk">DXVK</a> but with the use of graphics virtualization (vGPU/SR-IOV on consumer GPUs), a shared filesystem between host/guest, and <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Looking_Glass_KVMFR">KVM Frame Relay</a> (high performance graphics buffer sharing via <a rel="nofollow" class="external text" href="https://www.qemu.org/docs/master/system/devices/ivshmem.html">Inter-VM Shared Memory Device / IVSHMEM</a>). </p><p>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 <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/windows/win32/directx">DirectX</a>, or when changes are introduced to the latest version of the Win64 <a rel="nofollow" class="external text" href="https://infogalactic.com/info/Application_binary_interface">ABI</a>. -</p><p>This functionality is enabled via the use of <a rel="nofollow" class="external text" href="">GPU Virtual Machine</a> (for consumer GPU Virtualization), <a rel="nofollow" class="external text" href="https://virtio-fs.gitlab.io/design.html">VirtIO-FS</a> (for host <-> guest filesystem sharing), <a rel="nofollow" class="external text" href="https://looking-glass.io/">Looking Glass</a> (for host <-> guest shared frame buffer), and <a rel="nofollow" class="external text" href="https://github.com///tree/master//"></a> (for orchestration). +</p><p>This functionality is enabled via the use of <a rel="nofollow" class="external text" href="">GPU Virtual Machine</a> (for consumer GPU Virtualization), <a rel="nofollow" class="external text" href="https://virtio-fs.gitlab.io/design.html">VirtIO-FS</a> (for host <-> guest filesystem sharing), <a rel="nofollow" class="external text" href="https://looking-glass.io/">Looking Glass</a> (for host <-> guest shared frame buffer), and (for orchestration). </p> <h2><span class="mw-headline" id="Use-Cases">Use-Cases</span></h2> <h3><span class="mw-headline" id="Win64_Subsystem">Win64 Subsystem</span></h3> 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: <strong>(cur)</strong> = difference with latest revision, <strong>(prev) <li data-mw-revid="725" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=23740&oldid=725" title="Mdev-GPU">cur</a></span><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=725&oldid=724" title="Mdev-GPU">prev</a></span></span><input type="radio" value="725" name="oldid" id="mw-oldid-725" /><input type="radio" value="725" name="diff" id="mw-diff-725" /> <a href="https://open-iov.org/index.php?title=Mdev-GPU&oldid=725" class="mw-changeslist-date" title="Mdev-GPU">18:45, 2 August 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="1803">1,803 bytes</span> <span dir="ltr" class="mw-plusminus-neg mw-diff-bytes" title="1,803 bytes after change">−12</span> <span class="mw-changeslist-separator"></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> <li data-mw-revid="724" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=23740&oldid=724" title="Mdev-GPU">cur</a></span><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=724&oldid=721" title="Mdev-GPU">prev</a></span></span><input type="radio" value="724" name="oldid" id="mw-oldid-724" /><input type="radio" value="724" name="diff" id="mw-diff-724" /> <a href="https://open-iov.org/index.php?title=Mdev-GPU&oldid=724" class="mw-changeslist-date" title="Mdev-GPU">18:45, 2 August 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="1815">1,815 bytes</span> <strong dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="1,815 bytes after change">+652</strong> <span class="mw-changeslist-separator"></span> <span class="comment comment--without-parentheses"><span dir="auto"><span class="autocomment"><a href="index.php/Mdev-GPU.html#Installation" title="Mdev-GPU">→Installation</a></span></span></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> <li data-mw-revid="721" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=23740&oldid=721" title="Mdev-GPU">cur</a></span><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=721&oldid=713" title="Mdev-GPU">prev</a></span></span><input type="radio" value="721" name="oldid" id="mw-oldid-721" /><input type="radio" value="721" name="diff" id="mw-diff-721" /> <a href="https://open-iov.org/index.php?title=Mdev-GPU&oldid=721" class="mw-changeslist-date" title="Mdev-GPU">17:13, 2 August 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="1163">1,163 bytes</span> <strong dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="1,163 bytes after change">+807</strong> <span class="mw-changeslist-separator"></span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> -<li data-mw-revid="713" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=23740&oldid=713" title="Mdev-GPU">cur</a></span><span>prev</span></span><input type="radio" value="713" name="oldid" id="mw-oldid-713" /><input type="radio" value="713" name="diff" id="mw-diff-713" /> <a href="https://open-iov.org/index.php?title=Mdev-GPU&oldid=713" class="mw-changeslist-date" title="Mdev-GPU">16:01, 25 July 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="356">356 bytes</span> <span dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="356 bytes after change">+356</span> <span class="mw-changeslist-separator"></span> <span class="comment comment--without-parentheses">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]."</span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> +<li data-mw-revid="713" class="mw-tag-visualeditor"><span class="mw-history-histlinks mw-changeslist-links"><span><a href="https://open-iov.org/index.php?title=Mdev-GPU&diff=23740&oldid=713" title="Mdev-GPU">cur</a></span><span>prev</span></span><input type="radio" value="713" name="oldid" id="mw-oldid-713" /><input type="radio" value="713" name="diff" id="mw-diff-713" /> <a href="https://open-iov.org/index.php?title=Mdev-GPU&oldid=713" class="mw-changeslist-date" title="Mdev-GPU">16:01, 25 July 2022</a> <span class='history-user'><a href="./index.php%3Ftitle=User:Arthur&action=edit&redlink=1.html" class="new mw-userlink" title="User:Arthur (page does not exist)"><bdi>Arthur</bdi></a> <span class="mw-usertoollinks mw-changeslist-links"><span><a href="./index.php%3Ftitle=User_talk:Arthur&action=edit&redlink=1.html" class="new mw-usertoollinks-talk" title="User talk:Arthur (page does not exist)">talk</a></span> <span><a href="index.php/Special:Contributions/Arthur.html" class="mw-usertoollinks-contribs" title="Special:Contributions/Arthur">contribs</a></span></span></span> <span class="mw-changeslist-separator"></span> <span class="history-size mw-diff-bytes" data-mw-bytes="356">356 bytes</span> <span dir="ltr" class="mw-plusminus-pos mw-diff-bytes" title="356 bytes after change">+356</span> <span class="mw-changeslist-separator"></span> <span class="comment comment--without-parentheses">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]."</span> <span class="mw-tag-markers"><a href="https://open-iov.org/index.php/Special:Tags" title="Special:Tags">Tag</a>: <span class="mw-tag-marker mw-tag-marker-visualeditor"><a href="https://open-iov.org/index.php?title=Open-IOV:VisualEditor&action=edit&redlink=1" class="new" title="Open-IOV:VisualEditor (page does not exist)">Visual edit</a></span></span></li> </ul> <div class="mw-history-compareselectedversions"><input class="historysubmit mw-history-compareselectedversions-button mw-ui-button" title="See the differences between the two selected revisions of this page [v]" accesskey="v" type="submit" value="Compare selected revisions"/> </div></form> 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 @@ <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-parser-output"><p>This page makes use of terms that are defined in the <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Glossary"><i>Open-IOV Glossary</i></a>. If you're curious what a given term means you can check there for a definition. </p><p><br /> </p><p>This page will be used to document the <b>Mdev-GPU API</b> as well as provide an overview of the internals of the Mdev-GPU package. -</p><p>Mdev-GPU's source code can be found <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU">here</a>. +</p><p>Mdev-GPU's source code can be found here. </p><p> Module docs can be found <a rel="nofollow" class="external text" href="">here</a>.</p><blockquote><p>An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization. </p><p>This <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a> 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 <h3><span class="mw-headline" id="Compilation">Compilation</span></h3> <p>Compiling Mdev-GPU from source is very simple however it can take a long time to complete (10 minutes for existing sources). -</p><p>If you'd like to compile Mdev-GPU yourself you can do so by cloning <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU">the repo</a> and running the following two commands from within the repository directory: +</p><p>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: </p><p><code>curl -sSL https://get.haskellstack.org/ | sh</code> </p><p><code>stack install</code> </p><p>These commands will generate all binaries provided by Mdev-GPU under the path <code>~/.local/bin/</code>. -</p><p>If you would prefer not to wait for the program to compile you can find pre-compiled x86_64 binaries under the <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/releases/tag/0.1.0.0">Releases section of the repository on GitHub</a>. +</p><p>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. </p> <h3><span class="mw-headline" id="Installation">Installation</span></h3> -<p>The binaries compiled on your local machine by Stack in the <code>~/.local/bin/</code> path or downloaded from <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/releases">Releases on GitHub</a> 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. +<p>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. </p> <h3><span class="mw-headline" id="Mdev-GPU_Configuration">Mdev-GPU Configuration</span></h3> -<p>The Mdev-GPU repository provides Systemd service and example configurations for Mdev-CLI in the <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/tree/master/etc">/etc/ folder</a>. 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. +<p>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. </p> <h4><span class="mw-headline" id="Systemd">Systemd</span></h4> <p>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 </p> <ul><li><b>mdev-post.service</b></li></ul> <h5><span class="mw-headline" id="mdev-post.service">mdev-post.service</span></h5> -<p>As the name would suggest <b><a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/blob/master/etc/systemd/system/mdev-post.service">mdev-post.service</a></b> 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 <b><code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code></b>. If you'd like to place your configuration file elsewhere and still have your configuration invoked on boot you can edit the systemd service <a rel="nofollow" class="external text" href="https://github.com//Mdev-GPU/blob/9993fd0781ddddfcca2cb9bee6455ea2c024cc23/etc/systemd/system/mdev-post.service#L10">ExecStart= line</a> to specify an alternative path. +<p>As the name would suggest <b>mdev-post.service</b> 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 <b><code>/etc/gvm/mdev-gpu/generate-vgpu-types.yaml</code></b>. 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. </p> <h4><span class="mw-headline" id="Mdev-CLI">Mdev-CLI</span></h4> <p>Configuration for Mdev-GPU can be found in the path <b><code>/etc/gvm/mdev-gpu/</code></b>. 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><b>generate-vgpu-types.yaml</b></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 <a rel="nofollow" class="external text" href="https://github.com/mdevctl/mdevctl">mdevctl</a>. Once you have configured the available types your liking you can refresh the supported types registered with the <a rel="nofollow" class="external text" href="https://open-iov.org/index.php/Virtual_IO_Internals#Mediated_Core">Mediated Core</a> by rebooting your machine or reloading the vendor driver kernel module then restarting <b>mdev-post.service</b> or by invoking <b>mdev-cli</b>. |
