| From foo@baz Thu Dec 21 09:02:40 CET 2017 |
| From: Marek Szyprowski <m.szyprowski@samsung.com> |
| Date: Mon, 20 Mar 2017 10:17:57 +0100 |
| Subject: iommu/exynos: Workaround FLPD cache flush issues for SYSMMU v5 |
| |
| From: Marek Szyprowski <m.szyprowski@samsung.com> |
| |
| |
| [ Upstream commit cd37a296a9f890586665bb8974a8b17ee2f17d6d ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/iommu/exynos-iommu.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/iommu/exynos-iommu.c |
| +++ b/drivers/iommu/exynos-iommu.c |
| @@ -543,7 +543,10 @@ static void sysmmu_tlb_invalidate_flpdca |
| if (is_sysmmu_active(data) && 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); |