From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: mst@redhat.com, vkaplans@redhat.com, jasowang@redhat.com,
wexu@redhat.com, peterx@redhat.com, yuanhan.liu@linux.intel.com,
virtio-comment@lists.oasis-open.org, qemu-devel@nongnu.org
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
Subject: [Qemu-devel] [RFC 1/2] spec/vhost-user: Introduce secondary channel for slave initiated requests
Date: Tue, 11 Apr 2017 12:10:01 +0200 [thread overview]
Message-ID: <20170411101002.28451-2-maxime.coquelin@redhat.com> (raw)
In-Reply-To: <20170411101002.28451-1-maxime.coquelin@redhat.com>
This vhost-user specification update aims at enabling the
slave to send requests to the master using a dedicated socket
created by the master.
It can be used for example when the slave implements a device
IOTLB to send cache miss requests to the master.
The message types list is updated with an "Initiator" field to
indicate for each type whether the master and/or slave can
initiate the request.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
docs/specs/vhost-user.txt | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/docs/specs/vhost-user.txt b/docs/specs/vhost-user.txt
index 036890f..b365047 100644
--- a/docs/specs/vhost-user.txt
+++ b/docs/specs/vhost-user.txt
@@ -139,6 +139,7 @@ in the ancillary data:
* VHOST_USER_SET_VRING_KICK
* VHOST_USER_SET_VRING_CALL
* VHOST_USER_SET_VRING_ERR
+ * VHOST_USER_SET_SLAVE_REQ_FD
If Master is unable to send the full message or receives a wrong reply it will
close the connection. An optional reconnection mechanism can be implemented.
@@ -150,6 +151,11 @@ As older slaves don't support negotiating protocol features,
a feature bit was dedicated for this purpose:
#define VHOST_USER_F_PROTOCOL_FEATURES 30
+If the slave supports VHOST_USER_PROTOCOL_F_SLAVE_REQ protocol feature, the
+master may create a secondary Unix domain socket and send its file descriptor
+to the slave using VHOST_USER_SET_SLAVE_REQ_FD request. This new channel enables
+the slave to send message requests and master to send message replies.
+
Starting and stopping rings
----------------------
Client must only process each ring when it is started.
@@ -260,6 +266,7 @@ Protocol features
#define VHOST_USER_PROTOCOL_F_RARP 2
#define VHOST_USER_PROTOCOL_F_REPLY_ACK 3
#define VHOST_USER_PROTOCOL_F_MTU 4
+#define VHOST_USER_PROTOCOL_F_SLAVE_REQ 5
Message types
-------------
@@ -268,6 +275,7 @@ Message types
Id: 1
Equivalent ioctl: VHOST_GET_FEATURES
+ Initiator: Master
Master payload: N/A
Slave payload: u64
@@ -279,6 +287,7 @@ Message types
Id: 2
Ioctl: VHOST_SET_FEATURES
+ Initiator: Master
Master payload: u64
Enable features in the underlying vhost implementation using a bitmask.
@@ -289,6 +298,7 @@ Message types
Id: 15
Equivalent ioctl: VHOST_GET_FEATURES
+ Initiator: Master
Master payload: N/A
Slave payload: u64
@@ -302,6 +312,7 @@ Message types
Id: 16
Ioctl: VHOST_SET_FEATURES
+ Initiator: Master
Master payload: u64
Enable protocol features in the underlying vhost implementation.
@@ -314,6 +325,7 @@ Message types
Id: 3
Equivalent ioctl: VHOST_SET_OWNER
+ Initiator: Master
Master payload: N/A
Issued when a new connection is established. It sets the current Master
@@ -323,6 +335,7 @@ Message types
* VHOST_USER_RESET_OWNER
Id: 4
+ Initiator: Master
Master payload: N/A
This is no longer used. Used to be sent to request disabling
@@ -335,6 +348,7 @@ Message types
Id: 5
Equivalent ioctl: VHOST_SET_MEM_TABLE
+ Initiator: Master
Master payload: memory regions description
Sets the memory map regions on the slave so it can translate the vring
@@ -346,6 +360,7 @@ Message types
Id: 6
Equivalent ioctl: VHOST_SET_LOG_BASE
+ Initiator: Master
Master payload: u64
Slave payload: N/A
@@ -360,6 +375,7 @@ Message types
Id: 7
Equivalent ioctl: VHOST_SET_LOG_FD
+ Initiator: Master
Master payload: N/A
Sets the logging file descriptor, which is passed as ancillary data.
@@ -368,6 +384,7 @@ Message types
Id: 8
Equivalent ioctl: VHOST_SET_VRING_NUM
+ Initiator: Master
Master payload: vring state description
Set the size of the queue.
@@ -376,6 +393,7 @@ Message types
Id: 9
Equivalent ioctl: VHOST_SET_VRING_ADDR
+ Initiator: Master
Master payload: vring address description
Slave payload: N/A
@@ -385,6 +403,7 @@ Message types
Id: 10
Equivalent ioctl: VHOST_SET_VRING_BASE
+ Initiator: Master
Master payload: vring state description
Sets the base offset in the available vring.
@@ -393,6 +412,7 @@ Message types
Id: 11
Equivalent ioctl: VHOST_USER_GET_VRING_BASE
+ Initiator: Master
Master payload: vring state description
Slave payload: vring state description
@@ -402,6 +422,7 @@ Message types
Id: 12
Equivalent ioctl: VHOST_SET_VRING_KICK
+ Initiator: Master
Master payload: u64
Set the event file descriptor for adding buffers to the vring. It
@@ -415,6 +436,7 @@ Message types
Id: 13
Equivalent ioctl: VHOST_SET_VRING_CALL
+ Initiator: Master
Master payload: u64
Set the event file descriptor to signal when buffers are used. It
@@ -428,6 +450,7 @@ Message types
Id: 14
Equivalent ioctl: VHOST_SET_VRING_ERR
+ Initiator: Master
Master payload: u64
Set the event file descriptor to signal when error occurs. It
@@ -440,6 +463,7 @@ Message types
Id: 17
Equivalent ioctl: N/A
+ Initiator: Master
Master payload: N/A
Slave payload: u64
@@ -451,6 +475,7 @@ Message types
Id: 18
Equivalent ioctl: N/A
+ Initiator: Master
Master payload: vring state description
Signal slave to enable or disable corresponding vring.
@@ -461,6 +486,7 @@ Message types
Id: 19
Equivalent ioctl: N/A
+ Initiator: Master
Master payload: u64
Ask vhost user backend to broadcast a fake RARP to notify the migration
@@ -475,6 +501,7 @@ Message types
Id: 20
Equivalent ioctl: N/A
+ Initiator: Master
Master payload: u64
Set host MTU value exposed to the guest.
@@ -486,6 +513,17 @@ Message types
If VHOST_USER_PROTOCOL_F_REPLY_ACK is negotiated, slave must respond
with zero in case the specified MTU is valid, or non-zero otherwise.
+ * VHOST_USER_SET_SLAVE_REQ_FD
+
+ Id: 21
+ Equivalent ioctl: N/A
+ Initiator: Master
+
+ Set the socket file descriptor for slave initiated requests.
+ This request should be sent only when VHOST_USER_F_PROTOCOL_FEATURES
+ has been negotiated, and protocol feature bit VHOST_USER_PROTOCOL_F_SLAVE_REQ
+ bit is present in VHOST_USER_GET_PROTOCOL_FEATURES.
+
VHOST_USER_PROTOCOL_F_REPLY_ACK:
-------------------------------
The original vhost-user specification only demands replies for certain
--
2.9.3
next prev parent reply other threads:[~2017-04-11 10:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-11 10:10 [Qemu-devel] [RFC 0/2] vhost-user: Specify device IOTLB support Maxime Coquelin
2017-04-11 10:10 ` Maxime Coquelin [this message]
2017-04-11 13:06 ` [Qemu-devel] [RFC 1/2] spec/vhost-user: Introduce secondary channel for slave initiated requests Marc-André Lureau
2017-04-11 13:53 ` Maxime Coquelin
2017-04-14 9:03 ` Marc-André Lureau
2017-04-24 8:05 ` [Qemu-devel] [virtio-comment] " Wei Wang
2017-04-25 11:55 ` Maxime Coquelin
2017-04-26 11:29 ` Wei Wang
2017-04-11 10:10 ` [Qemu-devel] [RFC 2/2] spec/vhost-user spec: Add IOMMU support Maxime Coquelin
2017-04-11 13:20 ` Peter Xu
2017-04-11 15:16 ` Maxime Coquelin
2017-04-12 7:17 ` Peter Xu
2017-04-12 7:24 ` Maxime Coquelin
2017-04-12 7:49 ` Peter Xu
2017-04-12 9:00 ` Jason Wang
2017-04-12 8:54 ` Jason Wang
2017-04-12 9:26 ` Peter Xu
2017-04-13 7:12 ` Jason Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170411101002.28451-2-maxime.coquelin@redhat.com \
--to=maxime.coquelin@redhat.com \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=virtio-comment@lists.oasis-open.org \
--cc=vkaplans@redhat.com \
--cc=wexu@redhat.com \
--cc=yuanhan.liu@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).