drm/i915: Do not force non-caching copies for pwrite along shmem path
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 7 Mar 2014 08:30:37 +0000 (08:30 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 7 Mar 2014 23:03:26 +0000 (00:03 +0100)
We don't always want to write into main memory with pwrite. The shmem
fast path in particular is used for memory that is cacheable - under
such circumstances forcing the cache eviction is undesirable. As we will
always flush the cache when targeting incoherent buffers, we can rely on
that second pass to apply the cache coherency rules and so benefit from
in-cache copies otherwise.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c

index da5d9ca98024d018ae2e12851726ca083f77d3dd..92b0b4164b1daf69ce43ba075a9cdb52a13f3e8d 100644 (file)
@@ -693,9 +693,8 @@ shmem_pwrite_fast(struct page *page, int shmem_page_offset, int page_length,
        if (needs_clflush_before)
                drm_clflush_virt_range(vaddr + shmem_page_offset,
                                       page_length);
-       ret = __copy_from_user_inatomic_nocache(vaddr + shmem_page_offset,
-                                               user_data,
-                                               page_length);
+       ret = __copy_from_user_inatomic(vaddr + shmem_page_offset,
+                                       user_data, page_length);
        if (needs_clflush_after)
                drm_clflush_virt_range(vaddr + shmem_page_offset,
                                       page_length);