drm/amdgpu: optionally enable GART debugfs file
[deliverable/linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_gart.c
index 7312d729d30013d3e741f3dbda39f58f7d8d6357..921bce2df0b07cced181e9cb68693f989b7839fa 100644 (file)
@@ -238,18 +238,17 @@ void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset,
        t = offset / AMDGPU_GPU_PAGE_SIZE;
        p = t / (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE);
        for (i = 0; i < pages; i++, p++) {
-               if (adev->gart.pages[p]) {
-                       adev->gart.pages[p] = NULL;
-                       adev->gart.pages_addr[p] = adev->dummy_page.addr;
-                       page_base = adev->gart.pages_addr[p];
-                       if (!adev->gart.ptr)
-                               continue;
+#ifdef CONFIG_AMDGPU_GART_DEBUGFS
+               adev->gart.pages[p] = NULL;
+#endif
+               page_base = adev->dummy_page.addr;
+               if (!adev->gart.ptr)
+                       continue;
 
-                       for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) {
-                               amdgpu_gart_set_pte_pde(adev, adev->gart.ptr,
-                                                       t, page_base, flags);
-                               page_base += AMDGPU_GPU_PAGE_SIZE;
-                       }
+               for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) {
+                       amdgpu_gart_set_pte_pde(adev, adev->gart.ptr,
+                                               t, page_base, flags);
+                       page_base += AMDGPU_GPU_PAGE_SIZE;
                }
        }
        mb();
@@ -287,10 +286,11 @@ int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset,
        p = t / (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE);
 
        for (i = 0; i < pages; i++, p++) {
-               adev->gart.pages_addr[p] = dma_addr[i];
+#ifdef CONFIG_AMDGPU_GART_DEBUGFS
                adev->gart.pages[p] = pagelist[i];
+#endif
                if (adev->gart.ptr) {
-                       page_base = adev->gart.pages_addr[p];
+                       page_base = dma_addr[i];
                        for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) {
                                amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, t, page_base, flags);
                                page_base += AMDGPU_GPU_PAGE_SIZE;
@@ -312,11 +312,11 @@ int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset,
  */
 int amdgpu_gart_init(struct amdgpu_device *adev)
 {
-       int r, i;
+       int r;
 
-       if (adev->gart.pages) {
+       if (adev->dummy_page.page)
                return 0;
-       }
+
        /* We need PAGE_SIZE >= AMDGPU_GPU_PAGE_SIZE */
        if (PAGE_SIZE < AMDGPU_GPU_PAGE_SIZE) {
                DRM_ERROR("Page size is smaller than GPU page size!\n");
@@ -330,22 +330,16 @@ int amdgpu_gart_init(struct amdgpu_device *adev)
        adev->gart.num_gpu_pages = adev->mc.gtt_size / AMDGPU_GPU_PAGE_SIZE;
        DRM_INFO("GART: num cpu pages %u, num gpu pages %u\n",
                 adev->gart.num_cpu_pages, adev->gart.num_gpu_pages);
+
+#ifdef CONFIG_AMDGPU_GART_DEBUGFS
        /* Allocate pages table */
        adev->gart.pages = vzalloc(sizeof(void *) * adev->gart.num_cpu_pages);
        if (adev->gart.pages == NULL) {
                amdgpu_gart_fini(adev);
                return -ENOMEM;
        }
-       adev->gart.pages_addr = vzalloc(sizeof(dma_addr_t) *
-                                       adev->gart.num_cpu_pages);
-       if (adev->gart.pages_addr == NULL) {
-               amdgpu_gart_fini(adev);
-               return -ENOMEM;
-       }
-       /* set GART entry to point to the dummy page by default */
-       for (i = 0; i < adev->gart.num_cpu_pages; i++) {
-               adev->gart.pages_addr[i] = adev->dummy_page.addr;
-       }
+#endif
+
        return 0;
 }
 
@@ -358,15 +352,14 @@ int amdgpu_gart_init(struct amdgpu_device *adev)
  */
 void amdgpu_gart_fini(struct amdgpu_device *adev)
 {
-       if (adev->gart.pages && adev->gart.pages_addr && adev->gart.ready) {
+       if (adev->gart.ready) {
                /* unbind pages */
                amdgpu_gart_unbind(adev, 0, adev->gart.num_cpu_pages);
        }
        adev->gart.ready = false;
+#ifdef CONFIG_AMDGPU_GART_DEBUGFS
        vfree(adev->gart.pages);
-       vfree(adev->gart.pages_addr);
        adev->gart.pages = NULL;
-       adev->gart.pages_addr = NULL;
-
+#endif
        amdgpu_dummy_page_fini(adev);
 }
This page took 0.045808 seconds and 5 git commands to generate.