diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c index fe818501c520..1f51897acc5b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | |||
@@ -57,63 +57,6 @@ | |||
57 | */ | 57 | */ |
58 | 58 | ||
59 | /** | 59 | /** |
60 | * amdgpu_gart_table_ram_alloc - allocate system ram for gart page table | ||
61 | * | ||
62 | * @adev: amdgpu_device pointer | ||
63 | * | ||
64 | * Allocate system memory for GART page table | ||
65 | * (r1xx-r3xx, non-pcie r4xx, rs400). These asics require the | ||
66 | * gart table to be in system memory. | ||
67 | * Returns 0 for success, -ENOMEM for failure. | ||
68 | */ | ||
69 | int amdgpu_gart_table_ram_alloc(struct amdgpu_device *adev) | ||
70 | { | ||
71 | void *ptr; | ||
72 | |||
73 | ptr = pci_alloc_consistent(adev->pdev, adev->gart.table_size, | ||
74 | &adev->gart.table_addr); | ||
75 | if (ptr == NULL) { | ||
76 | return -ENOMEM; | ||
77 | } | ||
78 | #ifdef CONFIG_X86 | ||
79 | if (0) { | ||
80 | set_memory_uc((unsigned long)ptr, | ||
81 | adev->gart.table_size >> PAGE_SHIFT); | ||
82 | } | ||
83 | #endif | ||
84 | adev->gart.ptr = ptr; | ||
85 | memset((void *)adev->gart.ptr, 0, adev->gart.table_size); | ||
86 | return 0; | ||
87 | } | ||
88 | |||
89 | /** | ||
90 | * amdgpu_gart_table_ram_free - free system ram for gart page table | ||
91 | * | ||
92 | * @adev: amdgpu_device pointer | ||
93 | * | ||
94 | * Free system memory for GART page table | ||
95 | * (r1xx-r3xx, non-pcie r4xx, rs400). These asics require the | ||
96 | * gart table to be in system memory. | ||
97 | */ | ||
98 | void amdgpu_gart_table_ram_free(struct amdgpu_device *adev) | ||
99 | { | ||
100 | if (adev->gart.ptr == NULL) { | ||
101 | return; | ||
102 | } | ||
103 | #ifdef CONFIG_X86 | ||
104 | if (0) { | ||
105 | set_memory_wb((unsigned long)adev->gart.ptr, | ||
106 | adev->gart.table_size >> PAGE_SHIFT); | ||
107 | } | ||
108 | #endif | ||
109 | pci_free_consistent(adev->pdev, adev->gart.table_size, | ||
110 | (void *)adev->gart.ptr, | ||
111 | adev->gart.table_addr); | ||
112 | adev->gart.ptr = NULL; | ||
113 | adev->gart.table_addr = 0; | ||
114 | } | ||
115 | |||
116 | /** | ||
117 | * amdgpu_gart_table_vram_alloc - allocate vram for gart page table | 60 | * amdgpu_gart_table_vram_alloc - allocate vram for gart page table |
118 | * | 61 | * |
119 | * @adev: amdgpu_device pointer | 62 | * @adev: amdgpu_device pointer |
@@ -377,10 +320,8 @@ int amdgpu_gart_init(struct amdgpu_device *adev) | |||
377 | #ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS | 320 | #ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS |
378 | /* Allocate pages table */ | 321 | /* Allocate pages table */ |
379 | adev->gart.pages = vzalloc(sizeof(void *) * adev->gart.num_cpu_pages); | 322 | adev->gart.pages = vzalloc(sizeof(void *) * adev->gart.num_cpu_pages); |
380 | if (adev->gart.pages == NULL) { | 323 | if (adev->gart.pages == NULL) |
381 | amdgpu_gart_fini(adev); | ||
382 | return -ENOMEM; | 324 | return -ENOMEM; |
383 | } | ||
384 | #endif | 325 | #endif |
385 | 326 | ||
386 | return 0; | 327 | return 0; |
@@ -395,11 +336,6 @@ int amdgpu_gart_init(struct amdgpu_device *adev) | |||
395 | */ | 336 | */ |
396 | void amdgpu_gart_fini(struct amdgpu_device *adev) | 337 | void amdgpu_gart_fini(struct amdgpu_device *adev) |
397 | { | 338 | { |
398 | if (adev->gart.ready) { | ||
399 | /* unbind pages */ | ||
400 | amdgpu_gart_unbind(adev, 0, adev->gart.num_cpu_pages); | ||
401 | } | ||
402 | adev->gart.ready = false; | ||
403 | #ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS | 339 | #ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS |
404 | vfree(adev->gart.pages); | 340 | vfree(adev->gart.pages); |
405 | adev->gart.pages = NULL; | 341 | adev->gart.pages = NULL; |