Assign unique id to compute partition. This is the unique id of the
first XCD instance belonging to the partition.

Signed-off-by: Lijo Lazar <lijo.la...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h |  1 +
 2 files changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
index 699acc1b46b5..1083db8cea2e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
@@ -120,6 +120,25 @@ static void __amdgpu_xcp_add_block(struct amdgpu_xcp_mgr 
*xcp_mgr, int xcp_id,
        xcp->valid = true;
 }
 
+static void __amdgpu_xcp_set_unique_id(struct amdgpu_xcp_mgr *xcp_mgr,
+                                      int xcp_id)
+{
+       struct amdgpu_xcp *xcp = &xcp_mgr->xcp[xcp_id];
+       struct amdgpu_device *adev = xcp_mgr->adev;
+       uint32_t inst_mask;
+       uint64_t uid;
+       int i;
+
+       if (!amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_GFX, &inst_mask) &&
+           inst_mask) {
+               i = GET_INST(GC, (ffs(inst_mask) - 1));
+               uid = amdgpu_device_get_uid(xcp_mgr->adev->uid_info,
+                                           AMDGPU_UID_TYPE_XCD, i);
+               if (uid)
+                       xcp->unique_id = uid;
+       }
+}
+
 int amdgpu_xcp_init(struct amdgpu_xcp_mgr *xcp_mgr, int num_xcps, int mode)
 {
        struct amdgpu_device *adev = xcp_mgr->adev;
@@ -158,6 +177,7 @@ int amdgpu_xcp_init(struct amdgpu_xcp_mgr *xcp_mgr, int 
num_xcps, int mode)
                        else
                                xcp_mgr->xcp[i].mem_id = mem_id;
                }
+               __amdgpu_xcp_set_unique_id(xcp_mgr, i);
        }
 
        xcp_mgr->num_xcps = num_xcps;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h
index 70a0f8400b57..1928d9e224fc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h
@@ -112,6 +112,7 @@ struct amdgpu_xcp {
        struct amdgpu_sched     
gpu_sched[AMDGPU_HW_IP_NUM][AMDGPU_RING_PRIO_MAX];
        struct amdgpu_xcp_mgr *xcp_mgr;
        struct kobject kobj;
+       uint64_t unique_id;
 };
 
 struct amdgpu_xcp_mgr {
-- 
2.49.0

Reply via email to