summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2023-12-13 12:25:16 +0200
committerVille Syrjälä <ville.syrjala@linux.intel.com>2024-01-22 19:04:03 +0200
commit318ec320c6c7862bf592914d603c67256fa97cc0 (patch)
tree6b4ae28acda68c81991577e13aac63e95cbc4087
parentb5ad7ce024b3a866b3d510f121cfa5c1b3610adf (diff)
drm/i915: Move the min/max scanline sanity check into intel_vblank_evade()
There isn't really any reason to make the caller suffer through checking the vblank evasion min/max scanlines. If we somehow ended up with bogus values (which really shouldn't happen) then just skip the actual vblank evasion loop but otherwise plow ahead as normal. The only "real" change is that we now get+put a vblank reference even if the min/max values are bogus, previously we skipped directly to the end. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20231213102519.13500-7-ville.syrjala@linux.intel.com Reviewed-by: Uma Shankar <uma.shankar@intel.com>
-rw-r--r--drivers/gpu/drm/i915/display/intel_crtc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index 26a07b2219bf..11a6a4b0a258 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -544,6 +544,9 @@ static int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
DEFINE_WAIT(wait);
int scanline;
+ if (evade->min <= 0 || evade->max <= 0)
+ return 0;
+
for (;;) {
/*
* prepare_to_wait() has a memory barrier, which guarantees
@@ -633,8 +636,6 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
intel_crtc_vblank_work_init(new_crtc_state);
intel_vblank_evade_init(old_crtc_state, new_crtc_state, &evade);
- if (evade.min <= 0 || evade.max <= 0)
- goto irq_disable;
if (drm_WARN_ON(&dev_priv->drm, drm_crtc_vblank_get(&crtc->base)))
goto irq_disable;