]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/gpu/drm/cirrus/cirrus_ttm.c
drm/cirrus: Invalidate page tables when pinning a BO
[linux-imx.git] / drivers / gpu / drm / cirrus / cirrus_ttm.c
index 2ed8cfc740c9fa1845d86edcd876644b69302f82..69fd8f1ac8df192729c89f4dd981a5bb5b7611db 100644 (file)
@@ -271,9 +271,8 @@ int cirrus_mm_init(struct cirrus_device *cirrus)
                return ret;
        }
 
-       cirrus->fb_mtrr = drm_mtrr_add(pci_resource_start(dev->pdev, 0),
-                                   pci_resource_len(dev->pdev, 0),
-                                   DRM_MTRR_WC);
+       cirrus->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0),
+                                          pci_resource_len(dev->pdev, 0));
 
        cirrus->mm_inited = true;
        return 0;
@@ -281,8 +280,6 @@ int cirrus_mm_init(struct cirrus_device *cirrus)
 
 void cirrus_mm_fini(struct cirrus_device *cirrus)
 {
-       struct drm_device *dev = cirrus->dev;
-
        if (!cirrus->mm_inited)
                return;
 
@@ -290,12 +287,8 @@ void cirrus_mm_fini(struct cirrus_device *cirrus)
 
        cirrus_ttm_global_release(cirrus);
 
-       if (cirrus->fb_mtrr >= 0) {
-               drm_mtrr_del(cirrus->fb_mtrr,
-                            pci_resource_start(dev->pdev, 0),
-                            pci_resource_len(dev->pdev, 0), DRM_MTRR_WC);
-               cirrus->fb_mtrr = -1;
-       }
+       arch_phys_wc_del(cirrus->fb_mtrr);
+       cirrus->fb_mtrr = 0;
 }
 
 void cirrus_ttm_placement(struct cirrus_bo *bo, int domain)
@@ -315,24 +308,6 @@ void cirrus_ttm_placement(struct cirrus_bo *bo, int domain)
        bo->placement.num_busy_placement = c;
 }
 
-int cirrus_bo_reserve(struct cirrus_bo *bo, bool no_wait)
-{
-       int ret;
-
-       ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0);
-       if (ret) {
-               if (ret != -ERESTARTSYS && ret != -EBUSY)
-                       DRM_ERROR("reserve failed %p\n", bo);
-               return ret;
-       }
-       return 0;
-}
-
-void cirrus_bo_unreserve(struct cirrus_bo *bo)
-{
-       ttm_bo_unreserve(&bo->bo);
-}
-
 int cirrus_bo_create(struct drm_device *dev, int size, int align,
                  uint32_t flags, struct cirrus_bo **pcirrusbo)
 {
@@ -353,6 +328,7 @@ int cirrus_bo_create(struct drm_device *dev, int size, int align,
 
        cirrusbo->gem.driver_private = NULL;
        cirrusbo->bo.bdev = &cirrus->ttm.bdev;
+       cirrusbo->bo.bdev->dev_mapping = dev->dev_mapping;
 
        cirrus_ttm_placement(cirrusbo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM);