GPU Driver Internals
This page will detail the internals of various GPU drivers for use with I/O Virtualization.
i915
Scheduling
In-VM Scheduling
vExeclist
vGuC
vGuC is a command submission interface used to process commands to the Intel Graphics Microcontroller (GuC).
Between-VM Scheduling
Memory Management
i915 Clients
GTT (Graphics Translation Table)
GPU Memory on-device is a part of a GTT or Graphics Translation Table. This table stores information globally for all graphics processes within the system. Some processes access the GTT such as DRI while other's receive a Per-Process Graphics Translation Table (PPGTT) buffer based on their i915 Client ID.
PPGTT (Per Process Graphics Translation Table)
Aliasing PPGTT
Real PPGTT
OpenRM
Scheduling
In-VM Scheduling
gpu-mgr
Between-VM Scheduling
nvidia.ko
Memory Management
RM Clients
amdgpu
Citations (Talks and Reading Material)
- 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