Add a helper function to get the number of XCCs given a parition id. If there is no partition manager, return 1 as default.
Signed-off-by: Lijo Lazar <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h index 8058e8f35d41..b780c12b07e0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h @@ -217,4 +217,26 @@ amdgpu_get_next_xcp(struct amdgpu_xcp_mgr *xcp_mgr, int *from) for (i = 0, xcp = amdgpu_get_next_xcp(xcp_mgr, &i); xcp; \ ++i, xcp = amdgpu_get_next_xcp(xcp_mgr, &i)) +static inline int amdgpu_xcp_get_num_xcc(struct amdgpu_xcp_mgr *xcp_mgr, + int xcp_id) +{ + struct amdgpu_xcp *xcp; + uint32_t xcc_mask; + int i, r; + + if (!xcp_mgr || xcp_id == AMDGPU_XCP_NO_PARTITION) + return 1; + for_each_xcp(xcp_mgr, xcp, i) { + if (xcp->id == xcp_id) { + r = amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_GFX, + &xcc_mask); + if (unlikely(r)) + return 1; + else + return hweight32(xcc_mask); + } + } + + return 1; +} #endif -- 2.49.0
