[Intel-gfx] [PATCH i-g-t 4/7] tests/gem_mmap_gtt: Make the small-bo tiling tests work on old platforms

Chris Wilson chris at chris-wilson.co.uk
Wed Dec 16 03:11:41 PST 2015


On Wed, Dec 16, 2015 at 11:46:50AM +0100, Daniel Vetter wrote:
> On Tue, Dec 15, 2015 at 12:30:54PM +0000, Chris Wilson wrote:
> > On Tue, Dec 15, 2015 at 02:01:24PM +0200, Ville Syrjälä wrote:
> > > On Tue, Dec 15, 2015 at 01:29:59PM +0200, Ville Syrjälä wrote:
> > > > On Tue, Dec 15, 2015 at 11:16:52AM +0000, Chris Wilson wrote:
> > > > > On Tue, Dec 15, 2015 at 12:57:15PM +0200, Ville Syrjälä wrote:
> > > > > > On Tue, Dec 15, 2015 at 09:57:22AM +0000, Chris Wilson wrote:
> > > > > > > On Tue, Dec 15, 2015 at 11:41:44AM +0200, Ville Syrjälä wrote:
> > > > > > > > On Mon, Dec 14, 2015 at 08:54:35PM +0000, Chris Wilson wrote:
> > > > > > > > > On Mon, Dec 14, 2015 at 08:49:38PM +0000, Chris Wilson wrote:
> > > > > > > > > > On Mon, Dec 14, 2015 at 10:15:53PM +0200, ville.syrjala at linux.intel.com wrote:
> > > > > > > > > > > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > > > > > > > > > 
> > > > > > > > > > > Several factors conspire against us when trying to execute
> > > > > > > > > > > the tiled small-bo tests:
> > > > > > > > > > > - pre-gen4 require power of two fences, with natural alignment
> > > > > > > > > > > - the entire gtt may be mappable
> > > > > > > > > > > - we put a guard page at the end of gtt
> > > > > > > > > > > 
> > > > > > > > > > > What all that means is that when we try to use a tiled object half
> > > > > > > > > > > the size of the mappable area, we can only fit it in the first half
> > > > > > > > > > > of the gtt. That leads to a SIGBUS when we try to fault in the
> > > > > > > > > > > object when there's already something (eg. fbdev) occupying the
> > > > > > > > > > > first half of gtt.
> > > > > > > > > > > 
> > > > > > > > > > > So in order to make the tests run on old machines, let's further
> > > > > > > > > > > halve the object size when things look too tight.
> > > > > > > > > > 
> > > > > > > > > > That defeats the point of the test. The idea is to have the two objects
> > > > > > > > > > that just don't fit, but only just.
> > > > > > > > > 
> > > > > > > > > i.e. the test is meant to show that the kernel heuristics for using
> > > > > > > > > partial vma do not prevent the page-fault-of-doom.
> > > > > > > > 
> > > > > > > > So just skip then?
> > > > > > > 
> > > > > > > The kernel has a bug that partial vma was supposed to address.
> > > > > > 
> > > > > > I'm not sure partial vma has any benefit in this case. Sure, you could
> > > > > > them mmap the thing but unless we teach the GPU to also use partial
> > > > > > mappings it won't do any good since we just can't fit the thing into
> > > > > > the gtt.
> > > > > 
> > > > > For gen2, not being able to fit into mappable is an issue for the GPU as
> > > > > well, sure. But for userspace being oblivious and *always* being able to
> > > > > use mmaping of a bo, it is a big deal. (Being oblivious helps with
> > > > > robustness in the stack, X/display-server-de-jour should not die just
> > > > > because of a resource conflict - now X should catch the fault and handle
> > > > > it, give or take bugs, avoiding that error path entirely is even better.)
> > > > 
> > > > Yeah, I suppose it would be nice not to SIGBUS even if userspace is
> > > > trying something a bit crazy. It would just get an error later from
> > > > execbuf when trying to use the bo with the GPU. So I guess the right
> > > > fix would be to fall back to partial vma if we fail to bind the full
> > > > vma.
> > > 
> > > Hmm, actaully no. This was about tiled objects, and we don't do
> > > tiled+partial at all currently. Would need to teach the code to do that
> > > first.
> > 
> > It's is one and the same fix ;) (Ok, same patchset!)
> 
> Yeah the problem is that partial views are stuck half-implemented, and
> seem to not move forward.
> 
> I'd just skip on gen2/3 tbh.

Oh, this is small-bo. Sorry for the digression. medium-bo is to exploit
the page-fault-of-doom.  small-bo is the one that is meant to always
work.

In that context, reducing the size of the small bo (just not to a single
page!) would be fine. And tiny-bo can be one page!
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list