aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c66
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 */
69int 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 */
98void 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 */
396void amdgpu_gart_fini(struct amdgpu_device *adev) 337void 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;