Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdkfd: Fix SDMA ring buffer size calculation

ffs function return the position of the first bit set on 1 based.
(bit zero returns 1).

Signed-off-by: shaoyun liu <shaoyun.liu@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>

authored by

shaoyunl and committed by
Oded Gabbay
d12fb13f cf21654b

+2 -2
+2 -2
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
··· 202 202 struct cik_sdma_rlc_registers *m; 203 203 204 204 m = get_sdma_mqd(mqd); 205 - m->sdma_rlc_rb_cntl = ffs(q->queue_size / sizeof(unsigned int)) << 206 - SDMA0_RLC0_RB_CNTL__RB_SIZE__SHIFT | 205 + m->sdma_rlc_rb_cntl = (ffs(q->queue_size / sizeof(unsigned int)) - 1) 206 + << SDMA0_RLC0_RB_CNTL__RB_SIZE__SHIFT | 207 207 q->vmid << SDMA0_RLC0_RB_CNTL__RB_VMID__SHIFT | 208 208 1 << SDMA0_RLC0_RB_CNTL__RPTR_WRITEBACK_ENABLE__SHIFT | 209 209 6 << SDMA0_RLC0_RB_CNTL__RPTR_WRITEBACK_TIMER__SHIFT;