Generalise the skip for physical and stolen objects by skipping anything
we do not have a valid address inside the sg.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index f5d9ce910dc7..d384aa71f125 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3231,14 +3231,19 @@ void i915_gem_clflush_object(struct drm_i915_gem_object 
*obj,
         * to GPU, and we can ignore the cache flush because it'll happen
         * again at bind time.
         */
-       if (!obj->mm.pages)
+       if (!obj->mm.pages) {
+               GEM_BUG_ON(obj->base.write_domain != I915_GEM_DOMAIN_CPU);
                return;
+       }
 
        /*
         * Stolen memory is always coherent with the GPU as it is explicitly
         * marked as wc by the system, or the system is cache-coherent.
+        * Similarly, we only access struct pages through the CPU cache, so
+        * anything not backed by physical memory we consider to be always
+        * coherent and not need clflushing.
         */
-       if (obj->stolen || obj->phys_handle)
+       if (!i915_gem_object_has_struct_page(obj))
                return;
 
        /* If the GPU is snooping the contents of the CPU cache,
-- 
2.10.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to