diff mbox series

[1/3] drm/i915/display: Do not schedule DRRS work thread when it is not active

Message ID 20220428211058.399630-1-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/3] drm/i915/display: Do not schedule DRRS work thread when it is not active | expand

Commit Message

Souza, Jose April 28, 2022, 9:10 p.m. UTC
Frontbuffer updates were scheduling the execution of DRRS work thread
even if DRRS is not active.
There was no issues with it because intel_drrs_downclock_work() checks
if DRRS is active but there is no reason to keep scheduling this work
thread and wasting CPU time.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_drrs.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Ville Syrjälä April 29, 2022, 4 p.m. UTC | #1
On Thu, Apr 28, 2022 at 02:10:56PM -0700, José Roberto de Souza wrote:
> Frontbuffer updates were scheduling the execution of DRRS work thread
> even if DRRS is not active.
> There was no issues with it because intel_drrs_downclock_work() checks
> if DRRS is active but there is no reason to keep scheduling this work
> thread and wasting CPU time.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_drrs.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
> index 166caf293f7bc..04bc296761be0 100644
> --- a/drivers/gpu/drm/i915/display/intel_drrs.c
> +++ b/drivers/gpu/drm/i915/display/intel_drrs.c
> @@ -236,6 +236,11 @@ static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv,
>  		else
>  			crtc->drrs.busy_frontbuffer_bits &= ~frontbuffer_bits;
>  
> +		if (!intel_drrs_is_active(crtc)) {
> +			mutex_unlock(&crtc->drrs.mutex);
> +			continue;
> +		}

Should be impossible due to crtc->drrs.frontbuffer_bits==0.

> +
>  		/* flush/invalidate means busy screen hence upclock */
>  		intel_drrs_set_state(crtc, DRRS_REFRESH_RATE_HIGH);
>  
> -- 
> 2.36.0
Souza, Jose April 29, 2022, 9:23 p.m. UTC | #2
On Fri, 2022-04-29 at 19:00 +0300, Ville Syrjälä wrote:
> On Thu, Apr 28, 2022 at 02:10:56PM -0700, José Roberto de Souza wrote:
> > Frontbuffer updates were scheduling the execution of DRRS work thread
> > even if DRRS is not active.
> > There was no issues with it because intel_drrs_downclock_work() checks
> > if DRRS is active but there is no reason to keep scheduling this work
> > thread and wasting CPU time.
> > 
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_drrs.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
> > index 166caf293f7bc..04bc296761be0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_drrs.c
> > +++ b/drivers/gpu/drm/i915/display/intel_drrs.c
> > @@ -236,6 +236,11 @@ static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv,
> >  		else
> >  			crtc->drrs.busy_frontbuffer_bits &= ~frontbuffer_bits;
> >  
> > +		if (!intel_drrs_is_active(crtc)) {
> > +			mutex_unlock(&crtc->drrs.mutex);
> > +			continue;
> > +		}
> 
> Should be impossible due to crtc->drrs.frontbuffer_bits==0.

Yep, my bad this patch is not needed.
Can you review the remaining?

I have one more patch to this series that avoids DP link configuration change during seamless mode change, when possible.
Planning to send new version with this patch any other changes that you request.

thanks

> 
> > +
> >  		/* flush/invalidate means busy screen hence upclock */
> >  		intel_drrs_set_state(crtc, DRRS_REFRESH_RATE_HIGH);
> >  
> > -- 
> > 2.36.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
index 166caf293f7bc..04bc296761be0 100644
--- a/drivers/gpu/drm/i915/display/intel_drrs.c
+++ b/drivers/gpu/drm/i915/display/intel_drrs.c
@@ -236,6 +236,11 @@  static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv,
 		else
 			crtc->drrs.busy_frontbuffer_bits &= ~frontbuffer_bits;
 
+		if (!intel_drrs_is_active(crtc)) {
+			mutex_unlock(&crtc->drrs.mutex);
+			continue;
+		}
+
 		/* flush/invalidate means busy screen hence upclock */
 		intel_drrs_set_state(crtc, DRRS_REFRESH_RATE_HIGH);