mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 09:02:21 -04:00
[Why]
Rapid allow/disallow of idle optimization calls, whether it be IPS or
self-refresh features, can end up using more power if actual
time-in-idle is low. It can also spam DMUB command submission in a way
that prevents it from servicing other requestors.
[How]
Introduce the Idle State Manager (ISM) to amdgpu. It maintains a finite
state machine that uses a hysteresis to determine if a delay should be
inserted between a caller allowing idle, and when the actual idle
optimizations are programmed.
A second timer is also introduced to enable static screen optimizations
(SSO) such as PSR1 and Replay low HZ idle mode. Rapid SSO enable/disable
can have a negative power impact on some low hz video playback, and can
introduce user lag for PSR1 (due to up to 3 frames of sync latency).
This effectively rate-limits idle optimizations, based on hysteresis.
This also replaces the existing delay logic used for PSR1, allowing
drm_vblank_crtc_config.disable_immediate = true, and thus allowing
drm_crtc_vblank_restore().
v2:
* Loosen criteria for ISM to exit idle optimizations; it failed to exit
idle correctly on cursor updates when there are no drm_vblank
requestors,
* Document default_ism_config
* Convert pr_debug to trace events to reduce overhead on frequent
codepaths
* checkpatch.pl fixes
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/4527
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3709
Fixes: 58a261bfc9 ("drm/amd/display: use a more lax vblank enable policy for older ASICs")
Signed-off-by: Ray Wu <ray.wu@amd.com>
Signed-off-by: Leo Li <sunpeng.li@amd.com>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
62 lines
1.8 KiB
Makefile
62 lines
1.8 KiB
Makefile
#
|
|
# Copyright 2017 Advanced Micro Devices, Inc.
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
# copy of this software and associated documentation files (the "Software"),
|
|
# to deal in the Software without restriction, including without limitation
|
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
# and/or sell copies of the Software, and to permit persons to whom the
|
|
# Software is furnished to do so, subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in
|
|
# all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
# OTHER DEALINGS IN THE SOFTWARE.
|
|
#
|
|
#
|
|
# Makefile for the 'dm' sub-component of DAL.
|
|
# It provides the control and status of dm blocks.
|
|
|
|
|
|
|
|
ifneq ($(CONFIG_DRM_AMD_DC),)
|
|
AMDGPUDM = \
|
|
amdgpu_dm.o \
|
|
amdgpu_dm_plane.o \
|
|
amdgpu_dm_crtc.o \
|
|
amdgpu_dm_irq.o \
|
|
amdgpu_dm_mst_types.o \
|
|
amdgpu_dm_color.o \
|
|
amdgpu_dm_services.o \
|
|
amdgpu_dm_helpers.o \
|
|
amdgpu_dm_pp_smu.o \
|
|
amdgpu_dm_psr.o \
|
|
amdgpu_dm_replay.o \
|
|
amdgpu_dm_quirks.o \
|
|
amdgpu_dm_wb.o \
|
|
amdgpu_dm_colorop.o \
|
|
amdgpu_dm_ism.o
|
|
|
|
ifdef CONFIG_DRM_AMD_DC_FP
|
|
AMDGPUDM += dc_fpu.o
|
|
endif
|
|
|
|
AMDGPUDM += amdgpu_dm_hdcp.o
|
|
|
|
ifneq ($(CONFIG_DEBUG_FS),)
|
|
AMDGPUDM += amdgpu_dm_crc.o amdgpu_dm_debugfs.o
|
|
endif
|
|
|
|
subdir-ccflags-y += -I$(FULL_AMD_DISPLAY_PATH)/dc
|
|
|
|
AMDGPU_DM = $(addprefix $(AMDDALPATH)/amdgpu_dm/,$(AMDGPUDM))
|
|
|
|
AMD_DISPLAY_FILES += $(AMDGPU_DM)
|
|
endif
|