Panfrost does not support uncached mappings, so flag them properly. Also
flag the pages that are mapped as response to a page fault as cached.

Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com>
Signed-off-by: Ariel D'Alessandro <ariel.dalessan...@collabora.com>
Reviewed-by: AngeloGioacchino Del Regno 
<angelogioacchino.delre...@collabora.com>
Reviewed-by: Steven Price <steven.pr...@arm.com>
---
 drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c 
b/drivers/gpu/drm/panfrost/panfrost_mmu.c
index b91019cd5acb1..9e6f198ef5c1b 100644
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
@@ -327,7 +327,7 @@ int panfrost_mmu_map(struct panfrost_gem_mapping *mapping)
        struct drm_gem_object *obj = &shmem->base;
        struct panfrost_device *pfdev = to_panfrost_device(obj->dev);
        struct sg_table *sgt;
-       int prot = IOMMU_READ | IOMMU_WRITE;
+       int prot = IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE;
 
        if (WARN_ON(mapping->active))
                return 0;
@@ -528,7 +528,7 @@ static int panfrost_mmu_map_fault_addr(struct 
panfrost_device *pfdev, int as,
                goto err_map;
 
        mmu_map_sg(pfdev, bomapping->mmu, addr,
-                  IOMMU_WRITE | IOMMU_READ | IOMMU_NOEXEC, sgt);
+                  IOMMU_WRITE | IOMMU_READ | IOMMU_CACHE | IOMMU_NOEXEC, sgt);
 
        bomapping->active = true;
        bo->heap_rss_size += SZ_2M;
-- 
2.47.2

Reply via email to