Lines Matching refs:dev

23 static int vhost_kernel_call(struct vhost_dev *dev, unsigned long int request,  in vhost_kernel_call()  argument
26 int fd = (uintptr_t) dev->opaque; in vhost_kernel_call()
29 assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL); in vhost_kernel_call()
35 static int vhost_kernel_init(struct vhost_dev *dev, void *opaque, Error **errp) in vhost_kernel_init() argument
37 assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL); in vhost_kernel_init()
39 dev->opaque = opaque; in vhost_kernel_init()
44 static int vhost_kernel_cleanup(struct vhost_dev *dev) in vhost_kernel_cleanup() argument
46 int fd = (uintptr_t) dev->opaque; in vhost_kernel_cleanup()
48 assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL); in vhost_kernel_cleanup()
53 static int vhost_kernel_memslots_limit(struct vhost_dev *dev) in vhost_kernel_memslots_limit() argument
72 static int vhost_kernel_net_set_backend(struct vhost_dev *dev, in vhost_kernel_net_set_backend() argument
75 return vhost_kernel_call(dev, VHOST_NET_SET_BACKEND, file); in vhost_kernel_net_set_backend()
78 static int vhost_kernel_scsi_set_endpoint(struct vhost_dev *dev, in vhost_kernel_scsi_set_endpoint() argument
81 return vhost_kernel_call(dev, VHOST_SCSI_SET_ENDPOINT, target); in vhost_kernel_scsi_set_endpoint()
84 static int vhost_kernel_scsi_clear_endpoint(struct vhost_dev *dev, in vhost_kernel_scsi_clear_endpoint() argument
87 return vhost_kernel_call(dev, VHOST_SCSI_CLEAR_ENDPOINT, target); in vhost_kernel_scsi_clear_endpoint()
90 static int vhost_kernel_scsi_get_abi_version(struct vhost_dev *dev, int *version) in vhost_kernel_scsi_get_abi_version() argument
92 return vhost_kernel_call(dev, VHOST_SCSI_GET_ABI_VERSION, version); in vhost_kernel_scsi_get_abi_version()
95 static int vhost_kernel_set_log_base(struct vhost_dev *dev, uint64_t base, in vhost_kernel_set_log_base() argument
98 return vhost_kernel_call(dev, VHOST_SET_LOG_BASE, &base); in vhost_kernel_set_log_base()
101 static int vhost_kernel_set_mem_table(struct vhost_dev *dev, in vhost_kernel_set_mem_table() argument
104 return vhost_kernel_call(dev, VHOST_SET_MEM_TABLE, mem); in vhost_kernel_set_mem_table()
107 static int vhost_kernel_set_vring_addr(struct vhost_dev *dev, in vhost_kernel_set_vring_addr() argument
110 return vhost_kernel_call(dev, VHOST_SET_VRING_ADDR, addr); in vhost_kernel_set_vring_addr()
113 static int vhost_kernel_set_vring_endian(struct vhost_dev *dev, in vhost_kernel_set_vring_endian() argument
116 return vhost_kernel_call(dev, VHOST_SET_VRING_ENDIAN, ring); in vhost_kernel_set_vring_endian()
119 static int vhost_kernel_set_vring_num(struct vhost_dev *dev, in vhost_kernel_set_vring_num() argument
122 return vhost_kernel_call(dev, VHOST_SET_VRING_NUM, ring); in vhost_kernel_set_vring_num()
125 static int vhost_kernel_set_vring_base(struct vhost_dev *dev, in vhost_kernel_set_vring_base() argument
128 return vhost_kernel_call(dev, VHOST_SET_VRING_BASE, ring); in vhost_kernel_set_vring_base()
131 static int vhost_kernel_get_vring_base(struct vhost_dev *dev, in vhost_kernel_get_vring_base() argument
134 return vhost_kernel_call(dev, VHOST_GET_VRING_BASE, ring); in vhost_kernel_get_vring_base()
137 static int vhost_kernel_set_vring_kick(struct vhost_dev *dev, in vhost_kernel_set_vring_kick() argument
140 return vhost_kernel_call(dev, VHOST_SET_VRING_KICK, file); in vhost_kernel_set_vring_kick()
143 static int vhost_kernel_set_vring_call(struct vhost_dev *dev, in vhost_kernel_set_vring_call() argument
146 return vhost_kernel_call(dev, VHOST_SET_VRING_CALL, file); in vhost_kernel_set_vring_call()
149 static int vhost_kernel_set_vring_err(struct vhost_dev *dev, in vhost_kernel_set_vring_err() argument
152 return vhost_kernel_call(dev, VHOST_SET_VRING_ERR, file); in vhost_kernel_set_vring_err()
155 static int vhost_kernel_set_vring_busyloop_timeout(struct vhost_dev *dev, in vhost_kernel_set_vring_busyloop_timeout() argument
158 return vhost_kernel_call(dev, VHOST_SET_VRING_BUSYLOOP_TIMEOUT, s); in vhost_kernel_set_vring_busyloop_timeout()
161 static int vhost_kernel_new_worker(struct vhost_dev *dev, in vhost_kernel_new_worker() argument
164 return vhost_kernel_call(dev, VHOST_NEW_WORKER, worker); in vhost_kernel_new_worker()
167 static int vhost_kernel_free_worker(struct vhost_dev *dev, in vhost_kernel_free_worker() argument
170 return vhost_kernel_call(dev, VHOST_FREE_WORKER, worker); in vhost_kernel_free_worker()
173 static int vhost_kernel_attach_vring_worker(struct vhost_dev *dev, in vhost_kernel_attach_vring_worker() argument
176 return vhost_kernel_call(dev, VHOST_ATTACH_VRING_WORKER, worker); in vhost_kernel_attach_vring_worker()
179 static int vhost_kernel_get_vring_worker(struct vhost_dev *dev, in vhost_kernel_get_vring_worker() argument
182 return vhost_kernel_call(dev, VHOST_GET_VRING_WORKER, worker); in vhost_kernel_get_vring_worker()
185 static int vhost_kernel_set_features(struct vhost_dev *dev, in vhost_kernel_set_features() argument
188 return vhost_kernel_call(dev, VHOST_SET_FEATURES, &features); in vhost_kernel_set_features()
191 static int vhost_kernel_set_backend_cap(struct vhost_dev *dev) in vhost_kernel_set_backend_cap() argument
197 if (vhost_kernel_call(dev, VHOST_GET_BACKEND_FEATURES, &features)) { in vhost_kernel_set_backend_cap()
202 r = vhost_kernel_call(dev, VHOST_SET_BACKEND_FEATURES, in vhost_kernel_set_backend_cap()
208 dev->backend_cap = features; in vhost_kernel_set_backend_cap()
213 static int vhost_kernel_get_features(struct vhost_dev *dev, in vhost_kernel_get_features() argument
216 return vhost_kernel_call(dev, VHOST_GET_FEATURES, features); in vhost_kernel_get_features()
219 static int vhost_kernel_set_owner(struct vhost_dev *dev) in vhost_kernel_set_owner() argument
221 return vhost_kernel_call(dev, VHOST_SET_OWNER, NULL); in vhost_kernel_set_owner()
224 static int vhost_kernel_get_vq_index(struct vhost_dev *dev, int idx) in vhost_kernel_get_vq_index() argument
226 assert(idx >= dev->vq_index && idx < dev->vq_index + dev->nvqs); in vhost_kernel_get_vq_index()
228 return idx - dev->vq_index; in vhost_kernel_get_vq_index()
231 static int vhost_kernel_vsock_set_guest_cid(struct vhost_dev *dev, in vhost_kernel_vsock_set_guest_cid() argument
234 return vhost_kernel_call(dev, VHOST_VSOCK_SET_GUEST_CID, &guest_cid); in vhost_kernel_vsock_set_guest_cid()
237 static int vhost_kernel_vsock_set_running(struct vhost_dev *dev, int start) in vhost_kernel_vsock_set_running() argument
239 return vhost_kernel_call(dev, VHOST_VSOCK_SET_RUNNING, &start); in vhost_kernel_vsock_set_running()
244 struct vhost_dev *dev = opaque; in vhost_kernel_iotlb_read() local
247 if (dev->backend_cap & in vhost_kernel_iotlb_read()
251 while ((len = read((uintptr_t)dev->opaque, &msg, sizeof msg)) > 0) { in vhost_kernel_iotlb_read()
261 vhost_backend_handle_iotlb_msg(dev, &msg.iotlb); in vhost_kernel_iotlb_read()
266 while ((len = read((uintptr_t)dev->opaque, &msg, sizeof msg)) > 0) { in vhost_kernel_iotlb_read()
276 vhost_backend_handle_iotlb_msg(dev, &msg.iotlb); in vhost_kernel_iotlb_read()
281 static int vhost_kernel_send_device_iotlb_msg(struct vhost_dev *dev, in vhost_kernel_send_device_iotlb_msg() argument
284 if (dev->backend_cap & (1ULL << VHOST_BACKEND_F_IOTLB_MSG_V2)) { in vhost_kernel_send_device_iotlb_msg()
290 if (write((uintptr_t)dev->opaque, &msg, sizeof msg) != sizeof msg) { in vhost_kernel_send_device_iotlb_msg()
300 if (write((uintptr_t)dev->opaque, &msg, sizeof msg) != sizeof msg) { in vhost_kernel_send_device_iotlb_msg()
309 static void vhost_kernel_set_iotlb_callback(struct vhost_dev *dev, in vhost_kernel_set_iotlb_callback() argument
313 qemu_set_fd_handler((uintptr_t)dev->opaque, in vhost_kernel_set_iotlb_callback()
314 vhost_kernel_iotlb_read, NULL, dev); in vhost_kernel_set_iotlb_callback()
316 qemu_set_fd_handler((uintptr_t)dev->opaque, NULL, NULL, NULL); in vhost_kernel_set_iotlb_callback()
356 int vhost_backend_update_device_iotlb(struct vhost_dev *dev, in vhost_backend_update_device_iotlb() argument
382 if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) in vhost_backend_update_device_iotlb()
383 return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); in vhost_backend_update_device_iotlb()
388 int vhost_backend_invalidate_device_iotlb(struct vhost_dev *dev, in vhost_backend_invalidate_device_iotlb() argument
397 if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg) in vhost_backend_invalidate_device_iotlb()
398 return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg); in vhost_backend_invalidate_device_iotlb()
403 int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev, in vhost_backend_handle_iotlb_msg() argument
408 if (unlikely(!dev->vdev)) { in vhost_backend_handle_iotlb_msg()
415 ret = vhost_device_iotlb_miss(dev, imsg->iova, in vhost_backend_handle_iotlb_msg()