All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 0/3] Vhost-user Spec: extension for vhost-pci
@ 2016-12-19 11:05 Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 1/3] spec/vhost-user: extend vhost-user to support the vhost-pci based inter-vm communiaction Wei Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Wei Wang @ 2016-12-19 11:05 UTC (permalink / raw)
  To: marcandre.lureau, mst, stefanha, pbonzini, qemu-devel, virtio-comment
  Cc: Wei Wang

This spec patch series extends the vhost-user protocol to support the vhost-pci
based inter-VM communiaction.

v2->v3 changes:
1) replace VHOST_USER_SET_DEV_INFO with VHOST_USER_SET_DEVICE_ID 
2) replace VHOST_USER_SET_PEER_CONNECTION with VHOST_USER_SET_VHOST_PCI

v1->v2 changes:
1) start from the simpler case - change "1-slave-N-master" to "1-slave-1-master"
configuration plane. Accordingly, the previous "uuid", "conn_id" are removed;
2) add the _CREATE_ and _DESTROY_ comands to the VHOST_USER_SET_PEER_CONNECTION
message; and
3) fix the VHOST_USER prefix.

Wei Wang (3):
  spec/vhost-user: extend vhost-user to support the vhost-pci based
    inter-vm communiaction
  spec/vhost-user: add VHOST_USER_PROTOCOL_F_SET_DEVICE_ID
  spec/vhost-user: add the VHOST_USER_SET_VHOST_PCI message

 docs/specs/vhost-user.txt | 44 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 38 insertions(+), 6 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH v3 1/3] spec/vhost-user: extend vhost-user to support the vhost-pci based inter-vm communiaction
  2016-12-19 11:05 [Qemu-devel] [PATCH v3 0/3] Vhost-user Spec: extension for vhost-pci Wei Wang
@ 2016-12-19 11:05 ` Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 2/3] spec/vhost-user: add VHOST_USER_PROTOCOL_F_SET_DEVICE_ID Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 3/3] spec/vhost-user: add the VHOST_USER_SET_VHOST_PCI message Wei Wang
  2 siblings, 0 replies; 4+ messages in thread
From: Wei Wang @ 2016-12-19 11:05 UTC (permalink / raw)
  To: marcandre.lureau, mst, stefanha, pbonzini, qemu-devel, virtio-comment
  Cc: Wei Wang

The protocol feature, VHOST_USER_PROTOCOL_F_VHOST_PCI, indicates the
support of vhost-pci. The vhost-pci extension requires the master side
implementation to support an asynchronous socket read method. This is
used when the slave side vhost-pci device and driver finishes the
feature bits negotiation. The negotiated feature bits are sent to the
master. If the feature bits sent by the slave are a subset of the ones
that were sent by the master, the master should perform a reset of the
master device (e.g. virtio_net), to re-negotiate the feature bits using
the ones sent by the slave.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
---
 docs/specs/vhost-user.txt | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/docs/specs/vhost-user.txt b/docs/specs/vhost-user.txt
index d70bd83..18e49d0 100644
--- a/docs/specs/vhost-user.txt
+++ b/docs/specs/vhost-user.txt
@@ -17,12 +17,15 @@ The protocol defines 2 sides of the communication, master and slave. Master is
 the application that shares its virtqueues, in our case QEMU. Slave is the
 consumer of the virtqueues.
 
-In the current implementation QEMU is the Master, and the Slave is intended to
+In the traditional implementation QEMU is the master, and the slave is intended to
 be a software Ethernet switch running in user space, such as Snabbswitch.
 
 Master and slave can be either a client (i.e. connecting) or server (listening)
 in the socket communication.
 
+The current vhost-user protocol is extended to support the vhost-pci based inter-VM
+communication. In this case, both the slave and master are QEMU instances.
+
 Message Specification
 ---------------------
 
@@ -36,7 +39,7 @@ consists of 3 header fields and a payload:
  * Request: 32-bit type of the request
  * Flags: 32-bit bit field:
    - Lower 2 bits are the version (currently 0x01)
-   - Bit 2 is the reply flag - needs to be sent on each reply from the slave
+   - Bit 2 is the reply flag - needs to be sent on each reply
    - Bit 3 is the need_reply flag - see VHOST_USER_PROTOCOL_F_REPLY_ACK for
      details.
  * Size - 32-bit size of the payload
@@ -119,9 +122,9 @@ The protocol for vhost-user is based on the existing implementation of vhost
 for the Linux Kernel. Most messages that can be sent via the Unix domain socket
 implementing vhost-user have an equivalent ioctl to the kernel implementation.
 
-The communication consists of master sending message requests and slave sending
-message replies. Most of the requests don't require replies. Here is a list of
-the ones that do:
+Traditionally, the communication consists of master sending message requests and
+slave sending message replies. Most of the requests don't require replies. Here
+is a list of the ones that do:
 
  * VHOST_USER_GET_FEATURES
  * VHOST_USER_GET_PROTOCOL_FEATURES
@@ -130,6 +133,10 @@ the ones that do:
 
 [ Also see the section on REPLY_ACK protocol extension. ]
 
+Currently, the communication also supports the slave actively sending messages
+to the master. Here is a list of them:
+ * VHOST_USER_SET_FEATURES
+
 There are several messages that the master sends with file descriptors passed
 in the ancillary data:
 
@@ -259,6 +266,7 @@ Protocol features
 #define VHOST_USER_PROTOCOL_F_LOG_SHMFD      1
 #define VHOST_USER_PROTOCOL_F_RARP           2
 #define VHOST_USER_PROTOCOL_F_REPLY_ACK      3
+#define VHOST_USER_PROTOCOL_F_VHOST_PCI      4
 
 Message types
 -------------
@@ -279,8 +287,9 @@ Message types
       Id: 2
       Ioctl: VHOST_SET_FEATURES
       Master payload: u64
+      Slave payload: u64
 
-      Enable features in the underlying vhost implementation using a bitmask.
+      Feature bits negotiation between the master and slave using a bitmask.
       Feature bit VHOST_USER_F_PROTOCOL_FEATURES signals slave support for
       VHOST_USER_GET_PROTOCOL_FEATURES and VHOST_USER_SET_PROTOCOL_FEATURES.
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH v3 2/3] spec/vhost-user: add VHOST_USER_PROTOCOL_F_SET_DEVICE_ID
  2016-12-19 11:05 [Qemu-devel] [PATCH v3 0/3] Vhost-user Spec: extension for vhost-pci Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 1/3] spec/vhost-user: extend vhost-user to support the vhost-pci based inter-vm communiaction Wei Wang
@ 2016-12-19 11:05 ` Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 3/3] spec/vhost-user: add the VHOST_USER_SET_VHOST_PCI message Wei Wang
  2 siblings, 0 replies; 4+ messages in thread
