/qemu/hw/virtio/ |
H A D | virtio.c | 227 static void virtio_virtqueue_reset_region_cache(struct VirtQueue *vq) in virtio_virtqueue_reset_region_cache() argument 231 caches = qatomic_read(&vq->vring.caches); in virtio_virtqueue_reset_region_cache() 232 qatomic_rcu_set(&vq->vring.caches, NULL); in virtio_virtqueue_reset_region_cache() 240 VirtQueue *vq = &vdev->vq[n]; in virtio_init_region_cache() local 241 VRingMemoryRegionCaches *old = vq->vring.caches; in virtio_init_region_cache() 248 addr = vq->vring.desc; in virtio_init_region_cache() 254 packed = virtio_vdev_has_feature(vq->vdev, VIRTIO_F_RING_PACKED) ? in virtio_init_region_cache() 265 vq->vring.used, size, true); in virtio_init_region_cache() 273 vq->vring.avail, size, false); in virtio_init_region_cache() 279 qatomic_rcu_set(&vq->vring.caches, new); in virtio_init_region_cache() [all …]
|
H A D | iothread-vq-mapping.c | 23 uint16List *vq; in iothread_vq_mapping_validate() local 45 for (vq = node->value->vqs; vq; vq = vq->next) { in iothread_vq_mapping_validate() 46 if (vq->value >= num_queues) { in iothread_vq_mapping_validate() 49 vq->value, name, num_queues); in iothread_vq_mapping_validate() 53 if (test_and_set_bit(vq->value, vqs)) { in iothread_vq_mapping_validate() 55 "because it is already assigned", vq->value, name); in iothread_vq_mapping_validate() 101 uint16List *vq; in iothread_vq_mapping_apply() local 104 for (vq = node->value->vqs; vq; vq = vq->next) { in iothread_vq_mapping_apply() 105 assert(vq->value < num_queues); in iothread_vq_mapping_apply() 106 vq_aio_context[vq->value] = ctx; in iothread_vq_mapping_apply()
|
H A D | vhost.c | 221 struct vhost_virtqueue *vq = dev->vqs + i; in vhost_sync_dirty_bitmap() local 223 if (!vq->used_phys && !vq->used_size) { in vhost_sync_dirty_bitmap() 229 hwaddr used_phys = vq->used_phys, used_size = vq->used_size; in vhost_sync_dirty_bitmap() 269 end_addr, vq->used_phys, in vhost_sync_dirty_bitmap() 270 range_get_last(vq->used_phys, vq->used_size)); in vhost_sync_dirty_bitmap() 524 struct vhost_virtqueue *vq = dev->vqs + i; in vhost_verify_ring_mappings() local 526 if (vq->desc_phys == 0) { in vhost_verify_ring_mappings() 532 vq->desc, vq->desc_phys, vq->desc_size, in vhost_verify_ring_mappings() 540 vq->avail, vq->avail_phys, vq->avail_size, in vhost_verify_ring_mappings() 548 vq->used, vq->used_phys, vq->used_size, in vhost_verify_ring_mappings() [all …]
|
/qemu/subprojects/libvduse/ |
H A D | libvduse.c | 185 VduseDev *vduse_queue_get_dev(VduseVirtq *vq) in vduse_queue_get_dev() argument 187 return vq->dev; in vduse_queue_get_dev() 190 int vduse_queue_get_fd(VduseVirtq *vq) in vduse_queue_get_fd() argument 192 return vq->fd; in vduse_queue_get_fd() 228 static int vduse_queue_check_inflights(VduseVirtq *vq) in vduse_queue_check_inflights() argument 231 VduseDev *dev = vq->dev; in vduse_queue_check_inflights() 233 vq->used_idx = le16toh(vq->vring.used->idx); in vduse_queue_check_inflights() 234 vq->resubmit_num = 0; in vduse_queue_check_inflights() 235 vq->resubmit_list = NULL; in vduse_queue_check_inflights() 236 vq->counter = 0; in vduse_queue_check_inflights() [all …]
|
H A D | libvduse.h | 30 void (*enable_queue)(VduseDev *dev, VduseVirtq *vq); 32 void (*disable_queue)(VduseDev *dev, VduseVirtq *vq); 67 VduseDev *vduse_queue_get_dev(VduseVirtq *vq); 77 int vduse_queue_get_fd(VduseVirtq *vq); 89 void *vduse_queue_pop(VduseVirtq *vq, size_t sz); 99 void vduse_queue_push(VduseVirtq *vq, const VduseVirtqElement *elem, 107 void vduse_queue_notify(VduseVirtq *vq);
|
/qemu/tests/qtest/libqos/ |
H A D | virtio.c | 146 void qvirtqueue_cleanup(const QVirtioBus *bus, QVirtQueue *vq, in qvirtqueue_cleanup() argument 149 return bus->virtqueue_cleanup(vq, alloc); in qvirtqueue_cleanup() 182 QVirtQueue *vq, gint64 timeout_us) in qvirtio_wait_queue_isr() argument 187 if (d->bus->get_queue_isr_status(d, vq)) { in qvirtio_wait_queue_isr() 200 QVirtQueue *vq, in qvirtio_wait_status_byte_no_isr() argument 208 g_assert(!d->bus->get_queue_isr_status(d, vq)); in qvirtio_wait_status_byte_no_isr() 224 QVirtQueue *vq, in qvirtio_wait_used_elem() argument 235 if (d->bus->get_queue_isr_status(d, vq) && in qvirtio_wait_used_elem() 236 qvirtqueue_get_buf(qts, vq, &got_desc_idx, len)) { in qvirtio_wait_used_elem() 249 void qvring_init(QTestState *qts, const QGuestAllocator *alloc, QVirtQueue *vq, in qvring_init() argument [all …]
|
H A D | virtio-mmio.c | 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() [all …]
|
H A D | virtio.h | 72 bool (*get_queue_isr_status)(QVirtioDevice *d, QVirtQueue *vq); 84 void (*set_queue_address)(QVirtioDevice *d, QVirtQueue *vq); 91 void (*virtqueue_cleanup)(QVirtQueue *vq, QGuestAllocator *alloc); 94 void (*virtqueue_kick)(QVirtioDevice *d, QVirtQueue *vq); 118 QVirtQueue *vq, gint64 timeout_us); 120 QVirtQueue *vq, 124 QVirtQueue *vq, 131 void qvirtqueue_cleanup(const QVirtioBus *bus, QVirtQueue *vq, 134 void qvring_init(QTestState *qts, const QGuestAllocator *alloc, QVirtQueue *vq, 142 uint32_t qvirtqueue_add(QTestState *qts, QVirtQueue *vq, uint64_t data, [all …]
|
H A D | virtio-pci.c | 122 static bool qvirtio_pci_get_queue_isr_status(QVirtioDevice *d, QVirtQueue *vq) in qvirtio_pci_get_queue_isr_status() argument 125 QVirtQueuePCI *vqpci = (QVirtQueuePCI *)vq; in qvirtio_pci_get_queue_isr_status() 193 static void qvirtio_pci_set_queue_address(QVirtioDevice *d, QVirtQueue *vq) in qvirtio_pci_set_queue_address() argument 196 uint64_t pfn = vq->desc / VIRTIO_PCI_VRING_ALIGN; in qvirtio_pci_set_queue_address() 214 vqpci->vq.vdev = d; in qvirtio_pci_virtqueue_setup_common() 215 vqpci->vq.index = index; in qvirtio_pci_virtqueue_setup_common() 216 vqpci->vq.size = d->bus->get_queue_size(d); in qvirtio_pci_virtqueue_setup_common() 217 vqpci->vq.free_head = 0; in qvirtio_pci_virtqueue_setup_common() 218 vqpci->vq.num_free = vqpci->vq.size; in qvirtio_pci_virtqueue_setup_common() 219 vqpci->vq.align = VIRTIO_PCI_VRING_ALIGN; in qvirtio_pci_virtqueue_setup_common() [all …]
|
H A D | virtio-pci-modern.c | 148 static bool get_queue_isr_status(QVirtioDevice *d, QVirtQueue *vq) in get_queue_isr_status() argument 153 QVirtQueuePCI *vqpci = container_of(vq, QVirtQueuePCI, vq); in get_queue_isr_status() 200 static void set_queue_address(QVirtioDevice *d, QVirtQueue *vq) in set_queue_address() argument 206 vq->desc); in set_queue_address() 209 vq->desc >> 32); in set_queue_address() 213 vq->avail); in set_queue_address() 216 vq->avail >> 32); in set_queue_address() 220 vq->used); in set_queue_address() 223 vq->used >> 32); in set_queue_address() 230 QVirtQueue *vq; in virtqueue_setup() local [all …]
|
/qemu/linux-headers/asm-arm64/ |
H A D | sve_context.h | 42 #define __sve_vl_from_vq(vq) ((vq) * __SVE_VQ_BYTES) argument 44 #define __SVE_ZREG_SIZE(vq) ((__u32)(vq) * __SVE_VQ_BYTES) argument 45 #define __SVE_PREG_SIZE(vq) ((__u32)(vq) * (__SVE_VQ_BYTES / 8)) argument 46 #define __SVE_FFR_SIZE(vq) __SVE_PREG_SIZE(vq) argument 49 #define __SVE_ZREG_OFFSET(vq, n) \ argument 50 (__SVE_ZREGS_OFFSET + __SVE_ZREG_SIZE(vq) * (n)) 51 #define __SVE_ZREGS_SIZE(vq) \ argument 52 (__SVE_ZREG_OFFSET(vq, __SVE_NUM_ZREGS) - __SVE_ZREGS_OFFSET) 54 #define __SVE_PREGS_OFFSET(vq) \ argument 55 (__SVE_ZREGS_OFFSET + __SVE_ZREGS_SIZE(vq)) [all …]
|
/qemu/subprojects/libvhost-user/ |
H A D | libvhost-user.c | 287 map_ring(VuDev *dev, VuVirtq *vq) in map_ring() argument 289 vq->vring.desc = qva_to_va(dev, vq->vra.desc_user_addr); in map_ring() 290 vq->vring.used = qva_to_va(dev, vq->vra.used_user_addr); in map_ring() 291 vq->vring.avail = qva_to_va(dev, vq->vra.avail_user_addr); in map_ring() 294 DPRINT(" vring_desc at %p\n", vq->vring.desc); in map_ring() 295 DPRINT(" vring_used at %p\n", vq->vring.used); in map_ring() 296 DPRINT(" vring_avail at %p\n", vq->vring.avail); in map_ring() 298 return !(vq->vring.desc && vq->vring.used && vq->vring.avail); in map_ring() 302 vu_is_vq_usable(VuDev *dev, VuVirtq *vq) in vu_is_vq_usable() argument 308 if (likely(vq->vring.avail)) { in vu_is_vq_usable() [all …]
|
H A D | libvhost-user.h | 400 VuVirtq *vq; member 540 void vu_set_queue_handler(VuDev *dev, VuVirtq *vq, 555 bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd, 604 void vu_queue_set_notification(VuDev *dev, VuVirtq *vq, int enable); 613 bool vu_queue_enabled(VuDev *dev, VuVirtq *vq); 622 bool vu_queue_started(const VuDev *dev, const VuVirtq *vq); 631 bool vu_queue_empty(VuDev *dev, VuVirtq *vq); 640 void vu_queue_notify(VuDev *dev, VuVirtq *vq); 652 void vu_queue_notify_sync(VuDev *dev, VuVirtq *vq); 663 void *vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz); [all …]
|
/qemu/tests/qtest/ |
H A D | virtio-blk-test.c | 124 QVirtQueue *vq; in test_basic() local 136 vq = qvirtqueue_setup(dev, alloc, 0); in test_basic() 152 free_head = qvirtqueue_add(qts, vq, req_addr, 16, false, true); in test_basic() 153 qvirtqueue_add(qts, vq, req_addr + 16, 512, false, true); in test_basic() 154 qvirtqueue_add(qts, vq, req_addr + 528, 1, true, false); in test_basic() 156 qvirtqueue_kick(qts, dev, vq, free_head); in test_basic() 158 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in test_basic() 175 free_head = qvirtqueue_add(qts, vq, req_addr, 16, false, true); in test_basic() 176 qvirtqueue_add(qts, vq, req_addr + 16, 512, true, true); in test_basic() 177 qvirtqueue_add(qts, vq, req_addr + 528, 1, true, false); in test_basic() [all …]
|
H A D | vhost-user-blk-test.c | 100 QVirtQueue *vq, in test_invalid_discard_write_zeroes() argument 125 free_head = qvirtqueue_add(qts, vq, req_addr, 16, false, true); in test_invalid_discard_write_zeroes() 126 qvirtqueue_add(qts, vq, req_addr + 16, sizeof(dwz_hdr2), false, true); in test_invalid_discard_write_zeroes() 127 qvirtqueue_add(qts, vq, req_addr + 16 + sizeof(dwz_hdr2), 1, true, in test_invalid_discard_write_zeroes() 130 qvirtqueue_kick(qts, dev, vq, free_head); in test_invalid_discard_write_zeroes() 132 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in test_invalid_discard_write_zeroes() 150 free_head = qvirtqueue_add(qts, vq, req_addr, 16, false, true); in test_invalid_discard_write_zeroes() 151 qvirtqueue_add(qts, vq, req_addr + 16, sizeof(dwz_hdr), false, true); in test_invalid_discard_write_zeroes() 152 qvirtqueue_add(qts, vq, req_addr + 16 + sizeof(dwz_hdr), 1, true, in test_invalid_discard_write_zeroes() 155 qvirtqueue_kick(qts, dev, vq, free_head); in test_invalid_discard_write_zeroes() [all …]
|
H A D | virtio-net-test.c | 32 QGuestAllocator *alloc, QVirtQueue *vq, in rx_test() argument 54 free_head = qvirtqueue_add(qts, vq, req_addr, 64, true, false); in rx_test() 55 qvirtqueue_kick(qts, dev, vq, free_head); in rx_test() 60 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in rx_test() 69 QGuestAllocator *alloc, QVirtQueue *vq, in tx_test() argument 82 free_head = qvirtqueue_add(qts, vq, req_addr, 64, false, false); in tx_test() 83 qvirtqueue_kick(qts, dev, vq, free_head); in tx_test() 85 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in tx_test() 99 QGuestAllocator *alloc, QVirtQueue *vq, in rx_stop_cont_test() argument 122 free_head = qvirtqueue_add(qts, vq, req_addr, 64, true, false); in rx_stop_cont_test() [all …]
|
H A D | virtio-iommu-test.c | 63 QVirtQueue *vq = v_iommu->vq; in send_attach_detach() local 80 free_head = qvirtqueue_add(qts, vq, ro_addr, ro_size, false, true); in send_attach_detach() 81 qvirtqueue_add(qts, vq, wr_addr, wr_size, true, false); in send_attach_detach() 82 qvirtqueue_kick(qts, dev, vq, free_head); in send_attach_detach() 83 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in send_attach_detach() 105 QVirtQueue *vq = v_iommu->vq; in send_map() local 125 free_head = qvirtqueue_add(qts, vq, ro_addr, ro_size, false, true); in send_map() 126 qvirtqueue_add(qts, vq, wr_addr, wr_size, true, false); in send_map() 127 qvirtqueue_kick(qts, dev, vq, free_head); in send_map() 128 qvirtio_wait_used_elem(qts, dev, vq, free_head, NULL, in send_map() [all …]
|
/qemu/linux-user/aarch64/ |
H A D | target_prctl.h | 32 uint32_t vq, old_vq; in do_prctl_sve_set_vl() local 42 vq = MAX(arg2 / 16, 1); in do_prctl_sve_set_vl() 43 vq = MIN(vq, ARM_MAX_VQ); in do_prctl_sve_set_vl() 44 env->vfp.zcr_el[1] = vq - 1; in do_prctl_sve_set_vl() 47 vq = sve_vq(env); in do_prctl_sve_set_vl() 48 if (vq < old_vq) { in do_prctl_sve_set_vl() 49 aarch64_sve_narrow_vq(env, vq); in do_prctl_sve_set_vl() 51 return vq * 16; in do_prctl_sve_set_vl() 76 int vq, old_vq; in do_prctl_sme_set_vl() local 86 vq = MAX(arg2 / 16, 1); in do_prctl_sme_set_vl() [all …]
|
H A D | signal.c | 198 int i, j, vq = sve_vq(env); in target_setup_sve_record() local 203 __put_user(vq * TARGET_SVE_VQ_BYTES, &sve->vl); in target_setup_sve_record() 213 uint64_t *z = (void *)sve + TARGET_SVE_SIG_ZREG_OFFSET(vq, i); in target_setup_sve_record() 214 for (j = 0; j < vq * 2; ++j) { in target_setup_sve_record() 219 uint16_t *p = (void *)sve + TARGET_SVE_SIG_PREG_OFFSET(vq, i); in target_setup_sve_record() 220 for (j = 0; j < vq; ++j) { in target_setup_sve_record() 230 int vq = sme_vq(env); in target_setup_za_record() local 231 int vl = vq * TARGET_SVE_VQ_BYTES; in target_setup_za_record() 242 assert(size == TARGET_ZA_SIG_CONTEXT_SIZE(vq)); in target_setup_za_record() 249 uint64_t *z = (void *)za + TARGET_ZA_SIG_ZAV_OFFSET(vq, i); in target_setup_za_record() [all …]
|
/qemu/block/export/ |
H A D | vduse-blk.c | 40 VduseVirtq *vq; member 64 vduse_queue_push(req->vq, &req->elem, in_len); in vduse_blk_req_complete() 65 vduse_queue_notify(req->vq); in vduse_blk_req_complete() 73 VduseVirtq *vq = req->vq; in vduse_blk_virtio_process_req() local 74 VduseDev *dev = vduse_queue_get_dev(vq); in vduse_blk_virtio_process_req() 95 static void vduse_blk_vq_handler(VduseDev *dev, VduseVirtq *vq) in vduse_blk_vq_handler() argument 102 req = vduse_queue_pop(vq, sizeof(VduseBlkReq)); in vduse_blk_vq_handler() 106 req->vq = vq; in vduse_blk_vq_handler() 118 VduseVirtq *vq = opaque; in on_vduse_vq_kick() local 119 VduseDev *dev = vduse_queue_get_dev(vq); in on_vduse_vq_kick() [all …]
|
/qemu/include/hw/virtio/ |
H A D | virtio.h | 133 VirtQueue *vq; member 258 void virtio_delete_queue(VirtQueue *vq); 260 void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem, 262 void virtqueue_flush(VirtQueue *vq, unsigned int count); 263 void virtqueue_detach_element(VirtQueue *vq, const VirtQueueElement *elem, 265 void virtqueue_unpop(VirtQueue *vq, const VirtQueueElement *elem, 267 bool virtqueue_rewind(VirtQueue *vq, unsigned int num); 268 void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem, 272 void *virtqueue_pop(VirtQueue *vq, size_t sz); 273 unsigned int virtqueue_drop_all(VirtQueue *vq); [all …]
|
/qemu/target/arm/ |
H A D | gdbstub64.c | 144 int vq, len = 0; in aarch64_gdb_get_sve_reg() local 145 for (vq = 0; vq < cpu->sve_max_vq; vq++) { in aarch64_gdb_get_sve_reg() 147 env->vfp.zregs[reg].d[vq * 2 + 1], in aarch64_gdb_get_sve_reg() 148 env->vfp.zregs[reg].d[vq * 2]); in aarch64_gdb_get_sve_reg() 160 int vq, len = 0; in aarch64_gdb_get_sve_reg() local 161 for (vq = 0; vq < cpu->sve_max_vq; vq = vq + 4) { in aarch64_gdb_get_sve_reg() 162 len += gdb_get_reg64(buf, env->vfp.pregs[preg].p[vq / 4]); in aarch64_gdb_get_sve_reg() 172 int vq = sve_vqm1_for_el(env, arm_current_el(env)) + 1; in aarch64_gdb_get_sve_reg() local 173 return gdb_get_reg64(buf, vq * 2); in aarch64_gdb_get_sve_reg() 194 int vq, len = 0; in aarch64_gdb_set_sve_reg() local [all …]
|
H A D | cpu64.c | 60 uint32_t tmp, vq, max_vq = 0; in arm_cpu_sve_finalize() local 128 vq = ctz32(tmp) + 1; in arm_cpu_sve_finalize() 130 max_vq = vq <= ARM_MAX_VQ ? vq - 1 : ARM_MAX_VQ; in arm_cpu_sve_finalize() 135 error_setg(errp, "cannot disable sve%d", vq * 128); in arm_cpu_sve_finalize() 138 vq * 128); in arm_cpu_sve_finalize() 181 vq = 32 - clz32(tmp); in arm_cpu_sve_finalize() 182 if (vq_map & (1 << (vq - 1))) { in arm_cpu_sve_finalize() 186 "the vector length %d-bits.\n", vq * 128); in arm_cpu_sve_finalize() 191 error_setg(errp, "cannot enable sve%d", vq * 128); in arm_cpu_sve_finalize() 194 "the vector length %d-bits.\n", vq * 128); in arm_cpu_sve_finalize() [all …]
|
H A D | arch_dump.c | 146 static off_t sve_zreg_offset(uint32_t vq, int n) in sve_zreg_offset() argument 149 return ROUND_UP(off, 16) + vq * 16 * n; in sve_zreg_offset() 152 static off_t sve_preg_offset(uint32_t vq, int n) in sve_preg_offset() argument 154 return sve_zreg_offset(vq, 32) + vq * 16 / 8 * n; in sve_preg_offset() 157 static off_t sve_fpsr_offset(uint32_t vq) in sve_fpsr_offset() argument 159 off_t off = sve_preg_offset(vq, 17); in sve_fpsr_offset() 163 static off_t sve_fpcr_offset(uint32_t vq) in sve_fpcr_offset() argument 165 return sve_fpsr_offset(vq) + sizeof(uint32_t); in sve_fpcr_offset() 173 static size_t sve_size_vq(uint32_t vq) in sve_size_vq() argument 175 off_t off = sve_fpcr_offset(vq) + sizeof(uint32_t); in sve_size_vq() [all …]
|
/qemu/hw/char/ |
H A D | virtio-serial-bus.c | 54 static VirtIOSerialPort *find_port_by_vq(VirtIOSerial *vser, VirtQueue *vq) in find_port_by_vq() argument 59 if (port->ivq == vq || port->ovq == vq) in find_port_by_vq() 104 VirtQueue *vq; in write_to_port() local 107 vq = port->ivq; in write_to_port() 108 if (!virtio_queue_ready(vq)) { in write_to_port() 116 elem = virtqueue_pop(vq, sizeof(VirtQueueElement)); in write_to_port() 125 virtqueue_push(vq, elem, len); in write_to_port() 129 virtio_notify(VIRTIO_DEVICE(port->vser), vq); in write_to_port() 133 static void discard_vq_data(VirtQueue *vq, VirtIODevice *vdev) in discard_vq_data() argument 137 if (!virtio_queue_ready(vq)) { in discard_vq_data() [all …]
|