Skip to content

Commit 0cba5b2

Browse files
amd-yangpalexdeucher
authored andcommitted
drm/amdkfd: Add domain parameter to alloc kernel BO
To allocate kernel BO from VRAM domain for MQD in the following patch. No functional change because kernel BO allocate all from GTT domain. Rename amdgpu_amdkfd_alloc_gtt_mem to amdgpu_amdkfd_alloc_kernel_mem Rename amdgpu_amdkfd_free_gtt_mem to amdgpu_amdkfd_free_kernel_mem Rename mem_kfd_mem_obj gtt_mem to mem Signed-off-by: Philip Yang <Philip.Yang@amd.com> Reviewed-by: Kent Russell <kent.russell@amd.com> Reviewed-by: Felix Kuehling <felix.kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 8e051e3 commit 0cba5b2

12 files changed

Lines changed: 45 additions & 39 deletions

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,8 @@ void amdgpu_amdkfd_gpu_reset(struct amdgpu_device *adev)
321321
&adev->kfd.reset_work);
322322
}
323323

324-
int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
325-
void **mem_obj, uint64_t *gpu_addr,
324+
int amdgpu_amdkfd_alloc_kernel_mem(struct amdgpu_device *adev, size_t size,
325+
u32 domain, void **mem_obj, uint64_t *gpu_addr,
326326
void **cpu_ptr, bool cp_mqd_gfx9)
327327
{
328328
struct amdgpu_bo *bo = NULL;
@@ -333,7 +333,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
333333
memset(&bp, 0, sizeof(bp));
334334
bp.size = size;
335335
bp.byte_align = PAGE_SIZE;
336-
bp.domain = AMDGPU_GEM_DOMAIN_GTT;
336+
bp.domain = domain;
337337
bp.flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC;
338338
bp.type = ttm_bo_type_kernel;
339339
bp.resv = NULL;
@@ -356,7 +356,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
356356
goto allocate_mem_reserve_bo_failed;
357357
}
358358

359-
r = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT);
359+
r = amdgpu_bo_pin(bo, domain);
360360
if (r) {
361361
dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", r);
362362
goto allocate_mem_pin_bo_failed;
@@ -393,7 +393,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
393393
return r;
394394
}
395395

