On Tue, Jan 22, 2019 at 02:49:13PM +0530, Mahesh Kumar wrote: > Hi, > > > On Mon, Jan 21, 2019 at 9:01 PM Ville Syrjala > <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > > > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > The code managing the dbuf slices is borked and needs some > > real work to fix. In the meantime let's just stop using the > > second slice. > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_pm.c | 10 ++++++++-- > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_pm.c > b/drivers/gpu/drm/i915/intel_pm.c > > index 8b63afa3a221..1e41c899ffe2 100644 > > --- a/drivers/gpu/drm/i915/intel_pm.c > > +++ b/drivers/gpu/drm/i915/intel_pm.c > > @@ -3618,7 +3618,8 @@ static u8 > intel_enabled_dbuf_slices_num(struct drm_i915_private *dev_priv) > > enabled_slices = 1; > > > > /* Gen prior to GEN11 have only one DBuf slice */ > > - if (INTEL_GEN(dev_priv) < 11) > > + /* FIXME dbuf slice code is broken: see intel_get_ddb_size() */ > > + if (1 || INTEL_GEN(dev_priv) < 11) > > return enabled_slices; > > IMHO we may not need this, It's easier to pretend that we have only a single slice. Not sure for instance if the lack of the above would lead to state check errors (due to other problems in the dbuf silce implementation). > If we return from above we'll never disable > second slice in case it's enabled by bios. We'll disable whenever we need to, that is during suspend/driver unload. We can ignore the rest of the cases I think. > Anyhow code change in intel_get_ddb_size will take care of enabling > only one slice. > > > > > if (I915_READ(DBUF_CTL_S2) & DBUF_POWER_STATE) > > @@ -3827,8 +3828,13 @@ static u16 intel_get_ddb_size(struct > drm_i915_private *dev_priv, > > > > /* > > * 12GB/s is maximum BW supported by single DBuf slice. > > + * > > + * FIXME dbuf slice code is broken: > > + * - must wait for planes to stop using the slice before > powering it off > > AFAIR we were already doing it and disabling slice only after > update_crtcs, and skl_update_crtc code is taking care of waiting for > vblank in case it's required. > > > + * - plane straddling both slices is illegal in > multi-pipe scenarios > > This is something new :) > > although this change introduce a major limitation with number and size > of planes we can display, yet > As code is broken and mentioned conditions need to be taken care of, > This change should be ok until proper fix. > > ~Mahesh > > > + * - should validate we stay within the hw bandwidth limits > > */ > > - if (num_active > 1 || total_data_bw >= GBps(12)) { > > + if (0 && (num_active > 1 || total_data_bw >= GBps(12))) { > > ddb->enabled_slices = 2; > > } else { > > ddb->enabled_slices = 1; > > -- > > 2.19.2 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx