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 spin_lock_init(&kfd->interrupt_lock); in kfd_interrupt_init()
67 INIT_WORK(&kfd->interrupt_work, interrupt_wq); in kfd_interrupt_init()
69 kfd->interrupts_active = true; in kfd_interrupt_init()
81 void kfd_interrupt_exit(struct kfd_dev *kfd) in kfd_interrupt_exit() argument
90 spin_lock_irqsave(&kfd->interrupt_lock, flags); in kfd_interrupt_exit()
91 kfd->interrupts_active = false; in kfd_interrupt_exit()
92 spin_unlock_irqrestore(&kfd->interrupt_lock, flags); in kfd_interrupt_exit()
99 flush_workqueue(kfd->ih_wq); in kfd_interrupt_exit()
101 kfifo_free(&kfd->ih_fifo); in kfd_interrupt_exit()
107 bool enqueue_ih_ring_entry(struct kfd_dev *kfd, const void *ih_ring_entry) in enqueue_ih_ring_entry() argument
111 count = kfifo_in(&kfd->ih_fifo, ih_ring_entry, in enqueue_ih_ring_entry()
112 kfd->device_info->ih_ring_entry_size); in enqueue_ih_ring_entry()
113 if (count != kfd->device_info->ih_ring_entry_size) { in enqueue_ih_ring_entry()
126 static bool dequeue_ih_ring_entry(struct kfd_dev *kfd, void *ih_ring_entry) in dequeue_ih_ring_entry() argument
130 count = kfifo_out(&kfd->ih_fifo, ih_ring_entry, in dequeue_ih_ring_entry()
131 kfd->device_info->ih_ring_entry_size); in dequeue_ih_ring_entry()
133 WARN_ON(count && count != kfd->device_info->ih_ring_entry_size); in dequeue_ih_ring_entry()
135 return count == kfd->device_info->ih_ring_entry_size; in dequeue_ih_ring_entry()