diff mbox series

drm/msm/gpu: Check the status of registration to PM QoS

Message ID 20241018111811.3534385-1-lukasz.luba@arm.com (mailing list archive)
State New
Headers show
Series drm/msm/gpu: Check the status of registration to PM QoS | expand

Commit Message

Lukasz Luba Oct. 18, 2024, 11:18 a.m. UTC
There is a need to check the returned value of the registration function.
In case of returned error, print that and stop the init process.

Fixes: 7c0ffcd40b16 ("drm/msm/gpu: Respect PM QoS constraints")
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/gpu/drm/msm/msm_gpu_devfreq.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Dmitry Baryshkov Oct. 18, 2024, 12:02 p.m. UTC | #1
On Fri, Oct 18, 2024 at 12:18:11PM +0100, Lukasz Luba wrote:
> There is a need to check the returned value of the registration function.

Why?

> In case of returned error, print that and stop the init process.
> 
> Fixes: 7c0ffcd40b16 ("drm/msm/gpu: Respect PM QoS constraints")
> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
> ---
>  drivers/gpu/drm/msm/msm_gpu_devfreq.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
Lukasz Luba Oct. 18, 2024, 2:20 p.m. UTC | #2
On 10/18/24 13:02, Dmitry Baryshkov wrote:
> On Fri, Oct 18, 2024 at 12:18:11PM +0100, Lukasz Luba wrote:
>> There is a need to check the returned value of the registration function.
> 
> Why?

The question can be:
why this driver doesn't check errors from frameworks during the
registration?

Is it a generic practice in that code (I hope not)?

When you check the API doc you will see that this fwk can fail and
return some error and the other functions in driver shouldn't
assume blindly that it was OK.

All other places in the kernel check that return value from
the PM QoS framework.

> 
>> In case of returned error, print that and stop the init process.
>>
>> Fixes: 7c0ffcd40b16 ("drm/msm/gpu: Respect PM QoS constraints")
>> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
>> ---
>>   drivers/gpu/drm/msm/msm_gpu_devfreq.c | 9 +++++++--
>>   1 file changed, 7 insertions(+), 2 deletions(-)
>>
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c
index ea70c1c32d940..6970b0f7f457c 100644
--- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c
+++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c
@@ -140,6 +140,7 @@  void msm_devfreq_init(struct msm_gpu *gpu)
 {
 	struct msm_gpu_devfreq *df = &gpu->devfreq;
 	struct msm_drm_private *priv = gpu->dev->dev_private;
+	int ret;
 
 	/* We need target support to do devfreq */
 	if (!gpu->funcs->gpu_busy)
@@ -156,8 +157,12 @@  void msm_devfreq_init(struct msm_gpu *gpu)
 
 	mutex_init(&df->lock);
 
-	dev_pm_qos_add_request(&gpu->pdev->dev, &df->boost_freq,
-			       DEV_PM_QOS_MIN_FREQUENCY, 0);
+	ret = dev_pm_qos_add_request(&gpu->pdev->dev, &df->boost_freq,
+				     DEV_PM_QOS_MIN_FREQUENCY, 0);
+	if (ret < 0) {
+		DRM_DEV_ERROR(&gpu->pdev->dev, "Couldn't initialize QoS\n");
+		return;
+	}
 
 	msm_devfreq_profile.initial_freq = gpu->fast_rate;