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>