Message ID | 20211105202021.181092-1-robdclark@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/msm/devfreq: Fix OPP refcnt leak | expand |
Hi, On Fri, Nov 5, 2021 at 1:15 PM Rob Clark <robdclark@gmail.com> wrote: > > From: Rob Clark <robdclark@chromium.org> > > Reported-by: Douglas Anderson <dianders@chromium.org> > Fixes: 9bc95570175a ("drm/msm: Devfreq tuning") > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/msm/msm_gpu_devfreq.c | 5 +++++ > 1 file changed, 5 insertions(+) Reviewed-by: Douglas Anderson <dianders@chromium.org>
On 11/5/21 3:20 PM, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > Reported-by: Douglas Anderson <dianders@chromium.org> > Fixes: 9bc95570175a ("drm/msm: Devfreq tuning") > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/msm/msm_gpu_devfreq.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c > index d32b729b4616..07f1169df89b 100644 > --- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c > +++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c > @@ -20,6 +20,10 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, > struct msm_gpu *gpu = dev_to_gpu(dev); > struct dev_pm_opp *opp; > > + /* > + * Note that devfreq_recommended_opp() can modify the freq > + * to something that actually is in the opp table: > + */ > opp = devfreq_recommended_opp(dev, freq, flags); > > /* > @@ -28,6 +32,7 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, > */ > if (gpu->devfreq.idle_freq) { > gpu->devfreq.idle_freq = *freq; > + dev_pm_opp_put(opp); > return 0; > } > Tested on the Lenovo Yoga C630 and don't see the message from v1 :D Tested-By: Steev Klimaszewski <steev@kali.org>
On 11/6/2021 1:50 AM, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > Reported-by: Douglas Anderson <dianders@chromium.org> > Fixes: 9bc95570175a ("drm/msm: Devfreq tuning") > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/msm/msm_gpu_devfreq.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c > index d32b729b4616..07f1169df89b 100644 > --- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c > +++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c > @@ -20,6 +20,10 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, > struct msm_gpu *gpu = dev_to_gpu(dev); > struct dev_pm_opp *opp; > > + /* > + * Note that devfreq_recommended_opp() can modify the freq > + * to something that actually is in the opp table: > + */ > opp = devfreq_recommended_opp(dev, freq, flags); > > /* > @@ -28,6 +32,7 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, > */ > if (gpu->devfreq.idle_freq) { > gpu->devfreq.idle_freq = *freq; > + dev_pm_opp_put(opp); > return 0; > } > > Reviewed-by: Akhil P Oommen <akhilpo@codeaurora.org> -Akhil
diff --git a/drivers/gpu/drm/msm/msm_gpu_devfreq.c b/drivers/gpu/drm/msm/msm_gpu_devfreq.c index d32b729b4616..07f1169df89b 100644 --- a/drivers/gpu/drm/msm/msm_gpu_devfreq.c +++ b/drivers/gpu/drm/msm/msm_gpu_devfreq.c @@ -20,6 +20,10 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, struct msm_gpu *gpu = dev_to_gpu(dev); struct dev_pm_opp *opp; + /* + * Note that devfreq_recommended_opp() can modify the freq + * to something that actually is in the opp table: + */ opp = devfreq_recommended_opp(dev, freq, flags); /* @@ -28,6 +32,7 @@ static int msm_devfreq_target(struct device *dev, unsigned long *freq, */ if (gpu->devfreq.idle_freq) { gpu->devfreq.idle_freq = *freq; + dev_pm_opp_put(opp); return 0; }