aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marek Szyprowski <m.szyprowski@samsung.com> 2017-03-20 10:17:57 +0100
committerGravatar Joerg Roedel <jroedel@suse.de> 2017-03-22 15:50:45 +0100
commitcd37a296a9f890586665bb8974a8b17ee2f17d6d (patch)
treee4f92da3f9b6f9e0d06b409d7d8340faba965f4f
parentiommu/exynos: Block SYSMMU while invalidating FLPD cache (diff)
downloadlinux-cd37a296a9f890586665bb8974a8b17ee2f17d6d.tar.gz
linux-cd37a296a9f890586665bb8974a8b17ee2f17d6d.tar.bz2
linux-cd37a296a9f890586665bb8974a8b17ee2f17d6d.zip
iommu/exynos: Workaround FLPD cache flush issues for SYSMMU v5
For some unknown reasons, in some cases, FLPD cache invalidation doesn't work properly with SYSMMU v5 controllers found in Exynos5433 SoCs. This can be observed by a firmware crash during initialization phase of MFC video decoder available in the mentioned SoCs when IOMMU support is enabled. To workaround this issue perform a full TLB/FLPD invalidation in case of replacing any first level page descriptors in case of SYSMMU v5. Fixes: 740a01eee9ada ("iommu/exynos: Add support for v5 SYSMMU") CC: stable@vger.kernel.org # v4.10+ Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
-rw-r--r--drivers/iommu/exynos-iommu.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index 32d43f1994e4..c01bfcdb2383 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -513,7 +513,10 @@ static void sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data,
if (data->active && data->version >= MAKE_MMU_VER(3, 3)) {
clk_enable(data->clk_master);
if (sysmmu_block(data)) {
- __sysmmu_tlb_invalidate_entry(data, iova, 1);
+ if (data->version >= MAKE_MMU_VER(5, 0))
+ __sysmmu_tlb_invalidate(data);
+ else
+ __sysmmu_tlb_invalidate_entry(data, iova, 1);
sysmmu_unblock(data);
}
clk_disable(data->clk_master);