On 5/26/26 10:26, Prike Liang wrote:
> Use find_next_zero_bit() to locate the next free seq slot bit
> instead of the current walk, for more efficient bitmap scanning.
> 
> Signed-off-by: Prike Liang <[email protected]>

Reviewed-by: Christian König <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c
> index f4be19223588..21a225b0116a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_seq64.c
> @@ -173,16 +173,17 @@ void amdgpu_seq64_unmap(struct amdgpu_device *adev, 
> struct amdgpu_fpriv *fpriv)
>  int amdgpu_seq64_alloc(struct amdgpu_device *adev, u64 *va,
>                      u64 *gpu_addr, u64 **cpu_addr)
>  {
> -     unsigned long bit_pos;
> +     unsigned long bit_pos = 0;
>  
> -     for (;;) {
> -             bit_pos = find_first_zero_bit(adev->seq64.used, 
> adev->seq64.num_sem);
> +     do {
> +             bit_pos = find_next_zero_bit(adev->seq64.used,
> +                                  adev->seq64.num_sem, bit_pos);
>               if (bit_pos >= adev->seq64.num_sem)
>                       return -ENOSPC;
> -
>               if (!test_and_set_bit(bit_pos, adev->seq64.used))
>                       break;
> -     }
> +             bit_pos++;
> +     } while (1);
>  
>       *va = bit_pos * sizeof(u64) + amdgpu_seq64_get_va_base(adev);
>  

Reply via email to