| ============== | |
| AMDGPU DebugFS | |
| ============== | |
| The amdgpu driver provides a number of debugfs files to aid in debugging | |
| issues in the driver. These are usually found in | |
| /sys/kernel/debug/dri/<num>. | |
| DebugFS Files | |
| ============= | |
| amdgpu_benchmark | |
| ---------------- | |
| Run benchmarks using the DMA engine the driver uses for GPU memory paging. | |
| Write a number to the file to run the test. The results are written to the | |
| kernel log. VRAM is on device memory (dGPUs) or carve out (APUs) and GTT | |
| (Graphics Translation Tables) is system memory that is accessible by the GPU. | |
| The following tests are available: | |
| - 1: simple test, VRAM to GTT and GTT to VRAM | |
| - 2: simple test, VRAM to VRAM | |
| - 3: GTT to VRAM, buffer size sweep, powers of 2 | |
| - 4: VRAM to GTT, buffer size sweep, powers of 2 | |
| - 5: VRAM to VRAM, buffer size sweep, powers of 2 | |
| - 6: GTT to VRAM, buffer size sweep, common display sizes | |
| - 7: VRAM to GTT, buffer size sweep, common display sizes | |
| - 8: VRAM to VRAM, buffer size sweep, common display sizes | |
| amdgpu_test_ib | |
| -------------- | |
| Read this file to run simple IB (Indirect Buffer) tests on all kernel managed | |
| rings. IBs are command buffers usually generated by userspace applications | |
| which are submitted to the kernel for execution on an particular GPU engine. | |
| This just runs the simple IB tests included in the kernel. These tests | |
| are engine specific and verify that IB submission works. | |
| amdgpu_discovery | |
| ---------------- | |
| Provides raw access to the IP discovery binary provided by the GPU. Read this | |
| file to access the raw binary. This is useful for verifying the contents of | |
| the IP discovery table. It is chip specific. | |
| amdgpu_vbios | |
| ------------ | |
| Provides raw access to the ROM binary image from the GPU. Read this file to | |
| access the raw binary. This is useful for verifying the contents of the | |
| video BIOS ROM. It is board specific. | |
| amdgpu_evict_gtt | |
| ---------------- | |
| Evict all buffers from the GTT memory pool. Read this file to evict all | |
| buffers from this pool. | |
| amdgpu_evict_vram | |
| ----------------- | |
| Evict all buffers from the VRAM memory pool. Read this file to evict all | |
| buffers from this pool. | |
| amdgpu_gpu_recover | |
| ------------------ | |
| Trigger a GPU reset. Read this file to trigger reset the entire GPU. | |
| All work currently running on the GPU will be lost. | |
| amdgpu_ring_<name> | |
| ------------------ | |
| Provides read access to the kernel managed ring buffers for each ring <name>. | |
| These are useful for debugging problems on a particular ring. The ring buffer | |
| is how the CPU sends commands to the GPU. The CPU writes commands into the | |
| buffer and then asks the GPU engine to process it. This is the raw binary | |
| contents of the ring buffer. Use a tool like UMR to decode the rings into human | |
| readable form. | |
| amdgpu_mqd_<name> | |
| ----------------- | |
| Provides read access to the kernel managed MQD (Memory Queue Descriptor) for | |
| ring <name> managed by the kernel driver. MQDs define the features of the ring | |
| and are used to store the ring's state when it is not connected to hardware. | |
| The driver writes the requested ring features and metadata (GPU addresses of | |
| the ring itself and associated buffers) to the MQD and the firmware uses the MQD | |
| to populate the hardware when the ring is mapped to a hardware slot. Only | |
| available on engines which use MQDs. This provides access to the raw MQD | |
| binary. | |
| amdgpu_error_<name> | |
| ------------------- | |
| Provides an interface to set an error code on the dma fences associated with | |
| ring <name>. The error code specified is propagated to all fences associated | |
| with the ring. Use this to inject a fence error into a ring. | |
| amdgpu_pm_info | |
| -------------- | |
| Provides human readable information about the power management features | |
| and state of the GPU. This includes current GFX clock, Memory clock, | |
| voltages, average SoC power, temperature, GFX load, Memory load, SMU | |
| feature mask, VCN power state, clock and power gating features. | |
| amdgpu_firmware_info | |
| -------------------- | |
| Lists the firmware versions for all firmwares used by the GPU. Only | |
| entries with a non-0 version are valid. If the version is 0, the firmware | |
| is not valid for the GPU. | |
| amdgpu_fence_info | |
| ----------------- | |
| Shows the last signalled and emitted fence sequence numbers for each | |
| kernel driver managed ring. Fences are associated with submissions | |
| to the engine. Emitted fences have been submitted to the ring | |
| and signalled fences have been signalled by the GPU. Rings with a | |
| larger emitted fence value have outstanding work that is still being | |
| processed by the engine that owns that ring. When the emitted and | |
| signalled fence values are equal, the ring is idle. | |
| amdgpu_gem_info | |
| --------------- | |
| Lists all of the PIDs using the GPU and the GPU buffers that they have | |
| allocated. This lists the buffer size, pool (VRAM, GTT, etc.), and buffer | |
| attributes (CPU access required, CPU cache attributes, etc.). | |
| amdgpu_vm_info | |
| -------------- | |
| Lists all of the PIDs using the GPU and the GPU buffers that they have | |
| allocated as well as the status of those buffers relative to that process' | |
| GPU virtual address space (e.g., evicted, idle, invalidated, etc.). | |
| amdgpu_sa_info | |
| -------------- | |
| Prints out all of the suballocations (sa) by the suballocation manager in the | |
| kernel driver. Prints the GPU address, size, and fence info associated | |
| with each suballocation. The suballocations are used internally within | |
| the kernel driver for various things. | |
| amdgpu_<pool>_mm | |
| ---------------- | |
| Prints TTM information about the memory pool <pool>. | |
| amdgpu_vram | |
| ----------- | |
| Provides direct access to VRAM. Used by tools like UMR to inspect | |
| objects in VRAM. | |
| amdgpu_iomem | |
| ------------ | |
| Provides direct access to GTT memory. Used by tools like UMR to inspect | |
| GTT memory. | |
| amdgpu_regs_* | |
| ------------- | |
| Provides direct access to various register apertures on the GPU. Used | |
| by tools like UMR to access GPU registers. | |
| amdgpu_regs2 | |
| ------------ | |
| Provides an IOCTL interface used by UMR for interacting with GPU registers. | |
| amdgpu_sensors | |
| -------------- | |
| Provides an interface to query GPU power metrics (temperature, average | |
| power, etc.). Used by tools like UMR to query GPU power metrics. | |
| amdgpu_gca_config | |
| ----------------- | |
| Provides an interface to query GPU details (Graphics/Compute Array config, | |
| PCI config, GPU family, etc.). Used by tools like UMR to query GPU details. | |
| amdgpu_wave | |
| ----------- | |
| Used to query GFX/compute wave information from the hardware. Used by tools | |
| like UMR to query GFX/compute wave information. | |
| amdgpu_gpr | |
| ---------- | |
| Used to query GFX/compute GPR (General Purpose Register) information from the | |
| hardware. Used by tools like UMR to query GPRs when debugging shaders. | |
| amdgpu_gprwave | |
| -------------- | |
| Provides an IOCTL interface used by UMR for interacting with shader waves. | |
| amdgpu_fw_attestation | |
| --------------------- | |
| Provides an interface for reading back firmware attestation records. |