qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John G Johnson <john.g.johnson@oracle.com>
To: Thanos Makatos <thanos.makatos@nutanix.com>
Cc: "benjamin.walker@intel.com" <benjamin.walker@intel.com>,
	"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
	"jag.raman@oracle.com" <jag.raman@oracle.com>,
	"Swapnil Ingle" <swapnil.ingle@nutanix.com>,
	"james.r.harris@intel.com" <james.r.harris@intel.com>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"yuvalkashtan@gmail.com" <yuvalkashtan@gmail.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"John Levon" <levon@movementarian.org>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"ismael@linux.com" <ismael@linux.com>,
	"Raphael Norwitz" <raphael.norwitz@nutanix.com>,
	"Kanth.Ghatraju@oracle.com" <Kanth.Ghatraju@oracle.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Felipe Franciosi" <felipe@nutanix.com>,
	"xiuchun.lu@intel.com" <xiuchun.lu@intel.com>,
	"tomassetti.andrea@gmail.com" <tomassetti.andrea@gmail.com>,
	"tina.zhang@intel.com" <tina.zhang@intel.com>,
	"changpeng.liu@intel.com" <changpeng.liu@intel.com>,
	"dgilbert@redhat.com" <dgilbert@redhat.com>
Subject: Re: [PATCH v5] introduce vfio-user protocol specification
Date: Thu, 5 Nov 2020 17:50:27 -0800	[thread overview]
Message-ID: <D1778D86-151D-4A67-9E2F-B49061A53FD3@oracle.com> (raw)
In-Reply-To: <MW2PR02MB3723F4DDEA3486981AAA9F088B100@MW2PR02MB3723.namprd02.prod.outlook.com>



> On Nov 2, 2020, at 3:51 AM, Thanos Makatos <thanos.makatos@nutanix.com> wrote:
> 
> 
> 
>> -----Original Message-----
>> From: Qemu-devel <qemu-devel-
>> bounces+thanos.makatos=nutanix.com@nongnu.org> On Behalf Of John
>> Levon
>> Sent: 02 November 2020 11:41
>> To: Thanos Makatos <thanos.makatos@nutanix.com>
>> Cc: benjamin.walker@intel.com; Elena Ufimtseva
>> <elena.ufimtseva@oracle.com>; jag.raman@oracle.com;
>> james.r.harris@intel.com; Swapnil Ingle <swapnil.ingle@nutanix.com>;
>> john.g.johnson@oracle.com; yuvalkashtan@gmail.com;
>> konrad.wilk@oracle.com; tina.zhang@intel.com; qemu-devel@nongnu.org;
>> dgilbert@redhat.com; Marc-André Lureau
>> <marcandre.lureau@redhat.com>; ismael@linux.com;
>> alex.williamson@redhat.com; Stefan Hajnoczi <stefanha@redhat.com>;
>> Felipe Franciosi <felipe@nutanix.com>; xiuchun.lu@intel.com;
>> tomassetti.andrea@gmail.com; changpeng.liu@intel.com; Raphael Norwitz
>> <raphael.norwitz@nutanix.com>; Kanth.Ghatraju@oracle.com
>> Subject: Re: [PATCH v5] introduce vfio-user protocol specification
>> 
>> On Mon, Nov 02, 2020 at 11:29:23AM +0000, Thanos Makatos wrote:
>> 
>>>> 
>> +==============+========+=================================
>>>> ==================+
>>>>> | version      | object | ``{"major": <number>, "minor": <number>}``
>> |
>>>>> |              |        |                                                   |
>>>>> |              |        | Version supported by the sender, e.g. "0.1".      |
>>>> 
>>>> It seems quite unlikely but this should specify it's strings not floating point
>>>> values maybe?
>>>> 
>>>> Definitely applies to max_fds too.
>>> 
>>> major and minor are JSON numbers and specifically integers.
>> 
>> It is debatable as to whether there is such a thing as a JSON integer :)
> 
> AFAIK there isn't.
> 
>> 
>>> The rationale behind this is to simplify parsing. Is specifying that
>>> major/minor/max_fds should be an interger sufficient to clear any
>> vagueness
>>> here?
>> 
>> I suppose that's OK as long as we never want a 0.1.1 or whatever. I'm not
>> sure
>> it simplifies parsing, but maybe it does.
> 
> Now that you mention it, why preclude 0.1.1? IIUC the whole point of not
> stating the version as a float is to simply have this flexibility in the future.
> You're right in your earlier suggestion to explicitly state major/minor as
> strings.
> 

	The idea behind the version IDs is to identify incompatible protocol
