summaryrefslogtreecommitdiff
path: root/shared-core/i915_dma.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-core/i915_dma.c')
-rw-r--r--shared-core/i915_dma.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index f9e02c77..9e474bc6 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -806,6 +806,7 @@ struct i915_relocatee_info {
struct drm_bo_kmap_obj kmap;
int is_iomem;
int idle;
+ int evicted;
};
struct drm_i915_validate_buffer {
@@ -878,6 +879,12 @@ int i915_apply_reloc(struct drm_file *file_priv, int num_buffers,
relocatee->data_page = drm_bmo_virtual(&relocatee->kmap,
&relocatee->is_iomem);
relocatee->page_offset = (relocatee->offset & PAGE_MASK);
+
+ if (!relocatee->evicted &&
+ relocatee->buf->mem.flags & DRM_BO_FLAG_CACHED_MAPPED) {
+ drm_bo_evict_cached(relocatee->buf);
+ relocatee->evicted = 1;
+ }
}
val = buffers[buf_index].buffer->offset;