On Wed, Aug 17, 2016 at 10:19:50AM +0300, Joonas Lahtinen wrote:
> On ti, 2016-08-16 at 11:42 +0100, Chris Wilson wrote:
> > @@ -360,8 +361,18 @@ static void reloc_cache_fini(struct reloc_cache *cache)
> >             kunmap_atomic(vaddr);
> >             i915_gem_object_unpin_pages((struct drm_i915_gem_object 
> > *)cache->node.mm);
> >     } else {
> > +           wmb();
> 
> Why wmb() here? In other spot it's inside if (cache->node.allocated)?
> This alters the original code path, too.

Because it's required for the single page and it's not a huge cost for
the whole mapping since we are required to flush the wcb anyway. It is
simpler to write and rationalize with just a single path.
 
> >             io_mapping_unmap_atomic(vaddr);
> > -           i915_vma_unpin((struct i915_vma *)cache->node.mm);
> > +           if (cache->node.allocated) {
> > +                   struct i915_ggtt *ggtt = &cache->i915->ggtt;
> > +
> > +                   ggtt->base.clear_range(&ggtt->base,
> > +                                          cache->node.start,
> > +                                          cache->node.size,
> > +                                          true);
> > +                   drm_mm_remove_node(&cache->node);
> > +           } else
> > +                   i915_vma_unpin((struct i915_vma *)cache->node.mm);
> 
> Pretty sure this needs braces too; "This does not apply if only one
> branch of a conditional statement is a single statement; in the latter
> case use braces in both branches:"
> 
> > @@ -415,21 +437,38 @@ static void *reloc_iomap(struct drm_i915_gem_object 
> > *obj,
> >  
> >             vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0,
> >                                            PIN_MAPPABLE | PIN_NONBLOCK);
> > -           if (IS_ERR(vma))
> > -                   return NULL;
> > +           if (IS_ERR(vma)) {
> > +                   memset(&cache->node, 0, sizeof(cache->node));
> > +                   ret = drm_mm_insert_node_in_range_generic
> > +                           (&ggtt->base.mm, &cache->node,
> 
> That brace sure needs to be on the previous line. With above fixes;

What brace? The bracket? No it doesn't fit.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to