Difference between revisions of "GPU Software Bill Of Materials (SBOM)"
Jump to navigation
Jump to search
Line 15: | Line 15: | ||
!Interfaces / APIs | !Interfaces / APIs | ||
!Notes | !Notes | ||
|- | |- | ||
|Microsoft | |Microsoft | ||
Line 54: | Line 35: | ||
|[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] | |[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. | |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. | ||
|- | |||
| rowspan="2" |Arc Compute | |||
|gvm-guest | |||
| rowspan="2" |Daemon | |||
|0.1.0 | |||
|[https://github.com/Open-IOV/GVM-guest OSS] | |||
|[https://docs.linux-gvm.org/gvm-guest docs.linux-gvm.org/gvm-guest] | |||
|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. | |||
|- | |||
|gvm-cli | |||
|1.0 | |||
|[https://github.com/Open-IOV/GVM-user OSS] | |||
|[https://docs.linux-gvm.org/gvm-user docs.linux-gvm.org/gvm-user] | |||
|2023.01.06 | |||
|CLI, [https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL], [https://open-iov.org/index.php/GPU_Driver_Internals#RM_API RMAPI], [https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_Core Mediated Core] | |||
|Configures the the nvidia-vgpu-mgr process. | |||
|- | |- | ||
| rowspan="4" |Intel | | rowspan="4" |Intel | ||
Line 66: | Line 65: | ||
|- | |- | ||
|[https://open-iov.org/index.php/GPU_Firmware#GuC GuC] μOS | |[https://open-iov.org/index.php/GPU_Firmware#GuC GuC] μOS | ||
|Firmware | | rowspan="2" |Firmware | ||
| rowspan="2" |Blob | | rowspan="2" |Blob | ||
| | | | ||
Line 74: | Line 73: | ||
|- | |- | ||
|HuC | |HuC | ||
| | | | ||
| | | | ||
Line 86: | Line 84: | ||
|[https://github.com/intel/Display-Virtualization-for-Windows-OS/blob/main/Readme.txt 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 github.com/intel/Display-Virtualization-for-Windows-OS/blob/main/Readme.txt] | ||
| | | | ||
|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] | |[https://github.com/ikwzm/udmabuf 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. | |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. | ||
|- | |- | ||
Line 100: | Line 98: | ||
|- | |- | ||
|[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 | | rowspan="2" |Firmware | ||
| rowspan="2" |Blob | | rowspan="2" |Blob | ||
| | | | ||
Line 108: | Line 106: | ||
|- | |- | ||
|Falcon/NvRISC (uproc) | |Falcon/NvRISC (uproc) | ||
| | | | ||
| | | | ||
Line 116: | Line 113: | ||
|- | |- | ||
|nvidia-vgpud | |nvidia-vgpud | ||
|Daemon | | rowspan="2" |Daemon | ||
| rowspan="4" |[https://docs.nvidia.com/grid/15.0/whats-new-vgpu/index.html v15.1] | | rowspan="4" |[https://docs.nvidia.com/grid/15.0/whats-new-vgpu/index.html v15.1] | ||
| rowspan="4" |Blob | | rowspan="4" |Blob | ||
Line 125: | Line 122: | ||
|- | |- | ||
|nvidia-vgpu-mgr | |nvidia-vgpu-mgr | ||
|2023.01.xx | |2023.01.xx | ||
|[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], [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, [https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_Core Mediated Core] | |[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], [https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/tree/Documentation/driver-api/ioctl.rst IOCTL], [https://open-iov.org/index.php/GPU_Driver_Internals#RM_API RMAPI], [https://open-iov.org/index.php/GPU_Driver_Internals#Guest_kernel_(nvidia.ko) vRPC], pRPC, [https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_Core Mediated Core] | ||
|Handles IO to and from guest RM, host RM, and hardware. | |Handles IO to and from guest RM, host RM, and hardware. | ||
|- | |- | ||
Line 133: | Line 129: | ||
|Library | |Library | ||
|2023.01.xx | |2023.01.xx | ||
|[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], RMAPI, [https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_Core Mediated Core] | |[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], [https://open-iov.org/index.php/GPU_Driver_Internals#RM_API RMAPI], [https://open-iov.org/index.php/Virtual_I/O_Internals#Mediated_Core Mediated Core] | ||
|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. | ||
|- | |- |
Revision as of 04:57, 23 March 2023
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 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 | Vendor Docs | Release Date | Interfaces / APIs | Notes |
---|---|---|---|---|---|---|---|---|
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. |
Arc Compute | gvm-guest | Daemon | 0.1.0 | OSS | docs.linux-gvm.org/gvm-guest | 2023.02.08 | Virtio-Serial, CLI | Handles IO to and from guests and the host using Virtio-Serial to handle multiple different guest modules. |
gvm-cli | 1.0 | OSS | docs.linux-gvm.org/gvm-user | 2023.01.06 | CLI, IOCTL, RMAPI, Mediated Core | Configures the the nvidia-vgpu-mgr process. | ||
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 | 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) | 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 | 2023.01.xx | vmiop, IOCTL, RMAPI, vRPC, pRPC, Mediated Core | Handles IO to and from guest RM, host RM, and hardware. | |||||
libnvidiavgpu.so | Library | 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 | 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)