From: Mario Limonciello <mario.limonciello@amd.com> To: <amd-gfx@lists.freedesktop.org> Cc: Qingqing Zhuo <qingqing.zhuo@amd.com>, Scott Bruce <smbruce@gmail.com>, Mario Limonciello <mario.limonciello@amd.com>, Chris Hixon <linux-kernel-bugs@hixontech.com>, spasswolf@web.de Subject: [PATCH v4 3/3] drm/amd/display: Use requested power state to avoid HPD WA during s0ix Date: Thu, 6 Jan 2022 10:30:54 -0600 [thread overview] Message-ID: <20220106163054.13781-3-mario.limonciello@amd.com> (raw) In-Reply-To: <20220106163054.13781-1-mario.limonciello@amd.com> The WA from commit 5965280abd30 ("drm/amd/display: Apply w/a for hard hang on HPD") causes a regression in s0ix where the system will fail to resume properly. This may be because an HPD was active the last time clocks were updated but clocks didn't get updated again during s0ix. So add an extra call to update clocks as part of the suspend routine: dm_suspend->dc_set_power_state->clk_mgr_optimize_pwr_state In case HPD is set during this time, also check if the call happened during suspend to allow overriding the WA. Cc: Qingqing Zhuo <qingqing.zhuo@amd.com> Reported-by: Scott Bruce <smbruce@gmail.com> Reported-by: Chris Hixon <linux-kernel-bugs@hixontech.com> Reported-by: spasswolf@web.de Link: https://bugzilla.kernel.org/show_bug.cgi?id=215436 Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1821 Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1852 Fixes: 5965280abd30 ("drm/amd/display: Apply w/a for hard hang on HPD") Fixes: 1bd3bc745e7f ("drm/amd/display: Extend w/a for hard hang on HPD to dcn20") Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- changes from v3->v4: * Move into new function * Explicitly check that current_state is active for safety * Change metadata from BugLink to Link changes from v2->v3: * stop depending on adev, get value of power state from display core changes from v1->v2: * Add fallthrough statement * Extend case to check if call was explicitly in s0ix since #1852 showed hpd_state can be set at this time too * Adjust commit message and title * Add extra commit and bug fixed to metadata drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c | 4 ++++ drivers/gpu/drm/amd/display/dc/core/dc.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c index 20974829f304..d2e1938555dc 100644 --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c @@ -129,6 +129,10 @@ static bool check_really_safe_to_lower(struct dc *dc, struct dc_state *context) if (display_count > 0) return false; + if (dc->current_state && + dc->current_state->power_state == DC_ACPI_CM_POWER_STATE_D3) + return true; + for (irq_src = DC_IRQ_SOURCE_HPD1; irq_src <= DC_IRQ_SOURCE_HPD5; irq_src++) { hpd_state = dc_get_hpd_state_dcn21(dc->res_pool->irqs, irq_src); if (hpd_state) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index 8edbb6c70512..716e055a61c9 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -3302,6 +3302,9 @@ void dc_set_power_state( } break; + case DC_ACPI_CM_POWER_STATE_D3: + clk_mgr_optimize_pwr_state(dc, dc->clk_mgr); + fallthrough; default: ASSERT(dc->current_state->stream_count == 0); /* Zero out the current context so that on resume we start with -- 2.25.1
prev parent reply other threads:[~2022-01-06 16:31 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-01-06 16:30 [PATCH v4 1/3] drm/amd/display: Add power_state member into current_state Mario Limonciello 2022-01-06 16:30 ` [PATCH v4 2/3] drm/amd/display: Split out checks for applying HPD WA into a separate function Mario Limonciello 2022-01-06 16:30 ` Mario Limonciello [this message]
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=20220106163054.13781-3-mario.limonciello@amd.com \ --to=mario.limonciello@amd.com \ --cc=amd-gfx@lists.freedesktop.org \ --cc=linux-kernel-bugs@hixontech.com \ --cc=qingqing.zhuo@amd.com \ --cc=smbruce@gmail.com \ --cc=spasswolf@web.de \ --subject='Re: [PATCH v4 3/3] drm/amd/display: Use requested power state to avoid HPD WA during s0ix' \ /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
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.