Lines Matching refs:vqa
87 vq_action vqa; in virtio_blk_fuzz() local
88 while (Size >= sizeof(vqa)) { in virtio_blk_fuzz()
90 memcpy(&vqa, Data, sizeof(vqa)); in virtio_blk_fuzz()
92 Data += sizeof(vqa); in virtio_blk_fuzz()
93 Size -= sizeof(vqa); in virtio_blk_fuzz()
95 vqa.queue = vqa.queue % queues->num_queues; in virtio_blk_fuzz()
97 vqa.length = vqa.length >= Size ? Size : vqa.length; in virtio_blk_fuzz()
98 vqa.write = vqa.write & 1; in virtio_blk_fuzz()
99 vqa.next = vqa.next & 1; in virtio_blk_fuzz()
100 vqa.kick = vqa.kick & 1; in virtio_blk_fuzz()
102 q = queues->vq[vqa.queue]; in virtio_blk_fuzz()
105 uint64_t req_addr = guest_alloc(t_alloc, vqa.length); in virtio_blk_fuzz()
106 qtest_memwrite(s, req_addr, Data, vqa.length); in virtio_blk_fuzz()
107 if (vq_touched[vqa.queue] == 0) { in virtio_blk_fuzz()
108 vq_touched[vqa.queue] = 1; in virtio_blk_fuzz()
109 free_head[vqa.queue] = qvirtqueue_add(s, q, req_addr, vqa.length, in virtio_blk_fuzz()
110 vqa.write, vqa.next); in virtio_blk_fuzz()
112 qvirtqueue_add(s, q, req_addr, vqa.length, vqa.write , vqa.next); in virtio_blk_fuzz()
115 if (vqa.kick) { in virtio_blk_fuzz()
116 qvirtqueue_kick(s, dev, q, free_head[vqa.queue]); in virtio_blk_fuzz()
117 free_head[vqa.queue] = 0; in virtio_blk_fuzz()
119 Data += vqa.length; in virtio_blk_fuzz()
120 Size -= vqa.length; in virtio_blk_fuzz()