diff options
| -rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c index 5be505ebbb7b..1adcd8e02d29 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c @@ -232,6 +232,7 @@ struct dma_buf *i915_gem_prime_export(struct drm_gem_object *gem_obj, int flags)  static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)  { +	struct drm_i915_private *i915 = to_i915(obj->base.dev);  	struct sg_table *pages;  	unsigned int sg_page_sizes; @@ -242,8 +243,11 @@ static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)  	if (IS_ERR(pages))  		return PTR_ERR(pages); -	sg_page_sizes = i915_sg_dma_sizes(pages->sgl); +	/* XXX: consider doing a vmap flush or something */ +	if (!HAS_LLC(i915) || i915_gem_object_can_bypass_llc(obj)) +		wbinvd_on_all_cpus(); +	sg_page_sizes = i915_sg_dma_sizes(pages->sgl);  	__i915_gem_object_set_pages(obj, pages, sg_page_sizes);  	return 0; | 
