|
|
| (24 intermediate revisions by 2 users not shown) |
| Line 1: |
Line 1: |
| This page will keep a running list of components used to achieve GPU Virtualization.
| | {{About message}} |
| {| class="wikitable" | |
| |+Component Table
| |
| !Vendor
| |
| !Component
| |
| !Description
| |
| !Version
| |
| !OSS or Blob
| |
| !Vendor Docs
| |
| !Release Date
| |
| !Interfaces / APIs
| |
| !Notes
| |
| |-
| |
| |Arc Compute
| |
| |gvm-cli
| |
| |Daemon
| |
| | rowspan="2" |1.0
| |
| | rowspan="2" |[https://github.com/Open-IOV/GVM-user OSS]
| |
| |[https://docs.linux-gvm.org docs.linux-gvm.org]
| |
| |2023.01.06
| |
| |CLI, [https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL], RMAPI, Mediated Core
| |
| |Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core.
| |
| |-
| |
| |Arc Compute
| |
| |gvm-mgr
| |
| |Daemon
| |
| |[https://docs.linux-gvm.org docs.linux-gvm.org]
| |
| |2023.01.06
| |
| |[https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL], RMAPI, [https://open-iov.org/index.php/GPU_Driver_Internals#Guest_kernel_(nvidia.ko) vRPC], pRPC, PCI BAR, Mediated Core
| |
| |Schedules IO to and from the guest GPU driver, handles BAR-quirks (trap and emulate of some or all guest driver IO depending on availability of hardware virtualization assistance).
| |
| |-
| |
| |Arc Compute
| |
| |libgvm.so
| |
| |Library
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| |Arc Compute
| |
| |gvm_vfio
| |
| |Driver
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| |Microsoft
| |
| |Indirect Display Driver (IDD)
| |
| |Driver
| |
| |
| |
| |[https://github.com/Microsoft/Windows-driver-samples/tree/main/video/IndirectDisplay OSS]
| |
| |[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/indirect-display-driver-model-overview Indirect Display Driver Overview]
| |
| |
| |
| |[https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf UMDF], [https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/ KMDF]
| |
| |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
| |
| |[https://github.com/torvalds/linux/tree/master/drivers/vfio/pci OSS]
| |
| |[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/virtualization/chap-virtualization-pci_passthrough RedHat], [https://docs.kernel.org/driver-api/vfio.html kernel.org]
| |
| |2022.12.15
| |
| |[https://open-iov.org/index.php/Virtual_I/O_Internals#Instruction_Execution irqfd], [https://open-iov.org/index.php/Virtual_I/O_Internals#Instruction_Execution ioeventfd], [https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL]
| |
| |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.
| |
| |-
| |
| |Intel
| |
| |i915 SR-IOV
| |
| |Driver
| |
| | rowspan="3" |[https://github.com/intel/linux-intel-lts/tree/5.15/ADL-linux-ER 5.15]
| |
| |OSS
| |
| |
| |
| |
| |
| |
| |
| |Intel's open source GPU driver for GuC-equipped graphics accelerators.
| |
| |-
| |
| |Intel
| |
| |[https://open-iov.org/index.php/GPU_Firmware#GuC GuC] μOS
| |
| |Firmware
| |
| |Blob
| |
| |
| |
| |
| |
| |IOMMU Interrupts, Power Management Interrupts, [https://open-iov.org/index.php/GPU_Driver_Internals#GTT_(Graphics_Translation_Table) GTT]
| |
| |Handles scheduling, and power management.
| |
| |-
| |
| |Intel
| |
| |HuC
| |
| |Firmware
| |
| |Blob
| |
| |
| |
| |
| |
| |[https://open-iov.org/index.php/GPU_Driver_Internals#GTT_(Graphics_Translation_Table) GTT]
| |
| |Handles video encoding/decoding.
| |
| |-
| |
| |Intel
| |
| |[https://open-iov.org/index.php/GPU_Driver_Internals#Display_Surface_Virtualization_2 Display Virtualization for Windows OS]
| |
| |Driver
| |
| |
| |
| |[https://github.com/intel/Display-Virtualization-for-Windows-OS OSS]
| |
| |
| |
| |
| |
| |udmabuf, [https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf UMDF], [https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/ KMDF]
| |
| |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]]
| |
| |Driver
| |
| | rowspan="2" |525.85.12
| |
| |OSS
| |
| |
| |
| |2023.01.31
| |
| |
| |
| |Nvidia's open source GPU driver for GSP-equipped graphics accelerators.
| |
| |-
| |
| |Nvidia
| |
| |[https://open-iov.org/index.php/GPU_Firmware#GSP GSP] RM (uproc)
| |
| |Firmware
| |
| |Blob
| |
| |
| |
| |2023.01.31
| |
| |RPC
| |
| |Embedded firmware based on LibOS containing the [https://open-iov.org/index.php/GPU_Driver_Internals#RM_Core RM Core].
| |
| |-
| |
| |Nvidia
| |
| |Falcon/NvRISC (uproc)
| |
| |Firmware
| |
| |Unknown
| |
| |Blob
| |
| |
| |
| |
| |
| |FBIF (Frame Buffer Interface) / GMMU
| |
| |Embedded firmware which handles many aspects of the device including configuring the GPU's GMMU controller.
| |
| |-
| |
| |Nvidia
| |
| |nvidia-vgpud
| |
| |Daemon
| |
| | rowspan="4" |[https://docs.nvidia.com/grid/15.0/index.html v15.1]
| |
| |Blob
| |
| |
| |
| |2023.01.xx
| |
| |Systemd, Mediated Core
| |
| |Configures the the nvidia-vgpu-mgr process.
| |
| |-
| |
| |Nvidia
| |
| |nvidia-vgpu-mgr
| |
| |Daemon
| |
| |Blob
| |
| |
| |
| |2023.01.xx
| |
| |[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], IOCTL, RMAPI, [https://open-iov.org/index.php/GPU_Driver_Internals#Guest_kernel_(nvidia.ko) vRPC], pRPC, Mediated Core
| |
| |Handles IO to and from guest RM, host RM, and hardware.
| |
| |-
| |
| |Nvidia
| |
| |libnvidiavgpu.so
| |
| |Library
| |
| |Blob
| |
| |
| |
| |2023.01.xx
| |
| |[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], RMAPI, Mediated Core
| |
| |Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr.
| |
| |-
| |
| |Nvidia
| |
| |nvidia_vgpu_vfio
| |
| |Driver
| |
| |Blob
| |
| |
| |
| |2023.01.xx
| |
| |[https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_DMA_Translations Type 1 IOMMU], [https://open-iov.org/index.php/Virtual_I/O_Internals#Instruction_Execution irqfd, ioeventfd], [https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL], Mediated Core
| |
| |Handles incremental memory mapping (non-page pinning per the standard vfio-pci driver).
| |
| |}
| |
|
| |
|
| == More Information == | | {{Superseded}} |
| | = GPU Software Bill Of Materials (SBOM) = |
|
| |
|
| # [https://riscv.org/wp-content/uploads/2016/07/Tue1100_Nvidia_RISCV_Story_V2.pdf Nvidia RISC-V Story]
| | <blockquote>'''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:</blockquote> |
| # [https://linux-gvm.org linux-gvm.org]
| | |
| #[https://01.org/linuxgraphics/documentation/hardware-specification-prms Intel Graphics Programmer's Reference Manuals (PRM)]
| | * '''[https://git.vgpu.io/open-iov.git/tree/SBOM.md <code>SBOM.md</code>]''' — 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. |
| #[https://bwidawsk.net/blog/2013/1/i915-hardware-contexts-and-some-bits-about-batchbuffers/ i915: Hardware Contexts (and some bits about batchbuffers)]
| | * '''[https://git.vgpu.io/open-iov.git/tree/sbom/open-iov-0.1.0.cdx.json <code>sbom/open-iov-0.1.0.cdx.json</code>]''' — machine-readable CycloneDX 1.6 SBOM (serial <code>urn:uuid:e626c5a1-9697-4546-bb2b-5b4feb58e922</code>). |
| #[https://bwidawsk.net/blog/2014/6/the-global-gtt-part-1/ i915: The Global GTT Part 1]
| | |
| #[https://bwidawsk.net/blog/2014/6/aliasing-ppgtt-part-2/ i915: Aliasing PPGTT Part 2]
| | 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. |
| #[https://bwidawsk.net/blog/2014/7/true-ppgtt-part-3/ i915: True PPGTT Part 3]
| |
| #[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/ i915: Future PPGTT Part 4 (Dynamic page table allocations, 64 bit address space, GPU "mirroring", and yeah, something about relocs too)]
| |
| #[https://igor-blue.github.io/2021/02/10/graphics-part1.html i915: Security of the Intel Graphics Stack - Part 1 - Introduction]
| |
| #[https://igor-blue.github.io/2021/02/24/graphics-part2.html i915: Security of the Intel Graphics Stack - Part 2 - FW <-> GuC]
| |
| #[https://01.org/sites/default/files/documentation/an_introduction_to_intel_gvt-g_for_external.pdf i915: An Introduction to Intel GVT-g (with new architecture)]
| |