[PATCH 1/2] flush

Chris Wilson chris at chris-wilson.co.uk
Fri Oct 9 13:21:40 UTC 2020


---
 drivers/gpu/drm/drm_gem_shmem_helper.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
index fb11df7aced5..85a356f8ef35 100644
--- a/drivers/gpu/drm/drm_gem_shmem_helper.c
+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
@@ -11,6 +11,7 @@
 #include <linux/vmalloc.h>
 
 #include <drm/drm.h>
+#include <drm/drm_cache.h>
 #include <drm/drm_device.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_gem_shmem_helper.h>
@@ -234,10 +235,20 @@ EXPORT_SYMBOL(drm_gem_shmem_put_pages);
 int drm_gem_shmem_pin(struct drm_gem_object *obj)
 {
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
+	int ret;
 
 	WARN_ON(shmem->base.import_attach);
 
-	return drm_gem_shmem_get_pages(shmem);
+	ret = drm_gem_shmem_get_pages(shmem);
+	if (ret)
+		return ret;
+
+	/*
+	 * Flush the object from the CPU cache so that PRIME importers can rely
+	 * on coherent indirect access via the exported dma-address.
+	 */
+	drm_clflush_pages(shmem->pages, shmem->base.size >> PAGE_SHIFT);
+	return 0;
 }
 EXPORT_SYMBOL(drm_gem_shmem_pin);
 
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list