Re: [PATCH 06/17] drm/i915: Dont clear PIN_GLOBAL in the execbuf pinning fallback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 14, 2015 at 04:53:24PM +0100, Chris Wilson wrote:
> On Tue, Apr 14, 2015 at 05:35:16PM +0200, Daniel Vetter wrote:
> > PIN_GLOBAL is set only when userspace asked for it, and that
> > is only the case for the gen6 PIPE_CONTROL workaround. We're not
> > allowed to just clear this.
> 
> Nope. See only_mappable_for_reloc(). There is an issue here, but this is
> not it.

Less cyptic, I think you want:

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index a60bfeadc4fb..8599cd87cce5 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -735,14 +735,14 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma,
        int ret;
 
        flags = 0;
+       if (entry->flags & EXEC_OBJECT_NEEDS_GTT)
+               flags |= PIN_GLOBAL;
        if (!drm_mm_node_allocated(&vma->node)) {
                if (entry->flags & __EXEC_OBJECT_NEEDS_MAP) {
                        flags |= PIN_GLOBAL | PIN_MAPPABLE;
                        if (only_mappable_for_reloc(entry->flags))
                                flags |= PIN_NONBLOCK;
                }
-               if (entry->flags & EXEC_OBJECT_NEEDS_GTT)
-                       flags |= PIN_GLOBAL;
                if (entry->flags & __EXEC_OBJECT_NEEDS_BIAS)
                        flags |= BATCH_OFFSET_BIAS | PIN_OFFSET_BIAS;
                if (entry->flags & EXEC_OBJECT_PINNED)

-Chris

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





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux