Lines Matching defs:kfd
57 int kfd_interrupt_init(struct kfd_dev *kfd)
61 r = kfifo_alloc(&kfd->ih_fifo,
62 KFD_IH_NUM_ENTRIES * kfd->device_info->ih_ring_entry_size,
69 kfd->ih_wq = alloc_workqueue("KFD IH", WQ_HIGHPRI, 1);
70 if (unlikely(!kfd->ih_wq)) {
71 kfifo_free(&kfd->ih_fifo);
75 spin_lock_init(&kfd->interrupt_lock);
77 INIT_WORK(&kfd->interrupt_work, interrupt_wq);
79 kfd->interrupts_active = true;
91 void kfd_interrupt_exit(struct kfd_dev *kfd)
100 spin_lock_irqsave(&kfd->interrupt_lock, flags);
101 kfd->interrupts_active = false;
102 spin_unlock_irqrestore(&kfd->interrupt_lock, flags);
109 flush_workqueue(kfd->ih_wq);
111 kfifo_free(&kfd->ih_fifo);
117 bool enqueue_ih_ring_entry(struct kfd_dev *kfd, const void *ih_ring_entry)
121 count = kfifo_in(&kfd->ih_fifo, ih_ring_entry,
122 kfd->device_info->ih_ring_entry_size);
123 if (count != kfd->device_info->ih_ring_entry_size) {
136 static bool dequeue_ih_ring_entry(struct kfd_dev *kfd, void *ih_ring_entry)
140 count = kfifo_out(&kfd->ih_fifo, ih_ring_entry,
141 kfd->device_info->ih_ring_entry_size);
143 WARN_ON(count && count != kfd->device_info->ih_ring_entry_size);
145 return count == kfd->device_info->ih_ring_entry_size;