From: bugzilla-daemon@freedesktop.org
To: dri-devel@lists.freedesktop.org
Subject: [Bug 107375] Raven: `amdgpu_device_ip_resume_phase2()` takes 750 ms
Date: Wed, 25 Jul 2018 13:28:01 +0000 [thread overview]
Message-ID: <bug-107375-502@http.bugs.freedesktop.org/> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 2714 bytes --]
https://bugs.freedesktop.org/show_bug.cgi?id=107375
Bug ID: 107375
Summary: Raven: `amdgpu_device_ip_resume_phase2()` takes 750 ms
Product: DRI
Version: DRI git
Hardware: Other
OS: All
Status: NEW
Severity: normal
Priority: medium
Component: DRM/AMDgpu
Assignee: dri-devel@lists.freedesktop.org
Reporter: pmenzel+bugs.freedesktop@molgen.mpg.de
Created attachment 140810
--> https://bugs.freedesktop.org/attachment.cgi?id=140810&action=edit
HTML output of `sudo ./sleepgraph.py -config config/suspend-callgraph.cfg`
(devicelist: amdgpu, maxdepth: 12)
Profiling the suspend and resume time [1] on a MSI B350M MORTAR (MS-7A37) with
AMD Ryzen 3 2200G with Radeon Vega Graphics with Linux 4.18-rc6+ and
amd-staging-drm-next [2], `pci_pm_suspend()` takes over one second, which is
too long [3], cf. bug 107278 [3].
The majority of that, 750 ms, is spent in `amdgpu_device_ip_resume_phase2()`.
• amdgpu_device_ip_resume_phase2 [amdgpu] (747.134 ms @ 97.889371)
• psp_resume [amdgpu] (673.370 ms @ 97.889371)
[…]
• psp_hw_start [amdgpu] (88.577 ms @ 97.889379)
[…]
• psp_np_fw_load [amdgpu] (584.783 ms @ 97.977957)
[…]
• dm_resume [amdgpu] (44.992 ms @ 98.567232)
[…]
• dc_link_detect [amdgpu] (17.777 ms @ 98.568212)
(EDID read takes 8 ms?)
[…]
• drm_atomic_helper_resume (25.139 ms @ 98.587030)
[…]
[…]
In the PSP code the problem is `psp_cmd_submit_buf()`, which takes from 45 ms
to 141 ms. Something is wrong there.
```
static int
psp_cmd_submit_buf(struct psp_context *psp,
struct amdgpu_firmware_info *ucode,
struct psp_gfx_cmd_resp *cmd, uint64_t fence_mc_addr,
int index)
{
int ret;
memset(psp->cmd_buf_mem, 0, PSP_CMD_BUFFER_SIZE);
memcpy(psp->cmd_buf_mem, cmd, sizeof(struct psp_gfx_cmd_resp));
ret = psp_cmd_submit(psp, ucode, psp->cmd_buf_mc_addr,
fence_mc_addr, index);
while (*((unsigned int *)psp->fence_buf) != index) {
msleep(1);
}
return ret;
}
```
Also, I wonder why the sleep in the trace is 3 ms instead of 1 ms like in the
code.
[1]: https://01.org/suspendresume
[2]: https://cgit.freedesktop.org/~agd5f/linux/log/?h=amd-staging-drm-next
[3]: https://bugs.freedesktop.org/show_bug.cgi?id=107278
--
You are receiving this mail because:
You are the assignee for the bug.
[-- Attachment #1.2: Type: text/html, Size: 4787 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2018-07-25 13:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-25 13:28 bugzilla-daemon [this message]
2018-07-25 13:28 ` [Bug 107375] Raven: `amdgpu_device_ip_resume_phase2()` takes 750 ms bugzilla-daemon
2018-07-25 15:10 ` bugzilla-daemon
2018-07-25 15:54 ` bugzilla-daemon
2018-09-17 15:37 ` bugzilla-daemon
2019-11-19 8:45 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-107375-502@http.bugs.freedesktop.org/ \
--to=bugzilla-daemon@freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.