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>
DEFINE_WAIT(wait);
int scanline;
+ if (evade->min <= 0 || evade->max <= 0)
+ return 0;
+
for (;;) {
/*
* prepare_to_wait() has a memory barrier, which guarantees
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;