Re: [PATCH 2/2] drm/msm/gpu: Respect PM QoS constraints

From: Doug Anderson
Date: Fri Nov 05 2021 - 16:49:48 EST


Hi,

On Wed, Nov 3, 2021 at 1:59 PM Rob Clark <robdclark@xxxxxxxxx> wrote:
>
> From: Rob Clark <robdclark@xxxxxxxxxxxx>
>
> Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx>
> ---
> drivers/gpu/drm/msm/msm_gpu_devfreq.c | 31 +++++++++++++++++++++++++--
> 1 file changed, 29 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c
> index b24e5475cafb..427c55002f4d 100644
> --- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c
> +++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c
> @@ -158,6 +158,33 @@ void msm_devfreq_suspend(struct msm_gpu *gpu)
> devfreq_suspend_device(gpu->devfreq.devfreq);
> }
>
> +static void set_target(struct msm_gpu *gpu, unsigned long freq)
> +{
> + struct msm_gpu_devfreq *df = &gpu->devfreq;
> + unsigned long min_freq, max_freq;
> + u32 flags = 0;
> +
> + /*
> + * When setting the target freq internally, we need to apply PM QoS
> + * constraints (such as cooling):
> + */
> + min_freq = dev_pm_qos_read_value(df->devfreq->dev.parent,
> + DEV_PM_QOS_MIN_FREQUENCY);

Chatted with Rob offline about this, but to document on the lists for
those playing at home: the above function isn't exported to modules,
so this will fail with "allmodconfig".

In general this isn't the right approach here. I believe that the
right approach is to boost with freq_qos_update_request() and then
kick off a timer to stop boosting after a fixed period of time.


-Doug