Skip to content

Commit

Permalink
drm/msm/devfreq: Restrict idle clamping to a618 for now
Browse files Browse the repository at this point in the history
Until we better understand the stability issues caused by frequent
frequency changes, lets limit them to a618.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Tested-by: John Stultz <john.stultz@linaro.org>
Tested-by: Caleb Connolly <caleb.connolly@linaro.org>
Link: https://lore.kernel.org/r/20211018153627.2787882-1-robdclark@gmail.com
Signed-off-by: Rob Clark <robdclark@chromium.org>
  • Loading branch information
Rob Clark committed Oct 18, 2021
1 parent c8f01ff commit 5ca6779
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
7 changes: 7 additions & 0 deletions drivers/gpu/drm/msm/adreno/a6xx_gpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1838,6 +1838,13 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)
adreno_cmp_rev(ADRENO_REV(6, 3, 5, ANY_ID), info->rev)))
adreno_gpu->base.hw_apriv = true;

/*
* For now only clamp to idle freq for devices where this is known not
* to cause power supply issues:
*/
if (info && (info->revn == 618))
gpu->clamp_to_idle = true;

a6xx_llc_slices_init(pdev, a6xx_gpu);

ret = a6xx_set_supported_hw(&pdev->dev, config->rev);
Expand Down
4 changes: 4 additions & 0 deletions drivers/gpu/drm/msm/msm_gpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ struct msm_gpu {
uint32_t suspend_count;

struct msm_gpu_state *crashstate;

/* Enable clamping to idle freq when inactive: */
bool clamp_to_idle;

/* True if the hardware supports expanded apriv (a650 and newer) */
bool hw_apriv;

Expand Down
3 changes: 2 additions & 1 deletion drivers/gpu/drm/msm/msm_gpu_devfreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,8 @@ void msm_devfreq_idle(struct msm_gpu *gpu)

idle_freq = get_freq(gpu);

msm_devfreq_target(&gpu->pdev->dev, &target_freq, 0);
if (gpu->clamp_to_idle)
msm_devfreq_target(&gpu->pdev->dev, &target_freq, 0);

df->idle_time = ktime_get();
df->idle_freq = idle_freq;
Expand Down

0 comments on commit 5ca6779

Please sign in to comment.