drm/amdkfd: SVM range allocation support memory partition
authorPhilip Yang <Philip.Yang@amd.com>
Thu, 26 Jan 2023 23:45:32 +0000 (18:45 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 14:36:24 +0000 (10:36 -0400)
Pass kfd node->xcp->mem_id to amdgpu bo create parameter mem_id_plus1 to
allocate new svm_bo on the specified memory partition.

This is only for dGPU mode as we don't migrate with APU mode.

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_svm.c

index e6348d4..62aa7fb 100644 (file)
@@ -555,16 +555,20 @@ svm_range_vram_node_new(struct kfd_node *node, struct svm_range *prange,
        bp.flags |= AMDGPU_GEM_CREATE_DISCARDABLE;
        bp.type = ttm_bo_type_device;
        bp.resv = NULL;
+       if (node->xcp)
+               bp.mem_id_plus1 = node->xcp->mem_id + 1;
 
-       /* TODO: Allocate memory from the right memory partition. We can sort
-        * out the details later, once basic memory partitioning is working
-        */
        r = amdgpu_bo_create_user(node->adev, &bp, &ubo);
        if (r) {
                pr_debug("failed %d to create bo\n", r);
                goto create_bo_failed;
        }
        bo = &ubo->bo;
+
+       pr_debug("alloc bo at offset 0x%lx size 0x%lx on partition %d\n",
+                bo->tbo.resource->start << PAGE_SHIFT, bp.size,
+                bp.mem_id_plus1 - 1);
+
        r = amdgpu_bo_reserve(bo, true);
        if (r) {
                pr_debug("failed %d to reserve bo\n", r);