Lines Matching refs:vq

92 static bool qvirtio_mmio_get_queue_isr_status(QVirtioDevice *d, QVirtQueue *vq)  in qvirtio_mmio_get_queue_isr_status()  argument
146 static void qvirtio_mmio_set_queue_address(QVirtioDevice *d, QVirtQueue *vq) in qvirtio_mmio_set_queue_address() argument
149 uint64_t pfn = vq->desc / dev->page_size; in qvirtio_mmio_set_queue_address()
158 QVirtQueue *vq; in qvirtio_mmio_virtqueue_setup() local
161 vq = g_malloc0(sizeof(*vq)); in qvirtio_mmio_virtqueue_setup()
162 vq->vdev = d; in qvirtio_mmio_virtqueue_setup()
166 vq->index = index; in qvirtio_mmio_virtqueue_setup()
167 vq->size = qvirtio_mmio_get_queue_size(d); in qvirtio_mmio_virtqueue_setup()
168 vq->free_head = 0; in qvirtio_mmio_virtqueue_setup()
169 vq->num_free = vq->size; in qvirtio_mmio_virtqueue_setup()
170 vq->align = dev->page_size; in qvirtio_mmio_virtqueue_setup()
171 vq->indirect = dev->features & (1ull << VIRTIO_RING_F_INDIRECT_DESC); in qvirtio_mmio_virtqueue_setup()
172 vq->event = dev->features & (1ull << VIRTIO_RING_F_EVENT_IDX); in qvirtio_mmio_virtqueue_setup()
174 qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_NUM, vq->size); in qvirtio_mmio_virtqueue_setup()
177 g_assert_cmpint(vq->size, !=, 0); in qvirtio_mmio_virtqueue_setup()
180 g_assert_cmpint(vq->size & (vq->size - 1), ==, 0); in qvirtio_mmio_virtqueue_setup()
182 addr = guest_alloc(alloc, qvring_size(vq->size, dev->page_size)); in qvirtio_mmio_virtqueue_setup()
183 qvring_init(dev->qts, alloc, vq, addr); in qvirtio_mmio_virtqueue_setup()
184 qvirtio_mmio_set_queue_address(d, vq); in qvirtio_mmio_virtqueue_setup()
186 return vq; in qvirtio_mmio_virtqueue_setup()
189 static void qvirtio_mmio_virtqueue_cleanup(QVirtQueue *vq, in qvirtio_mmio_virtqueue_cleanup() argument
192 guest_free(alloc, vq->desc); in qvirtio_mmio_virtqueue_cleanup()
193 g_free(vq); in qvirtio_mmio_virtqueue_cleanup()
196 static void qvirtio_mmio_virtqueue_kick(QVirtioDevice *d, QVirtQueue *vq) in qvirtio_mmio_virtqueue_kick() argument
199 qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_NOTIFY, vq->index); in qvirtio_mmio_virtqueue_kick()