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
Hi On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin <maxime.coquelin@redhat.com> wrote: > 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> > This is very similar to a patch I proposed for shutdown slave initiated requests: https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html > --- > 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 > > I like "slave-req-fd" better than "slave-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. > + > looks good to me > VHOST_USER_PROTOCOL_F_REPLY_ACK: > ------------------------------- > The original vhost-user specification only demands replies for certain > -- > 2.9.3 > > > -- Marc-André Lureau
Hi Marc-André, On 04/11/2017 03:06 PM, Marc-André Lureau wrote: > Hi > > On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com>> wrote: > > 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 > <mailto:maxime.coquelin@redhat.com>> > > > This is very similar to a patch I proposed for shutdown slave initiated > requests: > https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html Indeed, thanks for pointing this out, I wasn't aware of your series. I find your proposal of having dedicated messages types (VHOST_USER_SLAVE_*) cleaner. Are you ok if I handover your patch, and replace VHOST_USER_SET_SLAVE_FD to VHOST_USER_SET_SLAVE_REQ_FD? > > > --- > 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 > > > I like "slave-req-fd" better than "slave-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. > + > > > looks good to me > > > VHOST_USER_PROTOCOL_F_REPLY_ACK: > ------------------------------- > The original vhost-user specification only demands replies for certain > -- > 2.9.3 > > > -- > Marc-André Lureau
Hi On Tue, Apr 11, 2017 at 5:53 PM Maxime Coquelin <maxime.coquelin@redhat.com> wrote: > Hi Marc-André, > > On 04/11/2017 03:06 PM, Marc-André Lureau wrote: > > Hi > > > > On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin > > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com>> wrote: > > > > 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 > > <mailto:maxime.coquelin@redhat.com>> > > > > > > This is very similar to a patch I proposed for shutdown slave initiated > > requests: > > https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html > > Indeed, thanks for pointing this out, I wasn't aware of your series. > > I find your proposal of having dedicated messages types > (VHOST_USER_SLAVE_*) cleaner. > > ok > Are you ok if I handover your patch, and replace > VHOST_USER_SET_SLAVE_FD to VHOST_USER_SET_SLAVE_REQ_FD? > They are very similar, I suggest you update your patch with the best of both. I suppose you came to the same conclusion with me that trying to make the communication both ways on the same fd would be quite difficult, although it's a bit strange that the qemu implementation forces the design of the protocol in some direction. -- Marc-André Lureau
On 04/14/2017 05:03 PM, Marc-André Lureau wrote: > Hi > > On Tue, Apr 11, 2017 at 5:53 PM Maxime Coquelin > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com>> wrote: > > Hi Marc-André, > > On 04/11/2017 03:06 PM, Marc-André Lureau wrote: > > Hi > > > > On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin > > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com> > <mailto:maxime.coquelin@redhat.com > <mailto:maxime.coquelin@redhat.com>>> wrote: > > > > 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 > <mailto:maxime.coquelin@redhat.com> > > <mailto:maxime.coquelin@redhat.com > <mailto:maxime.coquelin@redhat.com>>> > > > > > > This is very similar to a patch I proposed for shutdown slave > initiated > > requests: > > https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html > > Indeed, thanks for pointing this out, I wasn't aware of your series. > > I find your proposal of having dedicated messages types > (VHOST_USER_SLAVE_*) cleaner. > > ok > > Are you ok if I handover your patch, and replace > VHOST_USER_SET_SLAVE_FD to VHOST_USER_SET_SLAVE_REQ_FD? > > > They are very similar, I suggest you update your patch with the best > of both. > > I suppose you came to the same conclusion with me that trying to make > the communication both ways on the same fd would be quite difficult, > although it's a bit strange that the qemu implementation forces the > design of the protocol in some direction. > -- > When would you get the implementation patch ready? Thanks. Best, Wei
Hi Wei, On 04/24/2017 10:05 AM, Wei Wang wrote: > On 04/14/2017 05:03 PM, Marc-André Lureau wrote: >> Hi >> >> On Tue, Apr 11, 2017 at 5:53 PM Maxime Coquelin >> <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com>> wrote: >> >> Hi Marc-André, >> >> On 04/11/2017 03:06 PM, Marc-André Lureau wrote: >> > Hi >> > >> > On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin >> > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com> >> <mailto:maxime.coquelin@redhat.com >> <mailto:maxime.coquelin@redhat.com>>> wrote: >> > >> > 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 >> <mailto:maxime.coquelin@redhat.com> >> > <mailto:maxime.coquelin@redhat.com >> <mailto:maxime.coquelin@redhat.com>>> >> > >> > >> > This is very similar to a patch I proposed for shutdown slave >> initiated >> > requests: >> > https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html >> >> Indeed, thanks for pointing this out, I wasn't aware of your series. >> >> I find your proposal of having dedicated messages types >> (VHOST_USER_SLAVE_*) cleaner. >> >> ok >> >> Are you ok if I handover your patch, and replace >> VHOST_USER_SET_SLAVE_FD to VHOST_USER_SET_SLAVE_REQ_FD? >> >> >> They are very similar, I suggest you update your patch with the best >> of both. >> >> I suppose you came to the same conclusion with me that trying to make >> the communication both ways on the same fd would be quite difficult, >> although it's a bit strange that the qemu implementation forces the >> design of the protocol in some direction. >> -- >> > > When would you get the implementation patch ready? Thanks. I sent second version of the RFC on April 14th, which comprises the implementation: https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg02467.html Cheers, Maxime
On 04/25/2017 07:55 PM, Maxime Coquelin wrote: > Hi Wei, > > On 04/24/2017 10:05 AM, Wei Wang wrote: >> On 04/14/2017 05:03 PM, Marc-André Lureau wrote: >>> Hi >>> >>> On Tue, Apr 11, 2017 at 5:53 PM Maxime Coquelin >>> <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com>> wrote: >>> >>> Hi Marc-André, >>> >>> On 04/11/2017 03:06 PM, Marc-André Lureau wrote: >>> > Hi >>> > >>> > On Tue, Apr 11, 2017 at 12:10 PM Maxime Coquelin >>> > <maxime.coquelin@redhat.com <mailto:maxime.coquelin@redhat.com> >>> <mailto:maxime.coquelin@redhat.com >>> <mailto:maxime.coquelin@redhat.com>>> wrote: >>> > >>> > 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 >>> <mailto:maxime.coquelin@redhat.com> >>> > <mailto:maxime.coquelin@redhat.com >>> <mailto:maxime.coquelin@redhat.com>>> >>> > >>> > >>> > This is very similar to a patch I proposed for shutdown slave >>> initiated >>> > requests: >>> > >>> https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html >>> >>> Indeed, thanks for pointing this out, I wasn't aware of your >>> series. >>> >>> I find your proposal of having dedicated messages types >>> (VHOST_USER_SLAVE_*) cleaner. >>> >>> ok >>> >>> Are you ok if I handover your patch, and replace >>> VHOST_USER_SET_SLAVE_FD to VHOST_USER_SET_SLAVE_REQ_FD? >>> >>> >>> They are very similar, I suggest you update your patch with the best >>> of both. >>> >>> I suppose you came to the same conclusion with me that trying to >>> make the communication both ways on the same fd would be quite >>> difficult, although it's a bit strange that the qemu implementation >>> forces the design of the protocol in some direction. >>> -- >>> >> >> When would you get the implementation patch ready? Thanks. > > I sent second version of the RFC on April 14th, which comprises the > implementation: > https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg02467.html Thanks, Maxime. I was trying to make the connection bidirectional (https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg02617.html), which was reported as problematic due to the possibility of race (though I think it can be solved by re-sending the msg in that rare case). Anyway, hope to see you guys' second channel based implementation to be merged soon. I would also consider to switch to use it then. Best, Wei
© 2016 - 2026 Red Hat, Inc.