changes as major versions, and compatible changes as minor versions.  What
would be the purpose of the third version type?

	The thing that makes parsing the JSON easier is knowing the version
beforehand so the parser knows what keys to expect, so I’d like to promote
major and minor to separate fields in the packet from being embedded at an
arbitrary points in the JSON string.


>> 
>>>>> Versioning and Feature Support
>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>> Upon accepting a connection, the server must send a
>> VFIO_USER_VERSION
>>>> message
>>>>> proposing a protocol version and a set of capabilities. The client
>> compares
>>>>> these with the versions and capabilities it supports and sends a
>>>>> VFIO_USER_VERSION reply according to the following rules.
>>>> 
>>>> I'm curious if there was a specific reason it's this way around, when it
>> seems
>>>> more natural for the client to propose first, and the server to reply?
>>> 
>>> I'm not aware of any specific reason.
>> 
>> So can we switch it now so the initial setup is a send/recv too?
> 
> I'm fine with that but would first like to hear back from John in case he objects.


	I think I write that section, and just switched client and server.  The code
is written as client proposes, server responds; this is the better model.

									JJ




  reply	other threads:[~2020-11-06  1:51 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-17 11:20 [PATCH v3] introduce VFIO-over-socket protocol specificaion Thanos Makatos
2020-07-21 16:33 ` Nikos Dragazis
2020-07-22 11:43   ` Thanos Makatos
2020-09-15 14:29 ` [PATCH v4] introduce vfio-user protocol specification Thanos Makatos
2020-09-24  8:21   ` Stefan Hajnoczi
2020-09-24  9:24     ` Michael S. Tsirkin
2020-09-28  9:58     ` Thanos Makatos
2020-09-29 10:37       ` Stefan Hajnoczi
2020-09-29 16:21         ` John G Johnson
2020-09-30 14:24           ` Stefan Hajnoczi
2020-10-02 10:14             ` Felipe Franciosi
2020-10-13  9:30               ` Stefan Hajnoczi
2020-10-15 13:36                 ` Felipe Franciosi
2020-10-30 19:14                   ` Stefan Hajnoczi
2020-10-13  9:42             ` Daniel P. Berrangé
2020-09-29 10:41   ` Stefan Hajnoczi
2020-10-28 16:10 ` [PATCH v5] " Thanos Makatos
2020-10-28 16:41   ` Thanos Makatos
2020-10-30 17:03     ` John Levon
2020-11-02 11:29       ` Thanos Makatos
2020-11-02 11:41         ` John Levon
2020-11-02 11:51           ` Thanos Makatos
2020-11-06  1:50             ` John G Johnson [this message]
2020-11-07 12:26               ` John Levon
2020-11-09 12:07                 ` Thanos Makatos
2020-11-09  9:20         ` Thanos Makatos

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=D1778D86-151D-4A67-9E2F-B49061A53FD3@oracle.com \
    --to=john.g.johnson@oracle.com \
    --cc=Kanth.Ghatraju@oracle.com \
    --cc=alex.williamson@redhat.com \
    --cc=benjamin.walker@intel.com \
    --cc=changpeng.liu@intel.com \
    --cc=dgilbert@redhat.com \
    --cc=elena.ufimtseva@oracle.com \
    --cc=felipe@nutanix.com \
    --cc=ismael@linux.com \
    --cc=jag.raman@oracle.com \
    --cc=james.r.harris@intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=levon@movementarian.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=raphael.norwitz@nutanix.com \
    --cc=stefanha@redhat.com \
    --cc=swapnil.ingle@nutanix.com \
    --cc=thanos.makatos@nutanix.com \
    --cc=tina.zhang@intel.com \
    --cc=tomassetti.andrea@gmail.com \
    --cc=xiuchun.lu@intel.com \
    --cc=yuvalkashtan@gmail.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).