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

Chris Wilson chris at chris-wilson.co.uk
Thu May 2 12:54:09 PDT 2013


On Thu, May 02, 2013 at 09:07:08AM -0700, Eric Anholt wrote:
> Chris Wilson <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

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the mesa-dev mailing list