On Tue, Feb 11, 2020 at 10:55:29PM +0530, Anshuman Gupta wrote: > As a disabled pipe in pipe_mask is not having a valid intel crtc, > driver wrongly populates the possible_crtcs mask while initializing > the plane for a CRTC. Fixing up the plane possible_crtcs mask. > > changes since RFC: > - Simplify the possible_crtcs initialization. [Ville] > > v2: > - Removed the unnecessary stack garbage possible_crtcs to > drm_universal_plane_init. [Ville] > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Anshuman Gupta <anshuman.gupta@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_display.c | 13 +++++++++++++ > drivers/gpu/drm/i915/display/intel_sprite.c | 5 +---- > 2 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index a3649020ea97..5ba0b40fbfde 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -16768,6 +16768,18 @@ static void intel_crtc_free(struct intel_crtc *crtc) > kfree(crtc); > } > > +static void intel_plane_possible_crtcs_init(struct drm_i915_private *dev_priv) > +{ > + struct intel_plane *plane; > + > + for_each_intel_plane(&dev_priv->drm, plane) { > + struct intel_crtc *crtc; > + > + crtc = intel_get_crtc_for_pipe(dev_priv, plane->pipe); > + plane->base.possible_crtcs = drm_crtc_mask(&crtc->base); > + } > +} > + > static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe) > { > struct intel_plane *primary, *cursor; > @@ -17964,6 +17976,7 @@ int intel_modeset_init(struct drm_i915_private *i915) > } > } > > + intel_plane_possible_crtcs_init(i915); > intel_shared_dpll_init(dev); > intel_update_fdi_pll_freq(i915); > > diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c > index 7abeefe8dce5..b5c7b271a1a4 100644 > --- a/drivers/gpu/drm/i915/display/intel_sprite.c > +++ b/drivers/gpu/drm/i915/display/intel_sprite.c > @@ -3011,7 +3011,6 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv, > struct intel_plane *plane; > enum drm_plane_type plane_type; > unsigned int supported_rotations; > - unsigned int possible_crtcs; > const u64 *modifiers; > const u32 *formats; > int num_formats; > @@ -3066,10 +3065,8 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv, > else > plane_type = DRM_PLANE_TYPE_OVERLAY; > > - possible_crtcs = BIT(pipe); > - > ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, > - possible_crtcs, plane_funcs, > + 0, plane_funcs, > formats, num_formats, modifiers, > plane_type, > "plane %d%c", plane_id + 1, > -- > 2.24.0 -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx