Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Documentation/gpu: include description of some of the GC microcontrollers

This is Alex' description from the "Looking for clarifications around gfx/kcq/kiq"
thread, edited to fit as ReST.

Original text: https://www.spinics.net/lists/amd-gfx/msg71383.html

Originally-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Yann Dirson <ydirson@free.fr>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Yann Dirson and committed by
Alex Deucher
19cd8c8b d59f1774

+35
+35
Documentation/gpu/amdgpu/driver-core.rst
··· 76 76 decode. It's exposed to userspace for user mode drivers (VA-API, 77 77 OpenMAX, etc.) 78 78 79 + Graphics and Compute Microcontrollers 80 + ------------------------------------- 81 + 82 + CP (Command Processor) 83 + The name for the hardware block that encompasses the front end of the 84 + GFX/Compute pipeline. Consists mainly of a bunch of microcontrollers 85 + (PFP, ME, CE, MEC). The firmware that runs on these microcontrollers 86 + provides the driver interface to interact with the GFX/Compute engine. 87 + 88 + MEC (MicroEngine Compute) 89 + This is the microcontroller that controls the compute queues on the 90 + GFX/compute engine. 91 + 92 + MES (MicroEngine Scheduler) 93 + This is a new engine for managing queues. This is currently unused. 94 + 95 + RLC (RunList Controller) 96 + This is another microcontroller in the GFX/Compute engine. It handles 97 + power management related functionality within the GFX/Compute engine. 98 + The name is a vestige of old hardware where it was originally added 99 + and doesn't really have much relation to what the engine does now. 100 + 79 101 Driver Structure 80 102 ================ 81 103 ··· 105 83 SoC and for things like init/fini/suspend/resume, more or less just 106 84 walks the list and handles each IP. 107 85 86 + Some useful constructs: 87 + 88 + KIQ (Kernel Interface Queue) 89 + This is a control queue used by the kernel driver to manage other gfx 90 + and compute queues on the GFX/compute engine. You can use it to 91 + map/unmap additional queues, etc. 92 + 93 + IB (Indirect Buffer) 94 + A command buffer for a particular engine. Rather than writing 95 + commands directly to the queue, you can write the commands into a 96 + piece of memory and then put a pointer to the memory into the queue. 97 + The hardware will then follow the pointer and execute the commands in 98 + the memory, then returning to the rest of the commands in the ring. 108 99 109 100 .. _amdgpu_memory_domains: 110 101