From: Wei Wang @ 2016-12-19 11:05 UTC (permalink / raw)
  To: marcandre.lureau, mst, stefanha, pbonzini, qemu-devel, virtio-comment
  Cc: Wei Wang

The VHOST_USER_PROTOCOL_F_SET_DEVICE_ID protocol feature indicates
that the slave side implementation supports different types of devices.
The master tells the slave what type of device to create by sending
a VHOST_USER_SET_DEVICE_ID message.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
---
 docs/specs/vhost-user.txt | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/docs/specs/vhost-user.txt b/docs/specs/vhost-user.txt
index 18e49d0..80dcfc1 100644
--- a/docs/specs/vhost-user.txt
+++ b/docs/specs/vhost-user.txt
@@ -267,6 +267,7 @@ Protocol features
 #define VHOST_USER_PROTOCOL_F_RARP           2
 #define VHOST_USER_PROTOCOL_F_REPLY_ACK      3
 #define VHOST_USER_PROTOCOL_F_VHOST_PCI      4
+#define VHOST_USER_PROTOCOL_F_SET_DEVICE_ID  5
 
 Message types
 -------------
@@ -479,6 +480,16 @@ Message types
       The first 6 bytes of the payload contain the mac address of the guest to
       allow the vhost user backend to construct and broadcast the fake RARP.
 
+ * VHOST_USER_SET_DEVICE_ID
+      Id: 20
+      Equivalent ioctl: N/A
+      Master payload: u64
+
+      The master sends the virtio device id to the slave. The virtio device id
+      indicates the device type of the master device.
+      This request should be sent only when VHOST_USER_PROTOCOL_F_SET_DEVICE_ID
+      has been negotiated.
+
 VHOST_USER_PROTOCOL_F_REPLY_ACK:
 -------------------------------
 The original vhost-user specification only demands replies for certain
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH v3 3/3] spec/vhost-user: add the VHOST_USER_SET_VHOST_PCI message
  2016-12-19 11:05 [Qemu-devel] [PATCH v3 0/3] Vhost-user Spec: extension for vhost-pci Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 1/3] spec/vhost-user: extend vhost-user to support the vhost-pci based inter-vm communiaction Wei Wang
  2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 2/3] spec/vhost-user: add VHOST_USER_PROTOCOL_F_SET_DEVICE_ID Wei Wang
@ 2016-12-19 11:05 ` Wei Wang
  2 siblings, 0 replies; 4+ messages in thread
From: Wei Wang @ 2016-12-19 11:05 UTC (permalink / raw)
  To: marcandre.lureau, mst, stefanha, pbonzini, qemu-devel, virtio-comment
  Cc: Wei Wang

The VHOST_USER_SET_VHOST_PCI message is introduced to start/stop
the vhost-pci based inter-VM communiaction by the master.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
---
 docs/specs/vhost-user.txt | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/docs/specs/vhost-user.txt b/docs/specs/vhost-user.txt
index 80dcfc1..4e2ce60 100644
--- a/docs/specs/vhost-user.txt
+++ b/docs/specs/vhost-user.txt
@@ -490,6 +490,18 @@ Message types
       This request should be sent only when VHOST_USER_PROTOCOL_F_SET_DEVICE_ID
       has been negotiated.
 
+ * VHOST_USER_SET_VHOST_PCI
+
+      Id: 21
+      Equivalent ioctl: N/A
+      Master payload: u64
+
+      The master requests the slave to start or stop the vhost-pci device for
+      the inter-VM communication.
+      This request should be sent only when VHOST_USER_PROTOCOL_F_VHOST_PCI has
+      been negotiated.
+
+
 VHOST_USER_PROTOCOL_F_REPLY_ACK:
 -------------------------------
 The original vhost-user specification only demands replies for certain
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-12-19 11:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-19 11:05 [Qemu-devel] [PATCH v3 0/3] Vhost-user Spec: extension for vhost-pci Wei Wang
2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 1/3] spec/vhost-user: extend vhost-user to support the vhost-pci based inter-vm communiaction Wei Wang
2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 2/3] spec/vhost-user: add VHOST_USER_PROTOCOL_F_SET_DEVICE_ID Wei Wang
2016-12-19 11:05 ` [Qemu-devel] [PATCH v3 3/3] spec/vhost-user: add the VHOST_USER_SET_VHOST_PCI message Wei Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.