From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>,
Daniel Wheeler <daniel.wheeler@amd.com>,
Qingqing Zhuo <qingqing.zhuo@amd.com>,
Alex Deucher <alexander.deucher@amd.com>,
Sasha Levin <sashal@kernel.org>,
harry.wentland@amd.com, sunpeng.li@amd.com,
christian.koenig@amd.com, Xinhui.Pan@amd.com, airlied@gmail.com,
daniel@ffwll.ch, Jun.Lei@amd.com, wenjing.liu@amd.com,
Aric.Cyr@amd.com, Alvin.Lee2@amd.com, duncan.ma@amd.com,
mwen@igalia.com, Yi-Ling.Chen2@amd.com, aurabindo.pillai@amd.com,
jiapeng.chong@linux.alibaba.com, Sungjoon.Kim@amd.com,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: [PATCH AUTOSEL 6.0 27/30] drm/amd/display: Remove wrong pipe control lock
Date: Sun, 6 Nov 2022 12:03:39 -0500 [thread overview]
Message-ID: <20221106170345.1579893-27-sashal@kernel.org> (raw)
In-Reply-To: <20221106170345.1579893-1-sashal@kernel.org>
From: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
[ Upstream commit ca08a1725d0d78efca8d2dbdbce5ea70355da0f2 ]
When using a device based on DCN32/321,
we have an issue where a second
4k@60Hz display does not light up,
and the system becomes unresponsive
for a few minutes. In the debug process,
it was possible to see a hang
in the function dcn20_post_unlock_program_front_end
in this part:
for (j = 0; j < TIMEOUT_FOR_PIPE_ENABLE_MS*1000
&& hubp->funcs->hubp_is_flip_pending(hubp); j++)
mdelay(1);
}
The hubp_is_flip_pending always returns positive
for waiting pending flips which is a symptom of
pipe hang. Additionally, the dmesg log shows
this message after a few minutes:
BUG: soft lockup - CPU#4 stuck for 26s!
...
[ +0.000003] dcn20_post_unlock_program_front_end+0x112/0x340 [amdgpu]
[ +0.000171] dc_commit_state_no_check+0x63d/0xbf0 [amdgpu]
[ +0.000155] ? dc_validate_global_state+0x358/0x3d0 [amdgpu]
[ +0.000154] dc_commit_state+0xe2/0xf0 [amdgpu]
This confirmed the hypothesis that we had a pipe
hanging somewhere. Next, after checking the
ftrace entries, we have the below weird
sequence:
[..]
2) | dcn10_lock_all_pipes [amdgpu]() {
2) 0.120 us | optc1_is_tg_enabled [amdgpu]();
2) | dcn20_pipe_control_lock [amdgpu]() {
2) | dc_dmub_srv_clear_inbox0_ack [amdgpu]() {
2) 0.121 us | amdgpu_dm_dmub_reg_write [amdgpu]();
2) 0.551 us | }
2) | dc_dmub_srv_send_inbox0_cmd [amdgpu]() {
2) 0.110 us | amdgpu_dm_dmub_reg_write [amdgpu]();
2) 0.511 us | }
2) | dc_dmub_srv_wait_for_inbox0_ack [amdgpu]() {
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
2) 0.110 us | amdgpu_dm_dmub_reg_read [amdgpu]();
[..]
We are not expected to read from dmub register
so many times and for so long. From the trace log,
it was possible to identify that the function
dcn20_pipe_control_lock was triggering the dmub
operation when it was unnecessary and causing
the hang issue. This commit drops the unnecessary
dmub code and, consequently, fixes the second display not
lighting up the issue.
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
index 598ce872a8d7..0f30df523fdf 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
@@ -1262,16 +1262,6 @@ void dcn20_pipe_control_lock(
lock,
&hw_locks,
&inst_flags);
- } else if (pipe->stream && pipe->stream->mall_stream_config.type == SUBVP_MAIN) {
- union dmub_inbox0_cmd_lock_hw hw_lock_cmd = { 0 };
- hw_lock_cmd.bits.command_code = DMUB_INBOX0_CMD__HW_LOCK;
- hw_lock_cmd.bits.hw_lock_client = HW_LOCK_CLIENT_DRIVER;
- hw_lock_cmd.bits.lock_pipe = 1;
- hw_lock_cmd.bits.otg_inst = pipe->stream_res.tg->inst;
- hw_lock_cmd.bits.lock = lock;
- if (!lock)
- hw_lock_cmd.bits.should_release = 1;
- dmub_hw_lock_mgr_inbox0_cmd(dc->ctx->dmub_srv, hw_lock_cmd);
} else if (pipe->plane_state != NULL && pipe->plane_state->triplebuffer_flips) {
if (lock)
pipe->stream_res.tg->funcs->triplebuffer_lock(pipe->stream_res.tg);
@@ -1848,7 +1838,7 @@ void dcn20_post_unlock_program_front_end(
for (j = 0; j < TIMEOUT_FOR_PIPE_ENABLE_MS*1000
&& hubp->funcs->hubp_is_flip_pending(hubp); j++)
- mdelay(1);
+ udelay(1);
}
}
--
2.35.1
next prev parent reply other threads:[~2022-11-06 17:06 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-06 17:03 [PATCH AUTOSEL 6.0 01/30] drm/msm/gpu: Fix crash during system suspend after unbind Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 02/30] spi: tegra210-quad: Fix combined sequence Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 03/30] ASoC: wm5102: Revert "ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe" Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 04/30] ASoC: wm5110: Revert "ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe" Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 05/30] ASoC: wm8997: Revert "ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe" Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 06/30] ASoC: mt6660: Keep the pm_runtime enables before component stuff in mt6660_i2c_probe Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 07/30] ASoC: rt5682s: Fix the TDM Tx settings Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 08/30] ASoC: rt1019: Fix the TDM settings Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 09/30] ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 10/30] spi: intel: Fix the offset to get the 64K erase opcode Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 11/30] ASoC: codecs: jz4725b: add missed Line In power control bit Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 12/30] ASoC: codecs: jz4725b: fix reported volume for Master ctl Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 13/30] ASoC: codecs: jz4725b: use right control for Capture Volume Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 14/30] ASoC: codecs: jz4725b: fix capture selector naming Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 15/30] ASoC: Intel: sof_sdw: add quirk variant for LAPBC710 NUC15 Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 16/30] selftests/futex: fix build for clang Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 17/30] selftests/intel_pstate: fix build for ARCH=x86_64 Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 18/30] selftests/kexec: " Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 19/30] ASoC: Intel: sof_rt5682: Add quirk for Rex board Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 20/30] rtc: cmos: fix build on non-ACPI platforms Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 21/30] ASoC: rt1308-sdw: add the default value of some registers Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 22/30] ASoC: amd: yc: Adding Lenovo ThinkBook 14 Gen 4+ ARA and Lenovo ThinkBook 16 Gen 4+ ARA to the Quirks List Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 23/30] ASoC: amd: yc: Add Lenovo Thinkbook 14+ 2022 21D0 to quirks table Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 24/30] drm/amdgpu: Adjust MES polling timeout for sriov Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 25/30] platform/x86: thinkpad_acpi: Fix reporting a non present second fan on some models Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 26/30] platform/x86/intel: pmc/core: Add Raptor Lake support to pmc core driver Sasha Levin
2022-11-06 17:03 ` Sasha Levin [this message]
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 28/30] drm/amd/display: Don't return false if no stream Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 29/30] drm/scheduler: fix fence ref counting Sasha Levin
2022-11-06 17:03 ` [PATCH AUTOSEL 6.0 30/30] ACPI: scan: Add LATT2021 to acpi_ignore_dep_ids[] Sasha Levin
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=20221106170345.1579893-27-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=Alvin.Lee2@amd.com \
--cc=Aric.Cyr@amd.com \
--cc=Jun.Lei@amd.com \
--cc=Rodrigo.Siqueira@amd.com \
--cc=Sungjoon.Kim@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=Yi-Ling.Chen2@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=aurabindo.pillai@amd.com \
--cc=christian.koenig@amd.com \
--cc=daniel.wheeler@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=duncan.ma@amd.com \
--cc=harry.wentland@amd.com \
--cc=jiapeng.chong@linux.alibaba.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mwen@igalia.com \
--cc=qingqing.zhuo@amd.com \
--cc=stable@vger.kernel.org \
--cc=sunpeng.li@amd.com \
--cc=wenjing.liu@amd.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox