1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/amd/display/amdgpu_dm
Aurabindo Pillai d2aa135683 drm/amd/display: take dc_lock in short pulse handler only
[Why]
Conditions that end up modifying the global dc state must be locked.
However, during mst allocate payload sequence, lock is already taken.
With StarTech 1.2 DP hub, we get an HPD RX interrupt for a reason other
than to indicate down reply availability right after sending payload
allocation. The handler again takes dc lock before calling the
dc's HPD RX handler. Due to this contention, the DRM thread which waits
for MST down reply never gets a chance to finish its waiting
successfully and ends up timing out. Once the lock is released, the hpd
rx handler fires and goes ahead to read from the MST HUB, but now its
too late and the HUB doesnt lightup all displays since DRM lacks error
handling when payload allocation fails.

[How]
Take lock only if there is a change in link status or if automated test
pattern bit is set. The latter fixes the null pointer dereference when
running certain DP Link Layer Compliance test.

Fixes: c8ea79a8a2 ("drm/amd/display: NULL pointer error during compliance test")

Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-05-21 10:30:26 -04:00
..
amdgpu_dm.c drm/amd/display: take dc_lock in short pulse handler only 2021-05-21 10:30:26 -04:00
amdgpu_dm.h drm/amdgpu/display: add helper functions to get/set backlight (v2) 2021-05-19 22:44:31 -04:00
amdgpu_dm_color.c drm/amd/display/amdgpu_dm/amdgpu_dm_color: Demote a misuse and fix another kernel-doc header 2020-12-01 16:04:45 -05:00
amdgpu_dm_crc.c drm/amd/display: Avoid get/put vblank when stream disabled 2021-05-19 22:39:28 -04:00
amdgpu_dm_crc.h drm/amd/display: Refactor suspend/resume of Secure display 2021-05-19 22:39:16 -04:00
amdgpu_dm_debugfs.c drm/amd/display: multi-eDP backlight support 2021-05-10 18:06:44 -04:00
amdgpu_dm_debugfs.h drm/amd/display: Support crc on specific region 2021-03-05 15:11:47 -05:00
amdgpu_dm_hdcp.c drm/amd/display: Initialize attribute for hdcp_srm sysfs file 2021-05-13 10:46:06 -04:00
amdgpu_dm_hdcp.h drm/amdgpu/display: remove hdcp_srm sysfs on device removal 2021-02-18 16:43:08 -05:00
amdgpu_dm_helpers.c drm/amd/display: Add dc log for DP SST DSC enable/disable 2021-05-10 18:10:18 -04:00
amdgpu_dm_irq.c drm/amd/display: Support for DMUB AUX 2021-05-10 18:06:44 -04:00
amdgpu_dm_irq.h drm/amd/display: Support for DMUB AUX 2021-05-10 18:06:44 -04:00
amdgpu_dm_irq_params.h drm/amd/display: Support crc on specific region 2021-03-05 15:11:47 -05:00
amdgpu_dm_mst_types.c Merge tag 'amd-drm-next-5.14-2021-05-19' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2021-05-21 15:29:40 +10:00
amdgpu_dm_mst_types.h drm/amdgpu/display: create fake mst encoders ahead of time (v4) 2020-07-14 15:11:07 -04:00
amdgpu_dm_pp_smu.c drm/amd/pm: make DAL communicate with SMU through unified interfaces 2021-04-09 16:42:37 -04:00
amdgpu_dm_services.c drm/amd/display: Decouple amdgpu_dm_trace from service 2020-10-26 13:33:59 -04:00
amdgpu_dm_trace.h drm/amd/display: Add refresh rate trace 2021-04-09 16:47:57 -04:00
Makefile drm/amd/display: Create amdgpu_dm_hdcp 2019-10-03 09:10:58 -05:00