Quoting Ville Syrjala (2020-01-10 18:32:27) > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > intel_prepare_plane_fb() bails early if there is no fb (or rather > no obj, which is the same thing). intel_cleanup_plane_fb() does not. > This means the steps performed by intel_cleanup_plane_fb() aren't > balanced with with what was done intel_prepare_plane_fb() if there > is no fb for the plane. These hooks get called for every plane in > the state regardless of whether they have an fb or not. > > Add a matching null obj check to intel_cleanup_plane_fb() to restore > the balance. > > Note that intel_cleanup_plane_fb() has sufficient protections > already in place that the imbalance doesn't cause any real problems. > But having things be in balance seems nicer anyway, and might help > avoid some surprises in the future. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_display.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 27b43822344b..f79a6376bbf0 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -15868,6 +15868,10 @@ intel_cleanup_plane_fb(struct drm_plane *plane, > struct intel_atomic_state *state = > to_intel_atomic_state(old_plane_state->uapi.state); > struct drm_i915_private *dev_priv = to_i915(plane->dev); > + struct drm_i915_gem_object *obj = intel_fb_obj(old_plane_state->hw.fb); > + > + if (!obj) > + return; > > if (state->rps_interactive) { > intel_rps_mark_interactive(&dev_priv->gt.rps, false); Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx