drm/i915/gem: Take DBG_FORCE_RELOC into account prior to using reloc_gpu
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 6 Apr 2020 12:36:16 +0000 (13:36 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 6 Apr 2020 14:58:33 +0000 (15:58 +0100)
If we set the debug flag to force ourselves not to relocate via the gpu,
do not relocate via the gpu.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200406123616.7334-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c

index 496cb1880e232d47a0b3dff43ec244a1a5b8586d..230ba1aee355d9c61e73dea79c267bcfe60bbb45 100644 (file)
@@ -1301,6 +1301,17 @@ static u32 *reloc_gpu(struct i915_execbuffer *eb,
        return cmd;
 }
 
+static inline bool use_reloc_gpu(struct i915_vma *vma)
+{
+       if (DBG_FORCE_RELOC == FORCE_GPU_RELOC)
+               return true;
+
+       if (DBG_FORCE_RELOC)
+               return false;
+
+       return !dma_resv_test_signaled_rcu(vma->resv, true);
+}
+
 static u64
 relocate_entry(struct i915_vma *vma,
               const struct drm_i915_gem_relocation_entry *reloc,
@@ -1312,9 +1323,7 @@ relocate_entry(struct i915_vma *vma,
        bool wide = eb->reloc_cache.use_64bit_reloc;
        void *vaddr;
 
-       if (!eb->reloc_cache.vaddr &&
-           (DBG_FORCE_RELOC == FORCE_GPU_RELOC ||
-            !dma_resv_test_signaled_rcu(vma->resv, true))) {
+       if (!eb->reloc_cache.vaddr && use_reloc_gpu(vma)) {
                const unsigned int gen = eb->reloc_cache.gen;
                unsigned int len;
                u32 *batch;