diff options
Diffstat (limited to 'hw/vhost.c')
-rw-r--r-- | hw/vhost.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/hw/vhost.c b/hw/vhost.c index 6082da287e..38cc3b365b 100644 --- a/hw/vhost.c +++ b/hw/vhost.c @@ -581,7 +581,7 @@ static void vhost_virtqueue_cleanup(struct vhost_dev *dev, 0, virtio_queue_get_desc_size(vdev, idx)); } -int vhost_dev_init(struct vhost_dev *hdev, int devfd) +int vhost_dev_init(struct vhost_dev *hdev, int devfd, bool force) { uint64_t features; int r; @@ -613,6 +613,7 @@ int vhost_dev_init(struct vhost_dev *hdev, int devfd) hdev->log_enabled = false; hdev->started = false; cpu_register_phys_memory_client(&hdev->client); + hdev->force = force; return 0; fail: r = -errno; @@ -627,6 +628,13 @@ void vhost_dev_cleanup(struct vhost_dev *hdev) close(hdev->control); } +bool vhost_dev_query(struct vhost_dev *hdev, VirtIODevice *vdev) +{ + return !vdev->binding->query_guest_notifiers || + vdev->binding->query_guest_notifiers(vdev->binding_opaque) || + hdev->force; +} + int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) { int i, r; |