diff options
author | Oded Gabbay <oded.gabbay@amd.com> | 2014-10-26 16:00:31 -0400 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@amd.com> | 2015-01-09 15:26:10 -0500 |
commit | a86aa3ca5a2f16772653782c078f62a7d76dd57e (patch) | |
tree | 42a8dc00bc514cd363351542bcce9cf131b3ae0a /drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c | |
parent | 73a1da0bb3b32a552817c57dcaebef09bd2f3677 (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.c | 41 |
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: | |||
165 | err_init_mqd: | 152 | err_init_mqd: |
166 | uninit_queue(kq->queue); | 153 | uninit_queue(kq->queue); |
167 | err_init_queue: | 154 | err_init_queue: |
168 | kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->wptr_mem); | 155 | kfd_gtt_sa_free(dev, kq->wptr_mem); |
169 | err_wptr_allocate_vidmem: | 156 | err_wptr_allocate_vidmem: |
170 | kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->rptr_mem); | 157 | kfd_gtt_sa_free(dev, kq->rptr_mem); |
171 | err_rptr_allocate_vidmem: | 158 | err_rptr_allocate_vidmem: |
172 | kfd2kgd->free_mem(dev->kgd, (struct kgd_mem *) kq->pq); | 159 | kfd_gtt_sa_free(dev, kq->pq); |
173 | err_pq_allocate_vidmem: | 160 | err_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); |