Lines Matching full:scmi

2  * Vhost-user SCMI virtio device
14 #include "hw/virtio/vhost-user-scmi.h"
22 * Linux VirtIO SCMI guest driver.
36 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_start() local
39 struct vhost_dev *vhost_dev = &scmi->vhost_dev; in vu_scmi_start()
63 error_report("Error starting vhost-user-scmi: %d", ret); in vu_scmi_start()
66 scmi->started_vu = true; in vu_scmi_start()
73 for (i = 0; i < scmi->vhost_dev.nvqs; i++) { in vu_scmi_start()
88 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_stop() local
91 struct vhost_dev *vhost_dev = &scmi->vhost_dev; in vu_scmi_stop()
95 if (!scmi->started_vu) { in vu_scmi_stop()
98 scmi->started_vu = false; in vu_scmi_stop()
116 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_set_status() local
119 if (!scmi->connected) { in vu_scmi_set_status()
122 if (vhost_dev_is_started(&scmi->vhost_dev) == should_start) { in vu_scmi_set_status()
136 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_get_features() local
138 return vhost_get_features(&scmi->vhost_dev, feature_bits, features); in vu_scmi_get_features()
151 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_guest_notifier_mask() local
157 vhost_virtqueue_mask(&scmi->vhost_dev, vdev, idx, mask); in vu_scmi_guest_notifier_mask()
162 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_guest_notifier_pending() local
164 return vhost_virtqueue_pending(&scmi->vhost_dev, idx); in vu_scmi_guest_notifier_pending()
170 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_connect() local
172 if (scmi->connected) { in vu_scmi_connect()
175 scmi->connected = true; in vu_scmi_connect()
186 VHostUserSCMI *scmi = VHOST_USER_SCMI(vdev); in vu_scmi_disconnect() local
188 if (!scmi->connected) { in vu_scmi_disconnect()
191 scmi->connected = false; in vu_scmi_disconnect()
193 if (vhost_dev_is_started(&scmi->vhost_dev)) { in vu_scmi_disconnect()
217 static void do_vhost_user_cleanup(VirtIODevice *vdev, VHostUserSCMI *scmi) in do_vhost_user_cleanup() argument
219 virtio_delete_queue(scmi->cmd_vq); in do_vhost_user_cleanup()
220 virtio_delete_queue(scmi->event_vq); in do_vhost_user_cleanup()
221 g_free(scmi->vhost_dev.vqs); in do_vhost_user_cleanup()
223 vhost_user_cleanup(&scmi->vhost_user); in do_vhost_user_cleanup()
229 VHostUserSCMI *scmi = VHOST_USER_SCMI(dev); in vu_scmi_device_realize() local
232 if (!scmi->chardev.chr) { in vu_scmi_device_realize()
233 error_setg(errp, "vhost-user-scmi: chardev is mandatory"); in vu_scmi_device_realize()
239 if (!vhost_user_init(&scmi->vhost_user, &scmi->chardev, errp)) { in vu_scmi_device_realize()
245 scmi->cmd_vq = virtio_add_queue(vdev, 256, vu_scmi_handle_output); in vu_scmi_device_realize()
246 scmi->event_vq = virtio_add_queue(vdev, 256, vu_scmi_handle_output); in vu_scmi_device_realize()
247 scmi->vhost_dev.nvqs = 2; in vu_scmi_device_realize()
248 scmi->vhost_dev.vqs = g_new0(struct vhost_virtqueue, scmi->vhost_dev.nvqs); in vu_scmi_device_realize()
250 ret = vhost_dev_init(&scmi->vhost_dev, &scmi->vhost_user, in vu_scmi_device_realize()
254 "vhost-user-scmi: vhost_dev_init() failed"); in vu_scmi_device_realize()
255 do_vhost_user_cleanup(vdev, scmi); in vu_scmi_device_realize()
259 qemu_chr_fe_set_handlers(&scmi->chardev, NULL, NULL, vu_scmi_event, NULL, in vu_scmi_device_realize()
268 VHostUserSCMI *scmi = VHOST_USER_SCMI(dev); in vu_scmi_device_unrealize() local
271 vhost_dev_cleanup(&scmi->vhost_dev); in vu_scmi_device_unrealize()
272 do_vhost_user_cleanup(vdev, scmi); in vu_scmi_device_unrealize()
276 .name = "vhost-user-scmi",