summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAriel D'Alessandro <ariel.dalessandro@collabora.com>2025-03-24 15:57:56 -0300
committerSteven Price <steven.price@arm.com>2025-03-31 12:08:10 +0100
commitf91e534f4e605caabc6abd61809dd8d6698e7c71 (patch)
tree79be5dc1f2aa5e956b25b160796e8b7471549aed
parent586831a417c9ffbcac63cf1b53f05d15024fdd56 (diff)
drm/panfrost: Set IOMMU_CACHE flag
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.brezillon@collabora.com> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: Adrián Larumbe <adrian.larumbe@collabora.com> Signed-off-by: Steven Price <steven.price@arm.com> Link: https://lore.kernel.org/r/20250324185801.168664-2-ariel.dalessandro@collabora.com
-rw-r--r--drivers/gpu/drm/panfrost/panfrost_mmu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
index 4a0b4bf03f1a..d5c136bb64ec 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;