1
0
mirror of https://github.com/libretro/Lakka-LibreELEC.git synced 2024-11-24 23:06:18 +00:00
Lakka-LibreELEC/projects/Samsung/patches/linux/samsung-0003-WIP-iommu-io-pgtable-arm-Fix-coherency-support-for-M.patch
2022-08-21 12:36:05 +00:00

38 lines
1.3 KiB
Diff

From 530424bde16e74a8542d34709ac13be3c426afe1 Mon Sep 17 00:00:00 2001
From: Pavel Golikov <Paullo612@ya.ru>
Date: Fri, 24 Jun 2022 15:54:16 +0000
Subject: [PATCH 03/21] WIP: iommu/io-pgtable-arm: Fix coherency support for
Mali LPAE
Mali T628r0p1 which may be found in Samsung Exynos 5422 SOC is
definitely not dma coherent, and it is not happy with PTE_SH_OS bit set
by default in commit 728da60da7c1 ("iommu/io-pgtable-arm: Support
coherency for Mali LPAE"). Use PTE_SH_IS by default for non dma
coherent Mali GPUs.
Signed-off-by: Pavel Golikov <Paullo612@ya.ru>
---
drivers/iommu/io-pgtable-arm.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
index 94ff319ae8ac..9ac55085e141 100644
--- a/drivers/iommu/io-pgtable-arm.c
+++ b/drivers/iommu/io-pgtable-arm.c
@@ -457,9 +457,10 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data,
* "outside the GPU" (i.e. either the Inner or System domain in CPU
* terms, depending on coherency).
*/
- if (prot & IOMMU_CACHE && data->iop.fmt != ARM_MALI_LPAE)
+ if (prot & IOMMU_CACHE ||
+ (data->iop.fmt == ARM_MALI_LPAE && !data->iop.cfg.coherent_walk))
pte |= ARM_LPAE_PTE_SH_IS;
- else
+ else if (data->iop.fmt == ARM_MALI_LPAE)
pte |= ARM_LPAE_PTE_SH_OS;
if (prot & IOMMU_NOEXEC)
--
2.17.1