mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
drm/amdkfd: check find_first_zero_bit before __set_bit on kfd->doorbell_bitmap
If inx from find_first_zero_bit is beyond range not need set doorbell_bitmap. Signed-off-by: Xiaogang Chen <xiaogang.chen@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 2664ce9143d174651a793d96a6a2326050c4f45a)
This commit is contained in:
parent
8242a8d9d7
commit
516bf737a5
|
|
@ -153,14 +153,16 @@ void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd,
|
|||
u32 inx;
|
||||
|
||||
mutex_lock(&kfd->doorbell_mutex);
|
||||
|
||||
inx = find_first_zero_bit(kfd->doorbell_bitmap, PAGE_SIZE / sizeof(u32));
|
||||
if (inx >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS) {
|
||||
mutex_unlock(&kfd->doorbell_mutex);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
__set_bit(inx, kfd->doorbell_bitmap);
|
||||
mutex_unlock(&kfd->doorbell_mutex);
|
||||
|
||||
if (inx >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS)
|
||||
return NULL;
|
||||
|
||||
*doorbell_off = amdgpu_doorbell_index_on_bar(kfd->adev,
|
||||
kfd->doorbells,
|
||||
inx,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user