Skip to content

Commit 34174b8

Browse files
huangruialexdeucher
authored andcommitted
drm/amdkfd: fix the wrong sdma instance query for renoir
Renoir only has one sdma instance, it will get failed once query the sdma1 registers. So use switch-case instead of static register array. Signed-off-by: Huang Rui <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Reviewed-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 0a668ae commit 34174b8

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -195,19 +195,32 @@ static uint32_t get_sdma_rlc_reg_offset(struct amdgpu_device *adev,
195195
unsigned int engine_id,
196196
unsigned int queue_id)
197197
{
198-
uint32_t sdma_engine_reg_base[2] = {
199-
SOC15_REG_OFFSET(SDMA0, 0,
200-
mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL,
201-
SOC15_REG_OFFSET(SDMA1, 0,
202-
mmSDMA1_RLC0_RB_CNTL) - mmSDMA1_RLC0_RB_CNTL
203-
};
204-
uint32_t retval = sdma_engine_reg_base[engine_id]
198+
uint32_t sdma_engine_reg_base = 0;
199+
uint32_t sdma_rlc_reg_offset;
200+
201+
switch (engine_id) {
202+
default:
203+
dev_warn(adev->dev,
204+
"Invalid sdma engine id (%d), using engine id 0\n",
205+
engine_id);
206+
fallthrough;
207+
case 0:
208+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0,
209+
mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
210+
break;
211+
case 1:
212+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA1, 0,
213+
mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
214+
break;
215+
}
216+
217+
sdma_rlc_reg_offset = sdma_engine_reg_base
205218
+ queue_id * (mmSDMA0_RLC1_RB_CNTL - mmSDMA0_RLC0_RB_CNTL);
206219

207220
pr_debug("RLC register offset for SDMA%d RLC%d: 0x%x\n", engine_id,
208-
queue_id, retval);
221+
queue_id, sdma_rlc_reg_offset);
209222

210-
return retval;
223+
return sdma_rlc_reg_offset;
211224
}
212225

213226
static inline struct v9_mqd *get_mqd(void *mqd)

0 commit comments

Comments
 (0)