`ttm_bo_handle_move_mem` sometimes takes more than 50 ms
Submitted by Paul Menzel
Assigned to Default DRI bug account
Link to original bug (#111305)
Description
Created attachment 144954
Screenshot from callgraph excerpt
With Linux 5.3-rc3 and pm-graph’s sleepgraph.py
[1] measuring suspend times on the Dell OptiPlex 5040 with an external AMD graphics card, the driver needs 2.1 seconds to suspend the device, which is too long.
$ lspci -nn -s 01:
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Oland XT [Radeon HD 8670 / R7 250/350] [1002:6610] (rev 81)
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
Here is the time:
0000:01:00.0 suspend (2170.017 ms @ 5037.143762 to 5039.313779)
Looking into the call graph, 1.4 s are spent in ttm_bo_evict_mm
.
ttm_bo_evict_mm [ttm] (1438.050 ms @ 5037.601941)
As you can see in the attached screenshot, there are some ttm_bo_handle_move_mem
call which take several milliseconds adding up to the long time.
- ttm_mem_evict_first [ttm] (304.860 ms @ 5037.705809)
_raw_spin_lock
mutex_trylock (0.000 ms @ 5037.705809)
+ ttm_bo_del_from_lru [ttm]
- ttm_bo_evict [ttm] (304.857 ms @ 5037.705810)
amdgpu_evict_flags [amdgpu] (0.000 ms @ 5037.705810)
ttm_bo_mem_space [ttm] (0.001 ms @ 5037.705811)
ttm_bo_handle_move_mem [ttm] (304.853 ms @ 5037.705812)
[1]: https://github.com/intel/pm-graph
Attachment 144954, "Screenshot from callgraph excerpt":