drm/i915/gem: Clear read/write domains for GPU clear
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 24 Jun 2019 14:16:30 +0000 (15:16 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 24 Jun 2019 17:20:20 +0000 (18:20 +0100)
Update the domains for the write via the GPU so that we do not
shortcircuit any set-domain clflush afterwards.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110978
Fixes: b2dbf8d982a4 ("drm/i915/blt: Remove recursive vma->lock")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190624141630.11015-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_client_blt.c

index 9b01c3b5b31d08375c5afb57914944c0551e7d23..6f537e8e4dea6d39f0178d8cba9d78ef6a9a896e 100644 (file)
@@ -162,11 +162,12 @@ static void clear_pages_worker(struct work_struct *work)
                goto out_signal;
 
        if (obj->cache_dirty) {
-               obj->write_domain = 0;
                if (i915_gem_object_has_struct_page(obj))
                        drm_clflush_sg(w->sleeve->pages);
                obj->cache_dirty = false;
        }
+       obj->read_domains = I915_GEM_GPU_DOMAINS;
+       obj->write_domain = 0;
 
        /* XXX: we need to kill this */
        mutex_lock(&i915->drm.struct_mutex);