Lines Matching refs:kfd

52 int kfd_interrupt_init(struct kfd_dev *kfd)  in kfd_interrupt_init()  argument
56 r = kfifo_alloc(&kfd->ih_fifo, in kfd_interrupt_init()
57 KFD_IH_NUM_ENTRIES * kfd->device_info->ih_ring_entry_size, in kfd_interrupt_init()
64 kfd->ih_wq = alloc_workqueue("KFD IH", WQ_HIGHPRI, 1); in kfd_interrupt_init()
65 if (unlikely(!kfd->ih_wq)) { in kfd_interrupt_init()
66 kfifo_free(&kfd->ih_fifo); in kfd_interrupt_init()
70 spin_lock_init(&kfd->interrupt_lock); in kfd_interrupt_init()
72 INIT_WORK(&kfd->interrupt_work, interrupt_wq); in kfd_interrupt_init()
74 kfd->interrupts_active = true; in kfd_interrupt_init()
86 void kfd_interrupt_exit(struct kfd_dev *kfd) in kfd_interrupt_exit() argument
95 spin_lock_irqsave(&kfd->interrupt_lock, flags); in kfd_interrupt_exit()
96 kfd->interrupts_active = false; in kfd_interrupt_exit()
97 spin_unlock_irqrestore(&kfd->interrupt_lock, flags); in kfd_interrupt_exit()
104 flush_workqueue(kfd->ih_wq); in kfd_interrupt_exit()
106 kfifo_free(&kfd->ih_fifo); in kfd_interrupt_exit()
112 bool enqueue_ih_ring_entry(struct kfd_dev *kfd, const void *ih_ring_entry) in enqueue_ih_ring_entry() argument
116 count = kfifo_in(&kfd->ih_fifo, ih_ring_entry, in enqueue_ih_ring_entry()
117 kfd->device_info->ih_ring_entry_size); in enqueue_ih_ring_entry()
118 if (count != kfd->device_info->ih_ring_entry_size) { in enqueue_ih_ring_entry()
131 static bool dequeue_ih_ring_entry(struct kfd_dev *kfd, void *ih_ring_entry) in dequeue_ih_ring_entry() argument
135 count = kfifo_out(&kfd->ih_fifo, ih_ring_entry, in dequeue_ih_ring_entry()
136 kfd->device_info->ih_ring_entry_size); in dequeue_ih_ring_entry()
138 WARN_ON(count && count != kfd->device_info->ih_ring_entry_size); in dequeue_ih_ring_entry()
140 return count == kfd->device_info->ih_ring_entry_size; in dequeue_ih_ring_entry()