[Intel-gfx] [PATCH 01/10] drm/i915: Move map-and-fenceable tracking to the VMA

Chris Wilson chris at chris-wilson.co.uk
Mon Aug 15 08:14:29 UTC 2016


On Mon, Aug 15, 2016 at 11:03:32AM +0300, Joonas Lahtinen wrote:
> On pe, 2016-08-12 at 11:28 +0100, Chris Wilson wrote:
> Not sure if there should be a comment that for 1:1 mappings vma->pages
> is just obj->pages so it should not be freed. Or maybe you could even
> make the test if vma->pages != vma->obj->pages? More self-documenting.

I contemplated making this vma->pages != vma->obj->pages as well in
light of the recent changes, will do.
> 
> > +	if (vma->ggtt_view.type != I915_GGTT_VIEW_NORMAL) {
> > +		sg_free_table(vma->pages);
> > +		kfree(vma->pages);
> >  	}
> >  	vma->pages = NULL;
> 
> <SNIP>
> 
> > @@ -3693,7 +3687,10 @@ void __i915_vma_set_map_and_fenceable(struct i915_vma *vma)
> 
> This might also clear, so function name should be
> update_map_and_fenceable, really.

update/compute either is a fine TODO ;)
 
> > @@ -2262,11 +2262,11 @@ void intel_unpin_fb_obj(struct drm_framebuffer *fb, unsigned int rotation)
> >  	WARN_ON(!mutex_is_locked(&obj->base.dev->struct_mutex));
> >  
> >  	intel_fill_fb_ggtt_view(&view, fb, rotation);
> > +	vma = i915_gem_object_to_ggtt(obj, &view);
> >  
> > -	if (view.type == I915_GGTT_VIEW_NORMAL)
> > +	if (i915_vma_is_map_and_fenceable(vma))
> >  		i915_gem_object_unpin_fence(obj);
> >  
> > -	vma = i915_gem_object_to_ggtt(obj, &view);
> >  	i915_gem_object_unpin_from_display_plane(vma);
> 
> This did not have NULL protection previously either, so should be OK.

Yup, the long goal here is to pass in the vma.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list