OSDN Git Service

drm/amdkfd: Use bitmap_zalloc() when applicable
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 28 Nov 2021 16:45:55 +0000 (17:45 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 28 Apr 2022 21:44:23 +0000 (17:44 -0400)
'kfd->gtt_sa_bitmap' is a bitmap. So use 'bitmap_zalloc()' to simplify
code, improve the semantic and avoid some open-coded arithmetic in
allocator arguments.

Also change the corresponding 'kfree()' into 'bitmap_free()' to keep
consistency.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device.c

index 62aa6c9..0250f2b 100644 (file)
@@ -873,8 +873,6 @@ out:
 static int kfd_gtt_sa_init(struct kfd_dev *kfd, unsigned int buf_size,
                                unsigned int chunk_size)
 {
-       unsigned int num_of_longs;
-
        if (WARN_ON(buf_size < chunk_size))
                return -EINVAL;
        if (WARN_ON(buf_size == 0))
@@ -885,11 +883,8 @@ 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_longs = (kfd->gtt_sa_num_of_chunks + BITS_PER_LONG - 1) /
-               BITS_PER_LONG;
-
-       kfd->gtt_sa_bitmap = kcalloc(num_of_longs, sizeof(long), GFP_KERNEL);
-
+       kfd->gtt_sa_bitmap = bitmap_zalloc(kfd->gtt_sa_num_of_chunks,
+                                          GFP_KERNEL);
        if (!kfd->gtt_sa_bitmap)
                return -ENOMEM;
 
@@ -899,13 +894,12 @@ static int kfd_gtt_sa_init(struct kfd_dev *kfd, unsigned int buf_size,
        mutex_init(&kfd->gtt_sa_lock);
 
        return 0;
-
 }
 
 static void kfd_gtt_sa_fini(struct kfd_dev *kfd)
 {
        mutex_destroy(&kfd->gtt_sa_lock);
-       kfree(kfd->gtt_sa_bitmap);
+       bitmap_free(kfd->gtt_sa_bitmap);
 }
 
 static inline uint64_t kfd_gtt_sa_calc_gpu_addr(uint64_t start_addr,