drm/exynos: iommu: improve a check for non-iommu dma_ops
authorMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 3 Jun 2015 08:26:24 +0000 (10:26 +0200)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 14 Dec 2016 04:47:53 +0000 (13:47 +0900)
DRM Exynos driver is relying on dma-mapping internal structures when used
with IOMMU enabled. This patch partially hides dma-mapping internal things
by using proper get_dma_ops/set_dma_ops calls.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
[k.kozlowski: Backport to 4.1]
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_iommu.c

index 265f8d1..6e0503b 100644 (file)
@@ -154,8 +154,8 @@ int drm_iommu_attach_device(struct drm_device *drm_dev,
         * If iommu attach succeeded, the sub driver would have dma_ops
         * for iommu and also all sub drivers have same dma_ops.
         */
-       if (!dev->archdata.dma_ops)
-               dev->archdata.dma_ops = subdrv_dev->archdata.dma_ops;
+       if (get_dma_ops(dev) == get_dma_ops(NULL))
+               set_dma_ops(dev, get_dma_ops(subdrv_dev));
 #endif
 
        return 0;