Lines Matching refs:queue
553 static int crq_queue_create(struct crq_queue *queue, struct srp_target *target) in crq_queue_create() argument
558 queue->msgs = (struct viosrp_crq *) get_zeroed_page(GFP_KERNEL); in crq_queue_create()
559 if (!queue->msgs) in crq_queue_create()
561 queue->size = PAGE_SIZE / sizeof(*queue->msgs); in crq_queue_create()
563 queue->msg_token = dma_map_single(target->dev, queue->msgs, in crq_queue_create()
564 queue->size * sizeof(*queue->msgs), in crq_queue_create()
567 if (dma_mapping_error(target->dev, queue->msg_token)) in crq_queue_create()
570 err = h_reg_crq(vport->dma_dev->unit_address, queue->msg_token, in crq_queue_create()
581 err = h_reg_crq(vport->dma_dev->unit_address, queue->msg_token, in crq_queue_create()
599 queue->cur = 0; in crq_queue_create()
600 spin_lock_init(&queue->lock); in crq_queue_create()
610 dma_unmap_single(target->dev, queue->msg_token, in crq_queue_create()
611 queue->size * sizeof(*queue->msgs), DMA_BIDIRECTIONAL); in crq_queue_create()
613 free_page((unsigned long) queue->msgs); in crq_queue_create()
622 struct crq_queue *queue = &vport->crq_queue; in crq_queue_destroy() local
630 dma_unmap_single(target->dev, queue->msg_token, in crq_queue_destroy()
631 queue->size * sizeof(*queue->msgs), DMA_BIDIRECTIONAL); in crq_queue_destroy()
633 free_page((unsigned long) queue->msgs); in crq_queue_destroy()
680 static inline struct viosrp_crq *next_crq(struct crq_queue *queue) in next_crq() argument
685 spin_lock_irqsave(&queue->lock, flags); in next_crq()
686 crq = &queue->msgs[queue->cur]; in next_crq()
688 if (++queue->cur == queue->size) in next_crq()
689 queue->cur = 0; in next_crq()
692 spin_unlock_irqrestore(&queue->lock, flags); in next_crq()