https://bugs.freedesktop.org/show_bug.cgi?id=100941
Bug ID: 100941 Summary: Improve time to suspend on Product: DRI Version: DRI git Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: DRM/Radeon Assignee: dri-devel@lists.freedesktop.org Reporter: paulepanter@users.sourceforge.net
Created attachment 131223 --> https://bugs.freedesktop.org/attachment.cgi?id=131223&action=edit TML page generated by pm-graph (`sudo ./analyze_suspend.py -config config/suspend-callgraph.cfg`)
The ASRock E350M1 has a Radeon HD 6310.
``` $ sudo lspci -s 0:01.0 -nn -v 00:01.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Wrestler [Radeon HD 6310] [1002:9802] (prog-if 00 [VGA controller]) Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Wrestler [Radeon HD 6310] [1002:9802] Flags: bus master, fast devsel, latency 0, IRQ 28 Memory at e0000000 (32-bit, prefetchable) [size=256M] I/O ports at 2000 [size=256] Memory at f0100000 (32-bit, non-prefetchable) [size=256K] [virtual] Expansion ROM at 000c0000 [disabled] [size=128K] Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Kernel driver in use: radeon Kernel modules: radeon ```
With Debian Sid/unstable with Linux 4.9.25 suspend and resume times are benchmarked with pm-graph [1], and the command below.
``` sudo ./analyze_suspend.py -config config/suspend-callgraph.cfg ```
It turns out that with 258 ms the radeon module takes the majority of the time during suspend.
In that cycle one `radeon_bo_evict_vram` call takes the longest with 198 ms.
``` […] 459.186778 | 0) kworker-1495 | 0.974 us | radeon_fence_wait_empty [radeon](); 459.186780 | 0) kworker-1495 | 0.440 us | radeon_fence_wait_empty [radeon](); 459.186783 | 0) kworker-1495 | 0.501 us | radeon_fence_wait_empty [radeon](); 459.186785 | 0) kworker-1495 | 5.424 us | radeon_save_bios_scratch_regs [radeon](); 459.186793 | 0) kworker-1495 | 7625.511 us | evergreen_suspend [radeon](); 459.194422 | 0) kworker-1495 | 10.158 us | evergreen_hpd_fini [radeon](); 459.194434 | 0) kworker-1495 | 198203.3 us | radeon_bo_evict_vram [radeon](); […] ```
Please see the attached files for more details.