Lines Matching refs:kfd
62 void kfd_doorbell_init(struct kfd_dev *kfd) in kfd_doorbell_init() argument
75 roundup(kfd->shared_resources.doorbell_start_offset, in kfd_doorbell_init()
79 rounddown(kfd->shared_resources.doorbell_aperture_size, in kfd_doorbell_init()
89 kfd->doorbell_base = kfd->shared_resources.doorbell_physical_address + in kfd_doorbell_init()
92 kfd->doorbell_id_offset = doorbell_start_offset / sizeof(u32); in kfd_doorbell_init()
93 kfd->doorbell_process_limit = doorbell_process_limit - 1; in kfd_doorbell_init()
95 kfd->doorbell_kernel_ptr = ioremap(kfd->doorbell_base, in kfd_doorbell_init()
98 BUG_ON(!kfd->doorbell_kernel_ptr); in kfd_doorbell_init()
102 (uintptr_t)kfd->doorbell_base); in kfd_doorbell_init()
105 kfd->doorbell_id_offset); in kfd_doorbell_init()
111 (uintptr_t)kfd->doorbell_base); in kfd_doorbell_init()
114 kfd->shared_resources.doorbell_aperture_size); in kfd_doorbell_init()
117 (uintptr_t)kfd->doorbell_kernel_ptr); in kfd_doorbell_init()
162 u32 __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd, in kfd_get_kernel_doorbell() argument
167 BUG_ON(!kfd || !doorbell_off); in kfd_get_kernel_doorbell()
169 mutex_lock(&kfd->doorbell_mutex); in kfd_get_kernel_doorbell()
170 inx = find_first_zero_bit(kfd->doorbell_available_index, in kfd_get_kernel_doorbell()
173 __set_bit(inx, kfd->doorbell_available_index); in kfd_get_kernel_doorbell()
174 mutex_unlock(&kfd->doorbell_mutex); in kfd_get_kernel_doorbell()
189 *doorbell_off, (uintptr_t)(kfd->doorbell_kernel_ptr + inx)); in kfd_get_kernel_doorbell()
191 return kfd->doorbell_kernel_ptr + inx; in kfd_get_kernel_doorbell()
194 void kfd_release_kernel_doorbell(struct kfd_dev *kfd, u32 __iomem *db_addr) in kfd_release_kernel_doorbell() argument
198 BUG_ON(!kfd || !db_addr); in kfd_release_kernel_doorbell()
200 inx = (unsigned int)(db_addr - kfd->doorbell_kernel_ptr); in kfd_release_kernel_doorbell()
202 mutex_lock(&kfd->doorbell_mutex); in kfd_release_kernel_doorbell()
203 __clear_bit(inx, kfd->doorbell_available_index); in kfd_release_kernel_doorbell()
204 mutex_unlock(&kfd->doorbell_mutex); in kfd_release_kernel_doorbell()
219 unsigned int kfd_queue_id_to_doorbell(struct kfd_dev *kfd, in kfd_queue_id_to_doorbell() argument
228 return kfd->doorbell_id_offset + in kfd_queue_id_to_doorbell()
233 uint64_t kfd_get_number_elems(struct kfd_dev *kfd) in kfd_get_number_elems() argument
235 uint64_t num_of_elems = (kfd->shared_resources.doorbell_aperture_size - in kfd_get_number_elems()
236 kfd->shared_resources.doorbell_start_offset) / in kfd_get_number_elems()