[Intel-gfx] 830GM still woes

Daniel Vetter daniel at ffwll.ch
Fri May 16 18:50:34 CEST 2014


On Fri, May 16, 2014 at 07:04:54PM +0300, Ville Syrjälä wrote:
> On Fri, May 16, 2014 at 05:09:53PM +0200, Daniel Vetter wrote:
> > On Fri, May 16, 2014 at 03:41:05PM +0100, Chris Wilson wrote:
> > > On Fri, May 16, 2014 at 04:02:48PM +0200, Thomas Richter wrote:
> > > > It's not that I haven't had a patch for it. Really trivial. I wonder
> > > > what keeps you from adding this to the kernel and just make things
> > > > working?
> > > 
> > > You mean this patch?
> > > 
> > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > > index f671aca..3981898 100644
> > > --- a/drivers/gpu/drm/i915/intel_pm.c
> > > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > > @@ -944,7 +944,7 @@ static const struct intel_watermark_params i915_wm_info = {
> > >  static const struct intel_watermark_params i830_wm_info = {
> > >         I855GM_FIFO_SIZE,
> > >         I915_MAX_WM,
> > > -       1,
> > > +       8,
> > >         2,
> > >         I830_FIFO_LINE_SIZE
> > >  };
> > > @@ -1001,7 +1001,7 @@ static unsigned long intel_calculate_wm(unsigned long clock_in_khz,
> > >         /* Don't promote wm_size to unsigned... */
> > >         if (wm_size > (long)wm->max_wm)
> > >                 wm_size = wm->max_wm;
> > > -       if (wm_size <= 0)
> > > +       if (wm_size < (long)wm->default_wm)
> > >                 wm_size = wm->default_wm;
> > >         return wm_size;
> > >  }
> > > 
> > > I haven't spotted any explanation as to why that is, but a rough guess
> > > would be that we program it to read in blocks of 8 superwords and that
> > > it tries and fails to read from memory when the fifo only has room for 1
> > > superword.
> > 
> > I have it - we need to proper align watermark limits and fifo sizes and
> > round them apparently. Bspec at least strongly suggests that, and it would
> > perfectly fit Thomas' symptoms.
> 
> Where have you seen that? And how should they be aligned? I've never
> seen anything like that in the spec. Also based on tests on my 830
> it doesn't need special alignment, it just needs some kind of minumum
> value that's always somewhere around 6-8 (IIRC).
> 
> I do see this note "Up to FIFO Size minus burst length + 32 bytes"
> in one of the tables in the display doc. I can't tell if that means
> 'fifo_size - (burst_size + 32B)' or 'fifo_size - burst_size + 32B'.
> But in any case would actually make the minimum allowed value 7 or 9
> since we always configure the burst size to 8.
> 
> On Gen3 the units change to 64B but it still has the same note with
> the +32B, so I'm not sure what should be done there. I guess it's
> just a copy paste fumble and maybe the same minimum value should
> still apply.

Yeah the burst size stuff - afaiu we should select the biggest one
possible and if that's not working out round the watermark up to match the
burst size. I didn't spot the +32/-32bytes anywhere though ... I guess
going with burst_size + 1 should be safest, especially if we make the code
more flexible to also allow a burst size of 4 for the really high-res
stuff.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list