linux/drivers/gpu/drm/amd/display/amdgpu_dm
Leo Li 83ca5fb40e drm/amd/display: Prevent OTG shutdown during PSR SU
[Why]

Enabling Z10 optimizations allows DMUB to disable the OTG during PSR
link-off. This theoretically saves power by putting more of the display
hardware to sleep. However, we observe that with PSR SU, it causes
visual artifacts, higher power usage, and potential system hang.

This is partly due to an odd behavior with the VStartup interrupt used
to signal DRM vblank events. If the OTG is toggled on/off during a PSR
link on/off cycle, the vstartup interrupt fires twice in quick
succession. This generates incorrectly timed vblank events.
Additionally, it can cause cursor updates to generate visual artifacts.

Note that this is not observed with PSR1 since PSR is fully disabled
when there are vblank event requestors. Cursor updates are also
artifact-free, likely because there are no selectively-updated (SU)
frames that can generate artifacts.

[How]

A potential solution is to disable z10 idle optimizations only when fast
updates (flips & cursor updates) are committed. A mechanism to do so
would require some thoughtful design. Let's just disable idle
optimizations for PSR2 for now.

Fixes: 7cc191ee76 ("drm/amd/display: Implement MPO PSR SU")
Reported-by: August Wikerfors <git@augustwikerfors.se>
Link: https://lore.kernel.org/r/c1f8886a-5624-8f49-31b1-e42b6d20dcf5@augustwikerfors.se/
Tested-by: August Wikerfors <git@augustwikerfors.se>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2022-09-29 10:07:42 -04:00
..
Makefile drm/amd/display: Create a file dedicated for CRTC 2022-07-25 09:31:01 -04:00
amdgpu_dm.c drm/amd/display: Fix double cursor on non-video RGB MPO 2022-09-21 17:18:15 -04:00
amdgpu_dm.h drm/amd/display: Add tags for indicating mst progress status 2022-07-20 16:04:42 -04:00
amdgpu_dm_color.c drm/amd: fix improper docstring syntax 2021-12-13 16:32:34 -05:00
amdgpu_dm_crc.c drm/amd/display: add connector type check for CRC source set 2021-12-01 17:08:47 -05:00
amdgpu_dm_crc.h drm/amd/display: Refactor suspend/resume of Secure display 2021-05-19 22:39:16 -04:00
amdgpu_dm_crtc.c drm/amd/display: Copy crc_skip_count when duplicating CRTC state 2022-07-25 17:18:08 -04:00
amdgpu_dm_crtc.h drm/amd/display: Create a file dedicated for CRTC 2022-07-25 09:31:01 -04:00
amdgpu_dm_debugfs.c drm/amd/display: fix memory leak when using debugfs_lookup() 2022-09-07 22:51:38 -04:00
amdgpu_dm_debugfs.h drm/amd/display: Move connector debugfs to drm 2022-05-23 11:27:44 +03:00
amdgpu_dm_hdcp.c drm/amd/display: Reboot while unplug hdcp enabled dp from mst hub 2022-07-25 17:15:50 -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: fix signedness bug in execute_synaptics_rc_command() 2022-07-28 16:05:16 -04:00
amdgpu_dm_irq.c drm/amd/display: do not disable an invalid irq source in hdp finish 2022-05-10 17:53:12 -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: Use vblank control events for PSR enable/disable 2021-08-16 15:35:56 -04:00
amdgpu_dm_mst_types.c drm/amd/display: Add tags for indicating mst progress status 2022-07-20 16:04:42 -04:00
amdgpu_dm_mst_types.h drm/amd/display: add mst port output bw check 2022-06-21 18:17:23 -04:00
amdgpu_dm_plane.c drm/amd/display: Include missing header 2022-08-19 17:06:55 -04:00
amdgpu_dm_plane.h drm/amd/display: Include missing header 2022-08-19 17:06:55 -04:00
amdgpu_dm_pp_smu.c drm/amd/pm: create a new holder for those APIs used only by legacy ASICs(si/kv) 2022-01-14 17:51:14 -05:00
amdgpu_dm_psr.c drm/amd/display: Prevent OTG shutdown during PSR SU 2022-09-29 10:07:42 -04:00
amdgpu_dm_psr.h drm/amd/display: Delay PSR entry 2021-06-21 17:45:14 -04:00
amdgpu_dm_services.c
amdgpu_dm_trace.h drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
dc_fpu.c drm/amd/display: Re-arrange FPU code structure for dcn2x 2021-10-06 15:49:24 -04:00
dc_fpu.h drm/amd/display: Add DC_FP helper to check FPU state 2021-08-05 21:17:59 -04:00