[Intel-gfx] [PATCH 1/2] drm/i915: Clean up pinned bo capture

Daniel Vetter daniel at ffwll.ch
Thu Dec 4 02:47:29 PST 2014


On Thu, Dec 04, 2014 at 09:11:10AM +0000, Chris Wilson wrote:
> On Wed, Dec 03, 2014 at 03:16:09PM +0100, Daniel Vetter wrote:
> > On Tue, Dec 02, 2014 at 04:46:38PM +0000, Chris Wilson wrote:
> > > On Tue, Dec 02, 2014 at 04:19:43PM +0100, Daniel Vetter wrote:
> > > >  /* Generate a semi-unique error code. The code is not meant to have meaning, The
> > > > @@ -1085,7 +1083,6 @@ static void i915_gem_capture_vm(struct drm_i915_private *dev_priv,
> > > >  				const int ndx)
> > > >  {
> > > >  	struct drm_i915_error_buffer *active_bo = NULL, *pinned_bo = NULL;
> > > > -	struct drm_i915_gem_object *obj;
> > > >  	struct i915_vma *vma;
> > > >  	int i;
> > > >  
> > > > @@ -1094,12 +1091,12 @@ static void i915_gem_capture_vm(struct drm_i915_private *dev_priv,
> > > >  		i++;
> > > >  	error->active_bo_count[ndx] = i;
> > > >  
> > > > -	list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
> > > > -		list_for_each_entry(vma, &obj->vma_list, vma_link)
> > > > -			if (vma->vm == vm && vma->pin_count > 0) {
> > > > -				i++;
> > > > +	if (i915_is_ggtt(vm)) {
> > > > +		list_for_each_entry(vma, &vm->inactive_list, mm_list) {
> > > > +			if (vma->pin_count == 0)
> > > >  				break;
> > > > -			}
> > > > +			i++;
> > > > +		}
> > > >  	}
> > > >  	error->pinned_bo_count[ndx] = i - error->active_bo_count[ndx];
> > > >  
> > > > @@ -1119,7 +1116,7 @@ static void i915_gem_capture_vm(struct drm_i915_private *dev_priv,
> > > >  		error->pinned_bo_count[ndx] =
> > > >  			capture_pinned_bo(pinned_bo,
> > > >  					  error->pinned_bo_count[ndx],
> > > > -					  &dev_priv->mm.bound_list, vm);
> > > > +					  &vm->inactive_list);
> > > 
> > > I much prefer this to be an iteraction over the bound_list and check if
> > > the object has a ggtt bound vma. Combined with the request to only print
> > > out the pinned bo in the GGTT, it becomes much clearer and doesn't need
> > > to result in the confusing "active + pinned for GGTT".
> > 
> > We do still want to dump active objects for the GGTT, e.g. shadow batch
> > (well we probably should add the GGTT vm to the dumper ...) and definitely
> > when full ppgtt isn't enabled (i.e. everything).
> > 
> > And if we dump the active list then I think we should scan only the
> > inactive list for pinned bo to avoid duplicate listing.
> 
> No. The pinned list includes the pinned active bo because it makes it
> easier for me when checking if the right objects are being pinned (I
> only have to crosscheck a single list rather than multiple).

But I've thought the point of patch 2 was to long longer have that
disdinction? Or why did you want to remove the separate pinned_bo list?
Throughroughly confused over here now ..
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list