On Thursday, October 23, 2008 5:09 pm Jesse Barnes wrote:
> On Thursday, October 23, 2008 3:51 pm Jesse Barnes wrote:
> > On Wednesday, October 22, 2008 2:42 pm Jesse Barnes wrote:
> > > Ok, this one actually works w/o corrupting your display.  However,
> > > after running for awhile I end up hitting the BUG_ON at
> > > i915_gem.c:1061, so I'm hoping someone can tell me where I messed up
> > > the list handling (the change in i915_gem_retire_request tries to deal
> > > with that, since the flushing list is also non-empty at leavevt time
> > > for some reason).
> >
> > Ok, some more details on this.  It looks like we're getting to unbind
> > with an active object, generally from get_fence but sometimes from other
> > paths too. The object is active so i915_gem_wait_rendering(obj) ends up
> > calling i915_wait_request() on it.  But the object itself isn't on any of
> > the lists: inactive, flushing, or active, which is probably why
> > wait_request doesn't end up clearing its active flag (even though its
> > seqno has passed).
> >
> > Also, I confirmed that i915_gem_object_set_domain wasn't queuing a
> > request with the object by putting the BUG_ON(obj->active) up above it,
> > so this seems to be just an object retirement bug of some kind...
>
> Here's the latest patch I'm playing with, which includes some fixes for
> things Eric noticed today:
>   - fixup errot paths in map_gtt_ioctl (don't leak refs, make sure to
> unlock) - remove mapped list, just add gtt mapped stuff to the inactive
> list (assuming this is the first time it's bound)
>   - don't allocate a fence register for every GTT bind, only do it for
> faulted objects (otherwise we end up just wasting them all)
>   - play with just zapping the page range from get_fence (this somewhat
>     works--it's more stable but there's some corruption, so either I'm not
>     zapping the previous map correctly or I'm setting the fences up wrong)
>
> As for the lists, I realized that the pinned front buffer probably won't be
> on any lists, at least to begin with, so that could explain what I saw
> earlier. However it should have a nonzero pin count so I don't know why
> we'd try to evict it...

Ugg, get_fence was pretty broken in the !reg case... fixing that makes things 
a bit more stable...

-- 
Jesse Barnes, Intel Open Source Technology Center


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to