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

From Open-IOV
Jump to navigation Jump to search
Line 20: Line 20:
|
|
|CLI
|CLI
|
|Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core.
|-
|-
|Arc Compute
|Arc Compute
Line 28: Line 28:
|[https://docs.linux-gvm.org docs.linux-gvm.org]
|[https://docs.linux-gvm.org docs.linux-gvm.org]
|
|
|
|IOCTL, vRPC, pRPC
|
|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).
|-
|-
|Intel
|Intel
Line 39: Line 39:
|
|
|
|
|
|Intel's open source GPU driver for GuC-equipped graphics accelerators.
|-
|-
|Intel
|Intel
Line 67: Line 67:
|
|
|
|
|
|Nvidia's open source GPU driver for GSP-equipped graphics accelerators.
|-
|-
|Nvidia
|Nvidia
Line 75: Line 75:
|
|
|2022.10.12
|2022.10.12
|
|RPC
|
|Embedded firmware based on LibOS containing the [https://open-iov.org/index.php/GPU_Driver_Internals#RM_Core RM Core].
|-
|-
|Nvidia
|Nvidia
Line 86: Line 86:
|
|
|FBIF (Frame Buffer Interface) / GMMU
|FBIF (Frame Buffer Interface) / GMMU
|
|Embedded firmware which handles many aspects of the device including configuring the GPU's GMMU controller.
|-
|-
|Nvidia
|Nvidia
Line 96: Line 96:
|
|
|
|
|
|Configures the the nvidia-vgpu-mgr process.
|-
|-
|Nvidia
|Nvidia
Line 104: Line 104:
|
|
|[https://open-iov.org/index.php/GPU_Driver_Internals#Guest_kernel_(nvidia.ko) vRPC]
|[https://open-iov.org/index.php/GPU_Driver_Internals#Guest_kernel_(nvidia.ko) vRPC]
|[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop]
|[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop], IOCTL, vRPC, pRPC
|
|Handles IO to and from guest RM, host RM, and hardware.
|-
|-
|Nvidia
|Nvidia
Line 113: Line 113:
|
|
|
|
|
|[https://open-iov.org/index.php/GPU_Driver_Internals#vmiop vmiop]
|
|Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr.
|-
|-
|Nvidia
|Nvidia
Line 123: Line 123:
|
|
|[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]
|[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]
|
|Handles incremental memory mapping (non-page pinning per the standard vfio-pci driver).
|}
|}



Revision as of 20:10, 23 January 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 CLI Allocates GPU resources for use with virtualization. Registers devices and mdev callbacks with the Mediated Core.
Arc Compute gvm-mgr Daemon OSS docs.linux-gvm.org IOCTL, vRPC, pRPC 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).
Intel i915 SR-IOV Driver 5.15 OSS Intel's open source GPU driver for GuC-equipped graphics accelerators.
Intel GuC μOS Firmware Blob IOMMU Interrupts, Power Management Interrupts, GTT Handles scheduling, and power management.
Intel HuC Firmware Blob GTT Handles video encoding/decoding.
Nvidia OpenRM Driver 525 OSS Nvidia's open source GPU driver for GSP-equipped graphics accelerators.
Nvidia GSP RM (uproc) Firmware Blob 2022.10.12 RPC Embedded firmware based on LibOS containing the 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 v15 Blob Configures the the nvidia-vgpu-mgr process.
Nvidia nvidia-vgpu-mgr Daemon Blob vRPC vmiop, IOCTL, vRPC, pRPC Handles IO to and from guest RM, host RM, and hardware.
Nvidia libnvidiavgpu.so Library Blob vmiop Handles IO to and from guest RM, host RM, and hardware. Contains circular dependancies with nvidia-vgpu-mgr.
Nvidia nvidia_vgpu_vfio Driver Blob Type 1 IOMMU, irqfd, ioeventfd, IOCTL 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)