aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-03-07 03:30:37 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-03-07 18:03:26 -0500
commitc2831a94b5e77a407db0708816949d4a87416a8e (patch)
treed4f3a38b8e67c1515ab80997dda41b6a339ae440
parent17793c9a4659b272a9f892d44940062ed8b5fd0e (diff)
drm/i915: Do not force non-caching copies for pwrite along shmem path
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>
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index da5d9ca98024..92b0b4164b1d 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -693,9 +693,8 @@ shmem_pwrite_fast(struct page *page, int shmem_page_offset, int page_length,
693 if (needs_clflush_before) 693 if (needs_clflush_before)
694 drm_clflush_virt_range(vaddr + shmem_page_offset, 694 drm_clflush_virt_range(vaddr + shmem_page_offset,
695 page_length); 695 page_length);
696 ret = __copy_from_user_inatomic_nocache(vaddr + shmem_page_offset, 696 ret = __copy_from_user_inatomic(vaddr + shmem_page_offset,
697 user_data, 697 user_data, page_length);
698 page_length);
699 if (needs_clflush_after) 698 if (needs_clflush_after)
700 drm_clflush_virt_range(vaddr + shmem_page_offset, 699 drm_clflush_virt_range(vaddr + shmem_page_offset,
701 page_length); 700 page_length);