drm/amdkfd: Account for SH/SE count when setting up cu masks.
authorSean Keely <Sean.Keely@amd.com>
Fri, 20 Aug 2021 02:26:14 +0000 (21:26 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 Aug 2021 17:56:01 +0000 (13:56 -0400)
commit1ec06c2dee679e9f089e78ed20cb74ee90155f61
tree18a73884b2cf7a84d3471f2837233b583e50c4ee
parentd035f84d834cd09d0c083f4d4cb3e46c2ae56cb2
drm/amdkfd: Account for SH/SE count when setting up cu masks.

On systems with multiple SH per SE compute_static_thread_mgmt_se#
is split into independent masks, one for each SH, in the upper and
lower 16 bits.  We need to detect this and apply cu masking to each
SH.  The cu mask bits are assigned first to each SE, then to
alternate SHs, then finally to higher CU id.  This ensures that
the maximum number of SPIs are engaged as early as possible while
balancing CU assignment to each SH.

v2: Use max SH/SE rather than max SH in cu_per_sh.

v3: Fix comment blocks, ensure se_mask is initially zero filled,
    and correctly assign se.sh.cu positions to unset bits in cu_mask.

Signed-off-by: Sean Keely <Sean.Keely@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_mqd_manager.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h