aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
diff options
context:
space:
mode:
authorOded Gabbay <oded.gabbay@amd.com>2014-10-26 16:00:31 -0400
committerOded Gabbay <oded.gabbay@amd.com>2015-01-09 15:26:10 -0500
commita86aa3ca5a2f16772653782c078f62a7d76dd57e (patch)
tree42a8dc00bc514cd363351542bcce9cf131b3ae0a /drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
parent73a1da0bb3b32a552817c57dcaebef09bd2f3677 (diff)
drm/amdkfd: Using new gtt sa in amdkfd
This patch change the calls throughout the amdkfd driver from the old kfd-->kgd interface to the new kfd gtt sa inside amdkfd v2: change the new call in sdma code that appeared because of the sdma feature Signed-off-by: Oded Gabbay <oded.gabbay@amd.com> Reviewed-by: Alexey Skidanov <Alexey.skidanov@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c41
1 files changed, 15 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
index 935071410724..0fd8bb7c863e 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
@@ -72,11 +72,7 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
72 if (prop.doorbell_ptr == NULL) 72 if (prop.doorbell_ptr == NULL)
73 goto err_get_kernel_doorbell; 73 goto err_get_kernel_doorbell;
74 74
75 retval = kfd2kgd->allocate_mem(dev->kgd, 75 retval = kfd_gtt_sa_allocate(dev, queue_size, &kq->pq);
76 queue_size,
77 PAGE_SIZE,
78 KFD_MEMPOOL_SYSTEM_WRITECOMBINE,
79 (struct kgd_mem **) &kq->pq);
80 76
81 if (retval != 0) 77 if (retval != 0)
82 goto err_pq_allocate_vidmem; 78 goto err_pq_allocate_vidmem;
@@ -84,11 +80,8 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
84 kq->pq_kernel_addr = kq->pq->cpu_ptr; 80 kq->pq_kernel_addr = kq->pq->cpu_ptr;
85 kq->pq_gpu_addr = kq->pq->gpu_addr; 81 kq->pq_gpu_addr = kq->pq->gpu_addr;
86 82
87 retval = kfd2kgd->allocate_mem(dev->kgd, 83 retval = kfd_gtt_sa_allocate(dev, sizeof(*kq->rptr_kernel),
88 sizeof(*kq->rptr_kernel), 84 &kq->rptr_mem);
89 32,
90 KFD_MEMPOOL_SYSTEM_WRITECOMBINE,
91 (struct kgd_mem **) &kq->rptr_mem);
92 85
93 if (retval != 0) 86 if (retval != 0)
94 goto err_rptr_allocate_vidmem; 87 goto err_rptr_allocate_vidmem;
@@ -96,11 +89,8 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
96 kq->rptr_kernel = kq->rptr_mem->cpu_ptr; 89 kq->rptr_kernel = kq->rptr_mem->cpu_ptr;
97 kq->rptr_gpu_addr = kq->rptr_mem->gpu_addr; 90 kq->rptr_gpu_addr = kq->rptr_mem->gpu_addr;
98 91
99 retval = kfd2kgd->allocate_mem(dev->kgd, 92 retval = kfd_gtt_sa_allocate(dev, sizeof(*kq->wptr_kernel),
100 sizeof(*kq->wptr_kernel), 93 &kq->wptr_mem);
101 32,
102 KFD_MEMPOOL_SYSTEM_WRITECOMBINE,
103 (struct kgd_mem **) &kq->wptr_mem);
104 94
105 if (retval != 0) 95 if (retval != 0)
106 goto err_wptr_allocate_vidmem; 96 goto err_wptr_allocate_vidmem;
@@ -145,11 +135,8 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
145 } else { 135 } else {
146 /* allocate fence for DIQ */ 136 /* allocate fence for DIQ */
147 137
148 retval = kfd2kgd->allocate_mem(dev->kgd, 138 retval = kfd_gtt_sa_allocate(dev, sizeof(uint32_t),
149 sizeof(uint32_t), 139 &kq->fence_mem_obj);
150 32,
151 KFD_MEMPOOL_SYSTEM_WRITECOMBINE,
152 (struct kgd_mem **) &kq->fence_mem_obj);
153 140
154 if (retval != 0) 141 if (retval != 0)
155 goto err_alloc_fence; 142 goto err_alloc_fence;
@@ -165,11 +152,11 @@ err_alloc_fence:
165err_init_mqd: 152err_init_mqd:
166 uninit_queue(kq->queue); 153 uninit_queue(kq->queue);
167err_init_queue: 154err_init_queue:
168 kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->wptr_mem); 155 kfd_gtt_sa_free(dev, kq->wptr_mem);
169err_wptr_allocate_vidmem: 156err_wptr_allocate_vidmem:
170 kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->rptr_mem); 157 kfd_gtt_sa_free(dev, kq->rptr_mem);
171err_rptr_allocate_vidmem: 158err_rptr_allocate_vidmem:
172 kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->pq); 159 kfd_gtt_sa_free(dev, kq->pq);
173err_pq_allocate_vidmem: 160err_pq_allocate_vidmem:
174 pr_err("kfd: error init pq\n"); 161 pr_err("kfd: error init pq\n");
175 kfd_release_kernel_doorbell(dev, prop.doorbell_ptr); 162 kfd_release_kernel_doorbell(dev, prop.doorbell_ptr);
@@ -190,10 +177,12 @@ static void uninitialize(struct kernel_queue *kq)
190 QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS, 177 QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS,
191 kq->queue->pipe, 178 kq->queue->pipe,
192 kq->queue->queue); 179 kq->queue->queue);
180 else if (kq->queue->properties.type == KFD_QUEUE_TYPE_DIQ)
181 kfd_gtt_sa_free(kq->dev, kq->fence_mem_obj);
193 182
194 kfd2kgd->free_mem(kq->dev->kgd, (struct kgd_mem *) kq->rptr_mem); 183 kfd_gtt_sa_free(kq->dev, kq->rptr_mem);
195 kfd2kgd->free_mem(kq->dev->kgd, (struct kgd_mem *) kq->wptr_mem); 184 kfd_gtt_sa_free(kq->dev, kq->wptr_mem);
196 kfd2kgd->free_mem(kq->dev->kgd, (struct kgd_mem *) kq->pq); 185 kfd_gtt_sa_free(kq->dev, kq->pq);
197 kfd_release_kernel_doorbell(kq->dev, 186 kfd_release_kernel_doorbell(kq->dev,
198 kq->queue->properties.doorbell_ptr); 187 kq->queue->properties.doorbell_ptr);
199 uninit_queue(kq->queue); 188 uninit_queue(kq->queue);