Difference between revisions of "GPU Software Bill Of Materials (SBOM)"

From Open-IOV
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.
|-
|-
|Arc Compute
|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.
|-
|-
|Intel
|[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.
|-
|-
|Intel
|HuC
|HuC
|Firmware
|Firmware
Line 77: Line 74:
|Handles video encoding/decoding.
|Handles video encoding/decoding.
|-
|-
|Intel
|[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.
|-
|-
|Nvidia
|[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].
|-
|-
|Nvidia
|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
|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
|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.
|-
|-
|Nvidia
|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
|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.

Component Table
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

  1. Nvidia RISC-V Story
  2. linux-gvm.org
  3. Intel Graphics Programmer's Reference Manuals (PRM)
  4. i915: Hardware Contexts (and some bits about batchbuffers)
  5. i915: The Global GTT Part 1
  6. i915: Aliasing PPGTT Part 2
  7. i915: True PPGTT Part 3
  8. i915: Future PPGTT Part 4 (Dynamic page table allocations, 64 bit address space, GPU "mirroring", and yeah, something about relocs too)
  9. i915: Security of the Intel Graphics Stack - Part 1 - Introduction
  10. i915: Security of the Intel Graphics Stack - Part 2 - FW <-> GuC
  11. i915: An Introduction to Intel GVT-g (with new architecture)