[PATCH 12/19] drm/amdkfd: Allocate gtt_sa_bitmap in long units

Oded Gabbay oded.gabbay at gmail.com
Sat Aug 12 14:26:15 UTC 2017


On Sat, Aug 12, 2017 at 12:56 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote:
> gtt_sa_bitmap is accessed by bitmap functions, which operate on longs.
> Therefore the array should be allocated in long units. Also round up
> in case the number of bits is not a multiple of BITS_PER_LONG.
>
> Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_device.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index cb7ed02..416955f 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -395,7 +395,7 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry)
>  static int kfd_gtt_sa_init(struct kfd_dev *kfd, unsigned int buf_size,
>                                 unsigned int chunk_size)
>  {
> -       unsigned int num_of_bits;
> +       unsigned int num_of_longs;
>
>         BUG_ON(buf_size < chunk_size);
>         BUG_ON(buf_size == 0);
> @@ -404,10 +404,10 @@ static int kfd_gtt_sa_init(struct kfd_dev *kfd, unsigned int buf_size,
>         kfd->gtt_sa_chunk_size = chunk_size;
>         kfd->gtt_sa_num_of_chunks = buf_size / chunk_size;
>
> -       num_of_bits = kfd->gtt_sa_num_of_chunks / BITS_PER_BYTE;
> -       BUG_ON(num_of_bits == 0);
> +       num_of_longs = (kfd->gtt_sa_num_of_chunks + BITS_PER_LONG - 1) /
> +               BITS_PER_LONG;
>
> -       kfd->gtt_sa_bitmap = kzalloc(num_of_bits, GFP_KERNEL);
> +       kfd->gtt_sa_bitmap = kcalloc(num_of_longs, sizeof(long), GFP_KERNEL);
>
>         if (!kfd->gtt_sa_bitmap)
>                 return -ENOMEM;
> --
> 2.7.4
>
This patch is:
Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>


More information about the amd-gfx mailing list