[Mesa-dev] [PATCH] i965: Fix GPU hangs when a blorp batch is the first thing to execute.

Kenneth Graunke kenneth at whitecape.org
Thu May 2 13:25:00 PDT 2013


On 05/02/2013 01:08 PM, Paul Berry wrote:
> On 2 May 2013 12:54, Chris Wilson <chris at chris-wilson.co.uk
> <mailto:chris at chris-wilson.co.uk>> wrote:
>
>     On Thu, May 02, 2013 at 09:07:08AM -0700, Eric Anholt wrote:
>      > Chris Wilson <chris at chris-wilson.co.uk
>     <mailto:chris at chris-wilson.co.uk>> writes:
>      >
>      > > On Thu, May 02, 2013 at 07:26:06AM -0700, Paul Berry wrote:
>      > >>    Can you provide a documentation reference for why the value
>     we're
>      > >>    currently programming (0xfffff001) is unsafe, and why
>     0x7fff0001 is
>      > >>    correct?� I don't see anything in the bspec.
>      > >
>      > > The largest GTT size for gen6 is 2GiB (it can be smaller on the
>     whim of
>      > > the BIOS, though we try to reset it back to 2GiB in i915.ko).
>     The upper
>      > > bound is used by the hardware to prevent invalid reads and
>     return 0,
>      > > this is the value we program to ~4GiB. The cause of these hangs
>     is the
>      > > constant data being read from addresses above 2GiB i.e. beyond
>     the end
>      > > of the GTT - and so prevented by programming the upper bound to
>     the end
>      > > of the GTT. Those with access to the simulator can hopefully verify
>      > > this, and perhaps we should add this to the set of known bad
>     commands in
>      > > igt.
>      >
>      > The simulator has no complaints about these batches.
>      >
>      > I don't think your model of how the constants work (that there's some
>      > undefined, possibly >2gb address being loaded at shader dispatch
>     time,
>      > which is fixed by sending these packets) is actually how they work --
>      > From my reading, the constants are loaded at constant packet time
>     into a
>      > small buffer on the GPU.  If the last packet and the shader disagree
>      > about that buffer, the GPU sometimes blows up.
>
>     That wouldn't explain why setting the DynamicStateUpperBound to 2GiB
>     also works around the hang, would it?
>     -Chris
>
>
> Oh, it wasn't clear from your previous email that this was the case.  In
> that case I like Ken's suggestion of setting the DynamicStateUpperBound
> to the end of the batch buffer.  I think it's sensible to apply Eric's
> fix as well, just to be on the safe side.
>
> Ken, how long ago did you bump the kernel requirement to ensure relaxed
> relocation support?  If it was recent, then Eric's fix should be the one
> we backport to stable releases.

About a month ago, on master.  So not on 9.1.

We should cherry-pick Eric's fix to 9.1 ASAP and do a release, hopefully 
next week sometime.


More information about the mesa-dev mailing list