Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c971c62 authored by Lucas Stach's avatar Lucas Stach
Browse files

drm/etnaviv: space out IOVA layout for cmdbufs on MMUv2



At least on the GC3000 the FE MMU is not properly flushing stale TLB
entries. Make sure to map the cmdbufs with a big enough spacing in
the IOVAs to not hit old/prefetched TLB entries when jumping to a
newly mapped cmdbuf.

Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
parent 12ff4bde
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -342,7 +342,12 @@ u32 etnaviv_iommu_get_cmdbuf_va(struct etnaviv_gpu *gpu,
			mutex_unlock(&mmu->lock);
			return 0;
		}
		mmu->last_iova = buf->vram_node.start + buf->size;
		/*
		 * At least on GC3000 the FE MMU doesn't properly flush old TLB
		 * entries. Make sure to space the command buffers out in a way
		 * that the FE MMU prefetch won't load invalid entries.
		 */
		mmu->last_iova = buf->vram_node.start + buf->size + SZ_64K;
		gpu->mmu->need_flush = true;
		mutex_unlock(&mmu->lock);