qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>,
	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
Subject: Re: [Qemu-devel] [RFC 1/2] spec/vhost-user: Introduce secondary channel for slave initiated requests
Date: Tue, 11 Apr 2017 15:53:37 +0200	[thread overview]
Message-ID: <7dfc220c-b22b-bd7d-53af-caf49275b66c@redhat.com> (raw)
In-Reply-To: <CAJ+F1CL8kK0XcMwueX8+kbDF=aVhBiRJ66gGoUNcUOmk=Yg7og@mail.gmail.com>

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

  reply	other threads:[~2017-04-11 13:53 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 ` [Qemu-devel] [RFC 1/2] spec/vhost-user: Introduce secondary channel for slave initiated requests Maxime Coquelin
2017-04-11 13:06   ` Marc-André Lureau
2017-04-11 13:53     ` Maxime Coquelin [this message]
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=7dfc220c-b22b-bd7d-53af-caf49275b66c@redhat.com \
    --to=maxime.coquelin@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=marcandre.lureau@gmail.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).