[AMD Official Use Only - AMD Internal Distribution Only]

Makes sense. This one can be


Reviewed-by: Kent Russell <[email protected]>




> -----Original Message-----
> From: Yang, Philip <[email protected]>
> Sent: Monday, December 1, 2025 3:31 PM
> To: Russell, Kent <[email protected]>; Yang, Philip <[email protected]>;
> [email protected]
> Cc: Kuehling, Felix <[email protected]>; Koenig, Christian
> <[email protected]>; Yat Sin, David <[email protected]>
> Subject: Re: [PATCH v2 2/4] drm/amdkfd: Add domain parameter to alloc kernel 
> BO
>
>
>
> On 2025-12-01 12:38, Russell, Kent wrote:
> > [Public]
> >
> > I know that it makes the change more complicated, but should we be renaming 
> > the
> function since we're no longer guaranteeing a GTT memory allocation in the
> alloc_gtt_mem function?
> yes, you are right, I have the patch to
> s/alloc_gtt_mem/alloc_kernel_mem/g, s/free_gtt_mem/free_kernel_mem/g,
> and found it is too much changes, not related to the purpose of this
> patch series, so I dropped that patch. We can cleanup this in the
> followup patch, probably remove the alloc/free_gtt_mem functions and use
> amdgpu_bo_create_kernel instead.
>
> Regards,
> Philip
> >
> >   Kent
> >
> >> -----Original Message-----
> >> From: amd-gfx <[email protected]> On Behalf Of Philip
> Yang
> >> Sent: Monday, December 1, 2025 9:29 AM
> >> To: [email protected]
> >> Cc: Kuehling, Felix <[email protected]>; Koenig, Christian
> >> <[email protected]>; Yat Sin, David <[email protected]>; Yang,
> >> Philip <[email protected]>
> >> Subject: [PATCH v2 2/4] 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 are all from GTT domain so 
> >> far.
> >>
> >> amdgpu_amdkfd_alloc_gtt_mem has many duplicate code as
> >> function amdgpu_bo_create_kernel, with one extra flag MQD_GFX9
> >> to bind MQD and control stack in GART with different mtype,
> >> the duplicate code could be removed in future.
> >>
> >> Signed-off-by: Philip Yang <[email protected]>
> >> ---
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c             | 6 +++---
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h             | 2 +-
> >>   drivers/gpu/drm/amd/amdkfd/kfd_debug.c                 | 1 +
> >>   drivers/gpu/drm/amd/amdkfd/kfd_device.c                | 3 ++-
> >>   drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c  | 1 +
> >>   drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c        | 1 +
> >>   drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 ++
> >>   7 files changed, 11 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> >> index a2879d2b7c8e..9cd1660b8f60 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> >> @@ -317,7 +317,7 @@ void amdgpu_amdkfd_gpu_reset(struct amdgpu_device
> >> *adev)
> >>   }
> >>
> >>   int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
> >> -                             void **mem_obj, uint64_t *gpu_addr,
> >> +                             u32 domain, void **mem_obj, uint64_t 
> >> *gpu_addr,
> >>                                void **cpu_ptr, bool cp_mqd_gfx9)
> >>   {
> >>        struct amdgpu_bo *bo = NULL;
> >> @@ -328,7 +328,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct
> amdgpu_device
> >> *adev, size_t size,
> >>        memset(&bp, 0, sizeof(bp));
> >>        bp.size = size;
> >>        bp.byte_align = PAGE_SIZE;
> >> -     bp.domain = AMDGPU_GEM_DOMAIN_GTT;
> >> +     bp.domain = domain;
> >>        bp.flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC;
> >>        bp.type = ttm_bo_type_kernel;
> >>        bp.resv = NULL;
> >> @@ -351,7 +351,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct
> amdgpu_device
> >> *adev, size_t size,
> >>                goto allocate_mem_reserve_bo_failed;
> >>        }
> >>
> >> -     r = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT);
> >> +     r = amdgpu_bo_pin(bo, domain);
> >>        if (r) {
> >>                dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", r);
> >>                goto allocate_mem_pin_bo_failed;
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> >> index 335d733751cb..14b5ab6fa051 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> >> @@ -237,7 +237,7 @@ int amdgpu_amdkfd_bo_validate_and_fence(struct
> >> amdgpu_bo *bo,
> >>   #endif
> >>   /* Shared API */
> >>   int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
> >> -                             void **mem_obj, uint64_t *gpu_addr,
> >> +                             u32 domain, void **mem_obj, uint64_t 
> >> *gpu_addr,
> >>                                void **cpu_ptr, bool mqd_gfx9);
> >>   void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void
> **mem_obj);
> >>   int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size,
> >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
> >> b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
> >> index ba9a09b6589a..494a563e072e 100644
> >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
> >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_debug.c
> >> @@ -359,6 +359,7 @@ int kfd_dbg_set_mes_debug_mode(struct
> >> kfd_process_device *pdd, bool sq_trap_en)
> >>        if (!pdd->proc_ctx_cpu_ptr) {
> >>                r = amdgpu_amdkfd_alloc_gtt_mem(adev,
> >>                        AMDGPU_MES_PROC_CTX_SIZE,
> >> +                     AMDGPU_GEM_DOMAIN_GTT,
> >>                        &pdd->proc_ctx_bo,
> >>                        &pdd->proc_ctx_gpu_addr,
> >>                        &pdd->proc_ctx_cpu_ptr,
> >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> >> b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> >> index 9f183d27a0ef..b0cfad750919 100644
> >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> >> @@ -787,7 +787,8 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
> >>        size += 512 * 1024;
> >>
> >>        if (amdgpu_amdkfd_alloc_gtt_mem(
> >> -                     kfd->adev, size, &kfd->gtt_mem,
> >> +                     kfd->adev, size, AMDGPU_GEM_DOMAIN_GTT,
> >> +                     &kfd->gtt_mem,
> >>                        &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr,
> >>                        false)) {
> >>                dev_err(kfd_device, "Could not allocate %d bytes\n", size);
> >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> >> b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> >> index 36ac35d64126..028fca1d2755 100644
> >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> >> @@ -2906,6 +2906,7 @@ static int allocate_hiq_sdma_mqd(struct
> >> device_queue_manager *dqm)
> >>                NUM_XCC(dqm->dev->xcc_mask));
> >>
> >>        retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev, size,
> >> +             AMDGPU_GEM_DOMAIN_GTT,
> >>                &(mem_obj->gtt_mem), &(mem_obj->gpu_addr),
> >>                (void *)&(mem_obj->cpu_ptr), false);
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
> >> b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
> >> index 2e9b6bcf2704..a489d43d5f64 100644
> >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
> >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
> >> @@ -139,6 +139,7 @@ static struct kfd_mem_obj *allocate_mqd(struct kfd_node
> >> *node,
> >>                        (ALIGN(q->ctl_stack_size, PAGE_SIZE) +
> >>                        ALIGN(sizeof(struct v9_mqd), PAGE_SIZE)) *
> >>                        NUM_XCC(node->xcc_mask),
> >> +                     AMDGPU_GEM_DOMAIN_GTT,
> >>                        &(mqd_mem_obj->gtt_mem),
> >>                        &(mqd_mem_obj->gpu_addr),
> >>                        (void *)&(mqd_mem_obj->cpu_ptr), true);
> >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> >> b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> >> index 5f8cda4733f9..e0c5ec7e2fe9 100644
> >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
> >> @@ -266,6 +266,7 @@ static int init_user_queue(struct
> process_queue_manager
> >> *pqm,
> >>        if (dev->kfd->shared_resources.enable_mes) {
> >>                retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev,
> >>                                                AMDGPU_MES_GANG_CTX_SIZE,
> >> +                                             AMDGPU_GEM_DOMAIN_GTT,
> >>                                                &(*q)->gang_ctx_bo,
> >>                                                &(*q)->gang_ctx_gpu_addr,
> >>                                                &(*q)->gang_ctx_cpu_ptr,
> >> @@ -369,6 +370,7 @@ int pqm_create_queue(struct process_queue_manager
> >> *pqm,
> >>        if (!pdd->proc_ctx_cpu_ptr && 
> >> dev->kfd->shared_resources.enable_mes) {
> >>                retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev,
> >>                                                     
> >> AMDGPU_MES_PROC_CTX_SIZE,
> >> +                                                  AMDGPU_GEM_DOMAIN_GTT,
> >>                                                     &pdd->proc_ctx_bo,
> >>                                                     
> >> &pdd->proc_ctx_gpu_addr,
> >>                                                     &pdd->proc_ctx_cpu_ptr,
> >> --
> >> 2.50.1

Reply via email to