| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- ===============
- GPU Debugging
- ===============
- General Debugging Options
- =========================
- The DebugFS section provides documentation on a number files to aid in debugging
- issues on the GPU.
- GPUVM Debugging
- ===============
- To aid in debugging GPU virtual memory related problems, the driver supports a
- number of options module parameters:
- `vm_fault_stop` - If non-0, halt the GPU memory controller on a GPU page fault.
- `vm_update_mode` - If non-0, use the CPU to update GPU page tables rather than
- the GPU.
- Decoding a GPUVM Page Fault
- ===========================
- If you see a GPU page fault in the kernel log, you can decode it to figure
- out what is going wrong in your application. A page fault in your kernel
- log may look something like this:
- ::
- [gfxhub0] no-retry page fault (src_id:0 ring:24 vmid:3 pasid:32777, for process glxinfo pid 2424 thread glxinfo:cs0 pid 2425)
- in page starting at address 0x0000800102800000 from IH client 0x1b (UTCL2)
- VM_L2_PROTECTION_FAULT_STATUS:0x00301030
- Faulty UTCL2 client ID: TCP (0x8)
- MORE_FAULTS: 0x0
- WALKER_ERROR: 0x0
- PERMISSION_FAULTS: 0x3
- MAPPING_ERROR: 0x0
- RW: 0x0
- First you have the memory hub, gfxhub and mmhub. gfxhub is the memory
- hub used for graphics, compute, and sdma on some chips. mmhub is the
- memory hub used for multi-media and sdma on some chips.
- Next you have the vmid and pasid. If the vmid is 0, this fault was likely
- caused by the kernel driver or firmware. If the vmid is non-0, it is generally
- a fault in a user application. The pasid is used to link a vmid to a system
- process id. If the process is active when the fault happens, the process
- information will be printed.
- The GPU virtual address that caused the fault comes next.
- The client ID indicates the GPU block that caused the fault.
- Some common client IDs:
- - CB/DB: The color/depth backend of the graphics pipe
- - CPF: Command Processor Frontend
- - CPC: Command Processor Compute
- - CPG: Command Processor Graphics
- - TCP/SQC/SQG: Shaders
- - SDMA: SDMA engines
- - VCN: Video encode/decode engines
- - JPEG: JPEG engines
- PERMISSION_FAULTS describe what faults were encountered:
- - bit 0: the PTE was not valid
- - bit 1: the PTE read bit was not set
- - bit 2: the PTE write bit was not set
- - bit 3: the PTE execute bit was not set
- Finally, RW, indicates whether the access was a read (0) or a write (1).
- In the example above, a shader (cliend id = TCP) generated a read (RW = 0x0) to
- an invalid page (PERMISSION_FAULTS = 0x3) at GPU virtual address
- 0x0000800102800000. The user can then inspect their shader code and resource
- descriptor state to determine what caused the GPU page fault.
- UMR
- ===
- `umr <https://gitlab.freedesktop.org/tomstdenis/umr>`_ is a general purpose
- GPU debugging and diagnostics tool. Please see the umr
- `documentation <https://umr.readthedocs.io/en/main/>`_ for more information
- about its capabilities.
- Debugging backlight brightness
- ==============================
- Default backlight brightness is intended to be set via the policy advertised
- by the firmware. Firmware will often provide different defaults for AC or DC.
- Furthermore, some userspace software will save backlight brightness during
- the previous boot and attempt to restore it.
- Some firmware also has support for a feature called "Custom Backlight Curves"
- where an input value for brightness is mapped along a linearly interpolated
- curve of brightness values that better match display characteristics.
- In the event of problems happening with backlight, there is a trace event
- that can be enabled at bootup to log every brightness change request.
- This can help isolate where the problem is. To enable the trace event add
- the following to the kernel command line:
- tp_printk trace_event=amdgpu_dm:amdgpu_dm_brightness:mod:amdgpu trace_buf_size=1M
|