396-
void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void **mem_obj)
396+
void amdgpu_amdkfd_free_kernel_mem(struct amdgpu_device *adev, void **mem_obj)
397397
{
398398
struct amdgpu_bo **bo = (struct amdgpu_bo **) mem_obj;
399399

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,10 @@ int amdgpu_amdkfd_bo_validate_and_fence(struct amdgpu_bo *bo,
241241
}
242242
#endif
243243
/* Shared API */
244-
int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
245-
void **mem_obj, uint64_t *gpu_addr,
244+
int amdgpu_amdkfd_alloc_kernel_mem(struct amdgpu_device *adev, size_t size,
245+
u32 domain, void **mem_obj, uint64_t *gpu_addr,
246246
void **cpu_ptr, bool mqd_gfx9);
247-
void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void **mem_obj);
247+
void amdgpu_amdkfd_free_kernel_mem(struct amdgpu_device *adev, void **mem_obj);
248248
int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size,
249249
void **mem_obj);
250250
void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj);

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2215,7 +2215,7 @@ int amdgpu_amdkfd_gpuvm_sync_memory(
22152215
* @bo_gart: Return bo reference
22162216
*
22172217
* Before return, bo reference count is incremented. To release the reference and unpin/
2218-
* unmap the BO, call amdgpu_amdkfd_free_gtt_mem.
2218+
* unmap the BO, call amdgpu_amdkfd_free_kernel_mem.
22192219
*/
22202220
int amdgpu_amdkfd_map_gtt_bo_to_gart(struct amdgpu_bo *bo, struct amdgpu_bo **bo_gart)
22212221
{

drivers/gpu/drm/amd/amdkfd/kfd_debug.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,9 @@ int kfd_dbg_set_mes_debug_mode(struct kfd_process_device *pdd, bool sq_trap_en)
357357
return 0;
358358

359359
if (!pdd->proc_ctx_cpu_ptr) {
360-
r = amdgpu_amdkfd_alloc_gtt_mem(adev,
360+
r = amdgpu_amdkfd_alloc_kernel_mem(adev,
361361
AMDGPU_MES_PROC_CTX_SIZE,
362+
AMDGPU_GEM_DOMAIN_GTT,
362363
&pdd->proc_ctx_bo,
363364
&pdd->proc_ctx_gpu_addr,
364365
&pdd->proc_ctx_cpu_ptr,

drivers/gpu/drm/amd/amdkfd/kfd_device.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -820,12 +820,13 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
820820
/* add another 512KB for all other allocations on gart (HPD, fences) */
821821
size += 512 * 1024;
822822

823-
if (amdgpu_amdkfd_alloc_gtt_mem(
824-
kfd->adev, size, &kfd->gtt_mem,
823+
if (amdgpu_amdkfd_alloc_kernel_mem(
824+
kfd->adev, size, AMDGPU_GEM_DOMAIN_GTT,
825+
&kfd->gtt_mem,
825826
&kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr,
826827
false)) {
827828
dev_err(kfd_device, "Could not allocate %d bytes\n", size);
828-
goto alloc_gtt_mem_failure;
829+
goto alloc_kernel_mem_failure;
829830
}
830831

831832
dev_info(kfd_device, "Allocated %d bytes on gart\n", size);
@@ -951,8 +952,8 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
951952
kfd_doorbell_error:
952953
kfd_gtt_sa_fini(kfd);
953954
kfd_gtt_sa_init_error:
954-
amdgpu_amdkfd_free_gtt_mem(kfd->adev, &kfd->gtt_mem);
955-
alloc_gtt_mem_failure:
955+
amdgpu_amdkfd_free_kernel_mem(kfd->adev, &kfd->gtt_mem);
956+
alloc_kernel_mem_failure:
956957
dev_err(kfd_device,
957958
"device %x:%x NOT added due to errors\n",
958959
kfd->adev->pdev->vendor, kfd->adev->pdev->device);
@@ -969,7 +970,7 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd)
969970
kfd_doorbell_fini(kfd);
970971
ida_destroy(&kfd->doorbell_ida);
971972
kfd_gtt_sa_fini(kfd);
972-
amdgpu_amdkfd_free_gtt_mem(kfd->adev, &kfd->gtt_mem);
973+
amdgpu_amdkfd_free_kernel_mem(kfd->adev, &kfd->gtt_mem);
973974
}
974975

975976
kfree(kfd);

drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2899,8 +2899,9 @@ static int allocate_hiq_sdma_mqd(struct device_queue_manager *dqm)
28992899
(dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ]->mqd_size *
29002900
NUM_XCC(dqm->dev->xcc_mask));
29012901

2902-
retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev, size,
2903-
&(mem_obj->gtt_mem), &(mem_obj->gpu_addr),
2902+
retval = amdgpu_amdkfd_alloc_kernel_mem(dev->adev, size,
2903+
AMDGPU_GEM_DOMAIN_GTT,
2904+
&(mem_obj->mem), &(mem_obj->gpu_addr),
29042905
(void *)&(mem_obj->cpu_ptr), false);
29052906

29062907
return retval;
@@ -2911,7 +2912,7 @@ static void deallocate_hiq_sdma_mqd(struct kfd_node *dev,
29112912
{
29122913
WARN(!mqd, "No hiq sdma mqd trunk to free");
29132914

2914-
amdgpu_amdkfd_free_gtt_mem(dev->adev, &mqd->gtt_mem);
2915+
amdgpu_amdkfd_free_kernel_mem(dev->adev, &mqd->mem);
29152916
}
29162917

29172918
struct device_queue_manager *device_queue_manager_init(struct kfd_node *dev)

drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ struct kfd_mem_obj *allocate_hiq_mqd(struct kfd_node *dev, struct queue_properti
5454
if (!mqd_mem_obj)
5555
return NULL;
5656

57-
mqd_mem_obj->gtt_mem = dev->dqm->hiq_sdma_mqd.gtt_mem;
57+
mqd_mem_obj->mem = dev->dqm->hiq_sdma_mqd.mem;
5858
mqd_mem_obj->gpu_addr = dev->dqm->hiq_sdma_mqd.gpu_addr;
5959
mqd_mem_obj->cpu_ptr = dev->dqm->hiq_sdma_mqd.cpu_ptr;
6060

@@ -79,7 +79,7 @@ struct kfd_mem_obj *allocate_sdma_mqd(struct kfd_node *dev,
7979
offset += dev->dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ]->mqd_size *
8080
NUM_XCC(dev->xcc_mask);
8181

82-
mqd_mem_obj->gtt_mem = (void *)((uint64_t)dev->dqm->hiq_sdma_mqd.gtt_mem
82+
mqd_mem_obj->mem = (void *)((uint64_t)dev->dqm->hiq_sdma_mqd.mem
8383
+ offset);
8484
mqd_mem_obj->gpu_addr = dev->dqm->hiq_sdma_mqd.gpu_addr + offset;
8585
mqd_mem_obj->cpu_ptr = (uint32_t *)((uint64_t)
@@ -91,7 +91,7 @@ struct kfd_mem_obj *allocate_sdma_mqd(struct kfd_node *dev,
9191
void free_mqd_hiq_sdma(struct mqd_manager *mm, void *mqd,
9292
struct kfd_mem_obj *mqd_mem_obj)
9393
{
94-
WARN_ON(!mqd_mem_obj->gtt_mem);
94+
WARN_ON(!mqd_mem_obj->mem);
9595
kfree(mqd_mem_obj);
9696
}
9797

@@ -224,8 +224,8 @@ int kfd_destroy_mqd_cp(struct mqd_manager *mm, void *mqd,
224224
void kfd_free_mqd_cp(struct mqd_manager *mm, void *mqd,
225225
struct kfd_mem_obj *mqd_mem_obj)
226226
{
227-
if (mqd_mem_obj->gtt_mem) {
228-
amdgpu_amdkfd_free_gtt_mem(mm->dev->adev, &mqd_mem_obj->gtt_mem);
227+
if (mqd_mem_obj->mem) {
228+
amdgpu_amdkfd_free_kernel_mem(mm->dev->adev, &mqd_mem_obj->mem);
229229
kfree(mqd_mem_obj);
230230
} else {
231231
kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
@@ -280,8 +280,8 @@ void kfd_get_hiq_xcc_mqd(struct kfd_node *dev, struct kfd_mem_obj *mqd_mem_obj,
280280

281281
offset = kfd_hiq_mqd_stride(dev) * virtual_xcc_id;
282282

283-
mqd_mem_obj->gtt_mem = (virtual_xcc_id == 0) ?
284-
dev->dqm->hiq_sdma_mqd.gtt_mem : NULL;
283+
mqd_mem_obj->mem = (virtual_xcc_id == 0) ?
284+
dev->dqm->hiq_sdma_mqd.mem : NULL;
285285
mqd_mem_obj->gpu_addr = dev->dqm->hiq_sdma_mqd.gpu_addr + offset;
286286
mqd_mem_obj->cpu_ptr = (uint32_t *)((uintptr_t)
287287
dev->dqm->hiq_sdma_mqd.cpu_ptr + offset);

drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12_1.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,8 +454,8 @@ static void get_xcc_mqd(struct kfd_mem_obj *mqd_mem_obj,
454454
struct kfd_mem_obj *xcc_mqd_mem_obj,
455455
uint64_t offset)
456456
{
457-
xcc_mqd_mem_obj->gtt_mem = (offset == 0) ?
458-
mqd_mem_obj->gtt_mem : NULL;
457+
xcc_mqd_mem_obj->mem = (offset == 0) ?
458+
mqd_mem_obj->mem : NULL;
459459
xcc_mqd_mem_obj->gpu_addr = mqd_mem_obj->gpu_addr + offset;
460460
xcc_mqd_mem_obj->cpu_ptr = (uint32_t *)((uintptr_t)mqd_mem_obj->cpu_ptr
461461
+ offset);

drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,12 @@ static struct kfd_mem_obj *allocate_mqd(struct kfd_node *node,
135135
mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL);
136136
if (!mqd_mem_obj)
137137
return NULL;
138-
retval = amdgpu_amdkfd_alloc_gtt_mem(node->adev,
138+
retval = amdgpu_amdkfd_alloc_kernel_mem(node->adev,
139139
(ALIGN(q->ctl_stack_size, PAGE_SIZE) +
140140
ALIGN(sizeof(struct v9_mqd), PAGE_SIZE)) *
141141
NUM_XCC(node->xcc_mask),
142-
&(mqd_mem_obj->gtt_mem),
142+
AMDGPU_GEM_DOMAIN_GTT,
143+
&(mqd_mem_obj->mem),
143144
&(mqd_mem_obj->gpu_addr),
144145
(void *)&(mqd_mem_obj->cpu_ptr), true);
145146

@@ -665,8 +666,8 @@ static void get_xcc_mqd(struct kfd_mem_obj *mqd_mem_obj,
665666
struct kfd_mem_obj *xcc_mqd_mem_obj,
666667
uint64_t offset)
667668
{
668-
xcc_mqd_mem_obj->gtt_mem = (offset == 0) ?
669-
mqd_mem_obj->gtt_mem : NULL;
669+
xcc_mqd_mem_obj->mem = (offset == 0) ?
670+
mqd_mem_obj->mem : NULL;
670671
xcc_mqd_mem_obj->gpu_addr = mqd_mem_obj->gpu_addr + offset;
671672
xcc_mqd_mem_obj->cpu_ptr = (uint32_t *)((uintptr_t)mqd_mem_obj->cpu_ptr
672673
+ offset);

drivers/gpu/drm/amd/amdkfd/kfd_priv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ struct kfd_mem_obj {
252252
uint32_t range_end;
253253
uint64_t gpu_addr;
254254
uint32_t *cpu_ptr;
255-
void *gtt_mem;
255+
void *mem;
256256
};
257257

258258
struct kfd_vmid_info {

0 commit comments

Comments
 (0)