drm/msm/gpu: Bypass PM QoS constraint for idle clamp
authorRob Clark <robdclark@chromium.org>
Tue, 10 Jan 2023 23:14:43 +0000 (15:14 -0800)
committerRob Clark <robdclark@chromium.org>
Mon, 16 Jan 2023 18:40:24 +0000 (10:40 -0800)
commitfadcc3ab1302d4e5baa32c272b658221f0066696
treeebf4601780315361f34dca1d75c0385176fdadf9
parent6563f60f14cbb3dcbdc4e1d8469fc0fbaaa80544
drm/msm/gpu: Bypass PM QoS constraint for idle clamp

Change idle freq clamping back to the direct method, bypassing PM QoS
requests.  The problem with using PM QoS requests is they call
(indirectly) the governors ->get_target_freq() which goes thru a
get_dev_status() cycle.  The problem comes when the GPU becomes active
again and we remove the idle-clamp request, we go through another
get_dev_status() cycle for the period that the GPU has been idle, which
triggers the governor to lower the target freq excessively.

This partially reverts commit 7c0ffcd40b16 ("drm/msm/gpu: Respect PM QoS
constraints"), but preserves the use of boost QoS request, so that it
will continue to play nicely with other QoS requests such as a cooling
device.  This also mostly undoes commit 78f815c1cf8f ("drm/msm: return the
average load over the polling period")

Signed-off-by: Rob Clark <robdclark@chromium.org>
Patchwork: https://patchwork.freedesktop.org/patch/517785/
Link: https://lore.kernel.org/r/20230110231447.1939101-3-robdclark@gmail.com
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
drivers/gpu/drm/msm/msm_gpu.h
drivers/gpu/drm/msm/msm_gpu_devfreq.c