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