mirror of https://github.com/xemu-project/xemu.git
vhost+postcopy: Register shared ufd with postcopy
Register the UFD that comes in as the response to the 'advise' method with the postcopy code. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
00fa4fc85b
commit
f82c11165f
|
@ -171,6 +171,7 @@ struct vhost_user {
|
||||||
CharBackend *chr;
|
CharBackend *chr;
|
||||||
int slave_fd;
|
int slave_fd;
|
||||||
NotifierWithReturn postcopy_notifier;
|
NotifierWithReturn postcopy_notifier;
|
||||||
|
struct PostCopyFD postcopy_fd;
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool ioeventfd_enabled(void)
|
static bool ioeventfd_enabled(void)
|
||||||
|
@ -796,6 +797,17 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called back from the postcopy fault thread when a fault is received on our
|
||||||
|
* ufd.
|
||||||
|
* TODO: This is Linux specific
|
||||||
|
*/
|
||||||
|
static int vhost_user_postcopy_fault_handler(struct PostCopyFD *pcfd,
|
||||||
|
void *ufd)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called at the start of an inbound postcopy on reception of the
|
* Called at the start of an inbound postcopy on reception of the
|
||||||
* 'advise' command.
|
* 'advise' command.
|
||||||
|
@ -835,8 +847,14 @@ static int vhost_user_postcopy_advise(struct vhost_dev *dev, Error **errp)
|
||||||
error_setg(errp, "%s: Failed to get ufd", __func__);
|
error_setg(errp, "%s: Failed to get ufd", __func__);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
fcntl(ufd, F_SETFL, O_NONBLOCK);
|
||||||
|
|
||||||
/* TODO: register ufd with userfault thread */
|
/* register ufd with userfault thread */
|
||||||
|
u->postcopy_fd.fd = ufd;
|
||||||
|
u->postcopy_fd.data = dev;
|
||||||
|
u->postcopy_fd.handler = vhost_user_postcopy_fault_handler;
|
||||||
|
u->postcopy_fd.idstr = "vhost-user"; /* Need to find unique name */
|
||||||
|
postcopy_register_shared_ufd(&u->postcopy_fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue