Lines Matching defs:kfd

44  * the /dev/kfd with the particular device encoded in the mmap offset.
45 * There will be other uses for mmap of /dev/kfd, so only a range of
50 size_t kfd_doorbell_process_slice(struct kfd_dev *kfd)
52 if (!kfd->shared_resources.enable_mes)
53 return roundup(kfd->device_info.doorbell_size *
58 (struct amdgpu_device *)kfd->adev);
62 int kfd_doorbell_init(struct kfd_dev *kfd)
75 kfd->doorbell_bitmap = bitmap_zalloc(size / sizeof(u32), GFP_KERNEL);
76 if (!kfd->doorbell_bitmap) {
82 r = amdgpu_bo_create_kernel(kfd->adev,
86 &kfd->doorbells,
88 (void **)&kfd->doorbell_kernel_ptr);
91 bitmap_free(kfd->doorbell_bitmap);
95 pr_debug("Doorbell kernel address == %p\n", kfd->doorbell_kernel_ptr);
99 void kfd_doorbell_fini(struct kfd_dev *kfd)
101 bitmap_free(kfd->doorbell_bitmap);
102 amdgpu_bo_free_kernel(&kfd->doorbells, NULL,
103 (void **)&kfd->doorbell_kernel_ptr);
116 if (vma->vm_end - vma->vm_start != kfd_doorbell_process_slice(dev->kfd))
138 kfd_doorbell_process_slice(dev->kfd));
144 kfd_doorbell_process_slice(dev->kfd),
150 void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd,
155 mutex_lock(&kfd->doorbell_mutex);
156 inx = find_first_zero_bit(kfd->doorbell_bitmap, PAGE_SIZE / sizeof(u32));
158 __set_bit(inx, kfd->doorbell_bitmap);
159 mutex_unlock(&kfd->doorbell_mutex);
164 *doorbell_off = amdgpu_doorbell_index_on_bar(kfd->adev,
165 kfd->doorbells,
167 kfd->device_info.doorbell_size);
175 return kfd->doorbell_kernel_ptr + inx;
178 void kfd_release_kernel_doorbell(struct kfd_dev *kfd, u32 __iomem *db_addr)
182 inx = (unsigned int)(db_addr - kfd->doorbell_kernel_ptr);
185 mutex_lock(&kfd->doorbell_mutex);
186 __clear_bit(inx, kfd->doorbell_bitmap);
187 mutex_unlock(&kfd->doorbell_mutex);
241 if (kfd_alloc_process_doorbells(pdd->dev->kfd, pdd))
249 pdd->dev->kfd->device_info.doorbell_size);
253 int kfd_alloc_process_doorbells(struct kfd_dev *kfd, struct kfd_process_device *pdd)
266 r = init_doorbell_bitmap(&pdd->qpd, kfd);
274 r = amdgpu_bo_create_kernel(kfd->adev,
275 kfd_doorbell_process_slice(kfd),
293 void kfd_free_process_doorbells(struct kfd_dev *kfd, struct kfd_process_device *pdd)