drm/amdgpu: correct SDMA instance number for soc v1_0

Calculate sdma instance number according to xcc_mask and
num_inst_per_xcc, and correct adev->sdma.sdma_mask according
to totally sdma instance number.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Likun Gao 2026-02-06 09:09:47 +08:00 committed by Alex Deucher
parent 1394a4926f
commit c52b6c3709

View File

@ -823,7 +823,7 @@ int soc_v1_0_init_soc_config(struct amdgpu_device *adev)
{
int ret, i;
int xcc_inst_per_aid = 4;
uint16_t xcc_mask;
uint16_t xcc_mask, sdma_mask = 0;
xcc_mask = adev->gfx.xcc_mask;
adev->aid_mask = 0;
@ -833,10 +833,12 @@ int soc_v1_0_init_soc_config(struct amdgpu_device *adev)
}
adev->sdma.num_inst_per_xcc = 2;
adev->sdma.num_instances =
NUM_XCC(adev->gfx.xcc_mask) * adev->sdma.num_inst_per_xcc;
adev->sdma.sdma_mask =
GENMASK(adev->sdma.num_instances - 1, 0);
for_each_inst(i, adev->gfx.xcc_mask)
sdma_mask |=
GENMASK(adev->sdma.num_inst_per_xcc - 1, 0) <<
(i * adev->sdma.num_inst_per_xcc);
adev->sdma.sdma_mask = sdma_mask;
adev->sdma.num_instances = NUM_XCC(adev->sdma.sdma_mask);
ret = soc_v1_0_xcp_mgr_init(adev);
if (ret)