All of lore.kernel.org
 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 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.