Merge drm/drm-next into drm-intel-gt-next
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / i915 / gem / i915_gem_execbuffer.c
index 78f8797..0d79ba8 100644 (file)
@@ -1320,10 +1320,8 @@ static void *reloc_vaddr(struct i915_vma *vma,
 static void clflush_write32(u32 *addr, u32 value, unsigned int flushes)
 {
        if (unlikely(flushes & (CLFLUSH_BEFORE | CLFLUSH_AFTER))) {
-               if (flushes & CLFLUSH_BEFORE) {
-                       clflushopt(addr);
-                       mb();
-               }
+               if (flushes & CLFLUSH_BEFORE)
+                       drm_clflush_virt_range(addr, sizeof(*addr));
 
                *addr = value;
 
@@ -1335,7 +1333,7 @@ static void clflush_write32(u32 *addr, u32 value, unsigned int flushes)
                 * to ensure ordering of clflush wrt to the system.
                 */
                if (flushes & CLFLUSH_AFTER)
-                       clflushopt(addr);
+                       drm_clflush_virt_range(addr, sizeof(*addr));
        } else
                *addr = value;
 }
@@ -2689,6 +2687,11 @@ eb_select_engine(struct i915_execbuffer *eb)
        if (err)
                goto err;
 
+       if (!i915_vm_tryget(ce->vm)) {
+               err = -ENOENT;
+               goto err;
+       }
+
        eb->context = ce;
        eb->gt = ce->engine->gt;
 
@@ -2712,6 +2715,7 @@ eb_put_engine(struct i915_execbuffer *eb)
 {
        struct intel_context *child;
 
+       i915_vm_put(eb->context->vm);
        intel_gt_pm_put(eb->gt);
        for_each_child(eb->context, child)
                intel_context_put(child);