Difference between revisions of "GPU Software Bill Of Materials (SBOM)"
Jump to navigation
Jump to search
Line 12: | Line 12: | ||
!Notes | !Notes | ||
|- | |- | ||
|Arc Compute | | rowspan="2" |Arc Compute | ||
|gvm-cli | |gvm-cli | ||
|Daemon | |Daemon | ||
Line 22: | Line 22: | ||
|Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core. | |Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core. | ||
|- | |- | ||
|gvm-mgr | |gvm-mgr | ||
|Daemon | |Daemon | ||
Line 49: | Line 48: | ||
|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. | |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 | | rowspan="4" |Intel | ||
|i915 SR-IOV | |i915 SR-IOV | ||
|Driver | |Driver | ||
Line 59: | Line 58: | ||
|Intel's open source GPU driver for GuC-equipped graphics accelerators. | |Intel's open source GPU driver for GuC-equipped graphics accelerators. | ||
|- | |- | ||
|[https://open-iov.org/index.php/GPU_Firmware#GuC GuC] μOS | |[https://open-iov.org/index.php/GPU_Firmware#GuC GuC] μOS | ||
|Firmware | |Firmware | ||
Line 68: | Line 66: | ||
|Handles scheduling, and power management. | |Handles scheduling, and power management. | ||
|- | |- | ||
|HuC | |HuC | ||
|Firmware | |Firmware | ||
Line 77: | Line 74: | ||
|Handles video encoding/decoding. | |Handles video encoding/decoding. | ||
|- | |- | ||
|[https://open-iov.org/index.php/GPU_Driver_Internals#Display_Surface_Virtualization_2 Display Virtualization for Windows OS] | |[https://open-iov.org/index.php/GPU_Driver_Internals#Display_Surface_Virtualization_2 Display Virtualization for Windows OS] | ||
|Driver | |Driver | ||
Line 87: | Line 83: | ||
|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. | |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 | | rowspan="7" |Nvidia | ||
|[[OpenRM]] | |[[OpenRM]] | ||
|Driver | |Driver | ||
Line 97: | Line 93: | ||
|Nvidia's open source GPU driver for GSP-equipped graphics accelerators. | |Nvidia's open source GPU driver for GSP-equipped graphics accelerators. | ||
|- | |- | ||
|[https://open-iov.org/index.php/GPU_Firmware#GSP GSP] RM (uproc) | |[https://open-iov.org/index.php/GPU_Firmware#GSP GSP] RM (uproc) | ||
|Firmware | |Firmware | ||
Line 106: | Line 101: | ||
|Embedded firmware based on LibOS containing the [https://open-iov.org/index.php/GPU_Driver_Internals#RM_Core RM Core]. | |Embedded firmware based on LibOS containing the [https://open-iov.org/index.php/GPU_Driver_Internals#RM_Core RM Core]. | ||
|- | |- | ||
|Falcon/NvRISC (uproc) | |Falcon/NvRISC (uproc) | ||
|Firmware | |Firmware | ||
Line 116: | Line 110: | ||
|Embedded firmware which handles many aspects of the device including configuring the GPU's GMMU controller. | |Embedded firmware which handles many aspects of the device including configuring the GPU's GMMU controller. | ||
|- | |- | ||
|nvidia-vgpud | |nvidia-vgpud | ||
|Daemon | |Daemon | ||
Line 126: | Line 119: | ||
|Configures the the nvidia-vgpu-mgr process. | |Configures the the nvidia-vgpu-mgr process. | ||
|- | |- | ||
|nvidia-vgpu-mgr | |nvidia-vgpu-mgr | ||
|Daemon | |Daemon | ||
Line 134: | Line 126: | ||
|Handles IO to and from guest RM, host RM, and hardware. | |Handles IO to and from guest RM, host RM, and hardware. | ||
|- | |- | ||
|libnvidiavgpu.so | |libnvidiavgpu.so | ||
|Library | |Library | ||
Line 142: | Line 133: | ||
|Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr. | |Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr. | ||
|- | |- | ||
|nvidia_vgpu_vfio | |nvidia_vgpu_vfio | ||
|Driver | |Driver |
Revision as of 23:17, 7 February 2023
This page will keep a running list of components used to achieve GPU Virtualization.
Vendor | Component | Description | Version | OSS or Blob | Vendor Docs | Release Date | Interfaces / APIs | Notes |
---|---|---|---|---|---|---|---|---|
Arc Compute | gvm-cli | Daemon | 1.0 | OSS | docs.linux-gvm.org | 2023.01.06 | CLI, IOCTL, RMAPI, Mediated Core | Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core. |
gvm-mgr | Daemon | 2023.01.06 | IOCTL, RMAPI, 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). | ||||
Microsoft | Indirect Display Driver (IDD) | Driver | OSS | Indirect Display Driver Overview | UMDF, 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 | OSS | RedHat, kernel.org | 2022.12.15 | irqfd, ioeventfd, 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 | 5.15 | OSS | Intel's open source GPU driver for GuC-equipped graphics accelerators. | |||
GuC μOS | Firmware | Blob | IOMMU Interrupts, Power Management Interrupts, GTT | Handles scheduling, and power management. | ||||
HuC | Firmware | Blob | GTT | Handles video encoding/decoding. | ||||
Display Virtualization for Windows OS | Driver | 791 | OSS | github.com/intel/Display-Virtualization-for-Windows-OS/blob/main/Readme.txt | udmabuf, UMDF, 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 | 525.85.12 | OSS | github.com/NVIDIA/open-gpu-kernel-modules/blob/main/README.md | 2023.01.31 | Nvidia's open source GPU driver for GSP-equipped graphics accelerators. | |
GSP RM (uproc) | Firmware | Blob | 2023.01.31 | RPC | Embedded firmware based on LibOS containing the RM Core. | |||
Falcon/NvRISC (uproc) | Firmware | Blob | 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.1 | Blob | docs.nvidia.com/grid | 2023.01.xx | Systemd, Mediated Core | Configures the the nvidia-vgpu-mgr process. | |
nvidia-vgpu-mgr | Daemon | Blob | 2023.01.xx | vmiop, IOCTL, RMAPI, vRPC, pRPC, Mediated Core | Handles IO to and from guest RM, host RM, and hardware. | |||
libnvidiavgpu.so | Library | Blob | 2023.01.xx | vmiop, RMAPI, Mediated Core | Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr. | |||
nvidia_vgpu_vfio | Driver | Blob | 2023.01.xx | Type 1 IOMMU, irqfd, ioeventfd, IOCTL, Mediated Core | Handles incremental memory mapping (non-page pinning per the standard vfio-pci driver). |
More Information
- Nvidia RISC-V Story
- linux-gvm.org
- Intel Graphics Programmer's Reference Manuals (PRM)
- i915: Hardware Contexts (and some bits about batchbuffers)
- i915: The Global GTT Part 1
- i915: Aliasing PPGTT Part 2
- i915: True PPGTT Part 3
- i915: Future PPGTT Part 4 (Dynamic page table allocations, 64 bit address space, GPU "mirroring", and yeah, something about relocs too)
- i915: Security of the Intel Graphics Stack - Part 1 - Introduction
- i915: Security of the Intel Graphics Stack - Part 2 - FW <-> GuC
- i915: An Introduction to Intel GVT-g (with new architecture)