diff mbox series

[v5,10/24] qapi: Define new QMP message for pvrdma

Message ID 20181122121402.13764-11-yuval.shaia@oracle.com (mailing list archive)
State New, archived
Headers show
Series Add support for RDMA MAD | expand

Commit Message

Yuval Shaia Nov. 22, 2018, 12:13 p.m. UTC
pvrdma requires that the same GID attached to it will be attached to the
backend device in the host.

A new QMP messages is defined so pvrdma device can broadcast any change
made to its GID table. This event is captured by libvirt which in turn
will update the GID table in the backend device.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
---
 MAINTAINERS           |  1 +
 Makefile.objs         |  1 +
 qapi/qapi-schema.json |  1 +
 qapi/rdma.json        | 38 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+)
 create mode 100644 qapi/rdma.json

Comments

Markus Armbruster Nov. 26, 2018, 10:01 a.m. UTC | #1
Yuval Shaia <yuval.shaia@oracle.com> writes:

> pvrdma requires that the same GID attached to it will be attached to the
> backend device in the host.
>
> A new QMP messages is defined so pvrdma device can broadcast any change
> made to its GID table. This event is captured by libvirt which in turn
> will update the GID table in the backend device.
>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
> ---
>  MAINTAINERS           |  1 +
>  Makefile.objs         |  1 +
>  qapi/qapi-schema.json |  1 +
>  qapi/rdma.json        | 38 ++++++++++++++++++++++++++++++++++++++
>  4 files changed, 41 insertions(+)
>  create mode 100644 qapi/rdma.json
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 7b68080094..525bcdcf41 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2335,6 +2335,7 @@ F: hw/rdma/*
>  F: hw/rdma/vmw/*
>  F: docs/pvrdma.txt
>  F: contrib/rdmacm-mux/*
> +F: qapi/rdma.json
>  
>  Build and test automation
>  -------------------------
> diff --git a/Makefile.objs b/Makefile.objs
> index 319f14d937..fe3566b797 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -1,5 +1,6 @@
>  QAPI_MODULES = block-core block char common crypto introspect job migration
>  QAPI_MODULES += misc net rocker run-state sockets tpm trace transaction ui
> +QAPI_MODULES += rdma

Please keep the list of QAPI modules sorted, e.g. like this:

   QAPI_MODULES = block-core block char common crypto introspect job
   QAPI_MODULES += migration misc net rdma rocker run-state sockets tpm
   QAPI_MODULES += trace transaction ui

>  
>  #######################################################################
>  # Common libraries for tools and emulators
> diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> index 65b6dc2f6f..3bbdfcee84 100644
> --- a/qapi/qapi-schema.json
> +++ b/qapi/qapi-schema.json
> @@ -86,6 +86,7 @@
>  { 'include': 'char.json' }
>  { 'include': 'job.json' }
>  { 'include': 'net.json' }
> +{ 'include': 'rdma.json' }
>  { 'include': 'rocker.json' }
>  { 'include': 'tpm.json' }
>  { 'include': 'ui.json' }
> diff --git a/qapi/rdma.json b/qapi/rdma.json
> new file mode 100644
> index 0000000000..804c68ab36
> --- /dev/null
> +++ b/qapi/rdma.json
> @@ -0,0 +1,38 @@
> +# -*- Mode: Python -*-
> +#
> +
> +##
> +# = RDMA device
> +##
> +
> +##
> +# @RDMA_GID_STATUS_CHANGED:
> +#
> +# Emitted when guest driver adds/deletes GID to/from device
> +#
> +# @netdev: RoCE Network Device name - char *
> +#
> +# @gid-status: Add or delete indication - bool
> +#
> +# @subnet-prefix: Subnet Prefix - uint64
> +#
> +# @interface-id : Interface ID - uint64
> +#
> +# Since: 3.2
> +#
> +# Example:
> +#
> +# <- {"timestamp": {"seconds": 1541579657, "microseconds": 986760},
> +#     "event": "RDMA_GID_STATUS_CHANGED",
> +#     "data":
> +#         {"netdev": "bridge0",
> +#         "interface-id": 15880512517475447892,
> +#         "gid-status": true,
> +#         "subnet-prefix": 33022}}
> +#
> +##
> +{ 'event': 'RDMA_GID_STATUS_CHANGED',
> +  'data': { 'netdev'        : 'str',
> +            'gid-status'    : 'bool',
> +            'subnet-prefix' : 'uint64',
> +            'interface-id'  : 'uint64' } }

Preferably with Makefile.objs tidied up:
Acked-by: Markus Armbruster <armbru@redhat.com>
Yuval Shaia Nov. 26, 2018, 10:08 a.m. UTC | #2
On Mon, Nov 26, 2018 at 11:01:59AM +0100, Markus Armbruster wrote:
> Yuval Shaia <yuval.shaia@oracle.com> writes:
> 
> > pvrdma requires that the same GID attached to it will be attached to the
> > backend device in the host.
> >
> > A new QMP messages is defined so pvrdma device can broadcast any change
> > made to its GID table. This event is captured by libvirt which in turn
> > will update the GID table in the backend device.
> >
> > Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> > Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
> > ---
> >  MAINTAINERS           |  1 +
> >  Makefile.objs         |  1 +
> >  qapi/qapi-schema.json |  1 +
> >  qapi/rdma.json        | 38 ++++++++++++++++++++++++++++++++++++++
> >  4 files changed, 41 insertions(+)
> >  create mode 100644 qapi/rdma.json
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 7b68080094..525bcdcf41 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -2335,6 +2335,7 @@ F: hw/rdma/*
> >  F: hw/rdma/vmw/*
> >  F: docs/pvrdma.txt
> >  F: contrib/rdmacm-mux/*
> > +F: qapi/rdma.json
> >  
> >  Build and test automation
> >  -------------------------
> > diff --git a/Makefile.objs b/Makefile.objs
> > index 319f14d937..fe3566b797 100644
> > --- a/Makefile.objs
> > +++ b/Makefile.objs
> > @@ -1,5 +1,6 @@
> >  QAPI_MODULES = block-core block char common crypto introspect job migration
> >  QAPI_MODULES += misc net rocker run-state sockets tpm trace transaction ui
> > +QAPI_MODULES += rdma
> 
> Please keep the list of QAPI modules sorted, e.g. like this:
> 
>    QAPI_MODULES = block-core block char common crypto introspect job
>    QAPI_MODULES += migration misc net rdma rocker run-state sockets tpm
>    QAPI_MODULES += trace transaction ui

Sure, will do.

> 
> >  
> >  #######################################################################
> >  # Common libraries for tools and emulators
> > diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> > index 65b6dc2f6f..3bbdfcee84 100644
> > --- a/qapi/qapi-schema.json
> > +++ b/qapi/qapi-schema.json
> > @@ -86,6 +86,7 @@
> >  { 'include': 'char.json' }
> >  { 'include': 'job.json' }
> >  { 'include': 'net.json' }
> > +{ 'include': 'rdma.json' }
> >  { 'include': 'rocker.json' }
> >  { 'include': 'tpm.json' }
> >  { 'include': 'ui.json' }
> > diff --git a/qapi/rdma.json b/qapi/rdma.json
> > new file mode 100644
> > index 0000000000..804c68ab36
> > --- /dev/null
> > +++ b/qapi/rdma.json
> > @@ -0,0 +1,38 @@
> > +# -*- Mode: Python -*-
> > +#
> > +
> > +##
> > +# = RDMA device
> > +##
> > +
> > +##
> > +# @RDMA_GID_STATUS_CHANGED:
> > +#
> > +# Emitted when guest driver adds/deletes GID to/from device
> > +#
> > +# @netdev: RoCE Network Device name - char *
> > +#
> > +# @gid-status: Add or delete indication - bool
> > +#
> > +# @subnet-prefix: Subnet Prefix - uint64
> > +#
> > +# @interface-id : Interface ID - uint64
> > +#
> > +# Since: 3.2
> > +#
> > +# Example:
> > +#
> > +# <- {"timestamp": {"seconds": 1541579657, "microseconds": 986760},
> > +#     "event": "RDMA_GID_STATUS_CHANGED",
> > +#     "data":
> > +#         {"netdev": "bridge0",
> > +#         "interface-id": 15880512517475447892,
> > +#         "gid-status": true,
> > +#         "subnet-prefix": 33022}}
> > +#
> > +##
> > +{ 'event': 'RDMA_GID_STATUS_CHANGED',
> > +  'data': { 'netdev'        : 'str',
> > +            'gid-status'    : 'bool',
> > +            'subnet-prefix' : 'uint64',
> > +            'interface-id'  : 'uint64' } }
> 
> Preferably with Makefile.objs tidied up:
> Acked-by: Markus Armbruster <armbru@redhat.com>

Thanks
Eric Blake Nov. 26, 2018, 8:43 p.m. UTC | #3
On 11/26/18 4:01 AM, Markus Armbruster wrote:
> Yuval Shaia <yuval.shaia@oracle.com> writes:
> 
>> pvrdma requires that the same GID attached to it will be attached to the
>> backend device in the host.
>>
>> A new QMP messages is defined so pvrdma device can broadcast any change
>> made to its GID table. This event is captured by libvirt which in turn
>> will update the GID table in the backend device.
>>
>> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
>> Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
>> ---

>> +++ b/qapi/rdma.json
>> @@ -0,0 +1,38 @@
>> +# -*- Mode: Python -*-
>> +#
>> +
>> +##
>> +# = RDMA device
>> +##
>> +
>> +##
>> +# @RDMA_GID_STATUS_CHANGED:
>> +#
>> +# Emitted when guest driver adds/deletes GID to/from device
>> +#
>> +# @netdev: RoCE Network Device name - char *
>> +#
>> +# @gid-status: Add or delete indication - bool
>> +#
>> +# @subnet-prefix: Subnet Prefix - uint64
>> +#
>> +# @interface-id : Interface ID - uint64
>> +#
>> +# Since: 3.2

The next release will be 4.0, not 3.2 (we'll probably have to do a 
global search-and-replace in January to catch things that have slipped 
in, as your patch is not alone in that).
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 7b68080094..525bcdcf41 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2335,6 +2335,7 @@  F: hw/rdma/*
 F: hw/rdma/vmw/*
 F: docs/pvrdma.txt
 F: contrib/rdmacm-mux/*
+F: qapi/rdma.json
 
 Build and test automation
 -------------------------
diff --git a/Makefile.objs b/Makefile.objs
index 319f14d937..fe3566b797 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -1,5 +1,6 @@ 
 QAPI_MODULES = block-core block char common crypto introspect job migration
 QAPI_MODULES += misc net rocker run-state sockets tpm trace transaction ui
+QAPI_MODULES += rdma
 
 #######################################################################
 # Common libraries for tools and emulators
diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
index 65b6dc2f6f..3bbdfcee84 100644
--- a/qapi/qapi-schema.json
+++ b/qapi/qapi-schema.json
@@ -86,6 +86,7 @@ 
 { 'include': 'char.json' }
 { 'include': 'job.json' }
 { 'include': 'net.json' }
+{ 'include': 'rdma.json' }
 { 'include': 'rocker.json' }
 { 'include': 'tpm.json' }
 { 'include': 'ui.json' }
diff --git a/qapi/rdma.json b/qapi/rdma.json
new file mode 100644
index 0000000000..804c68ab36
--- /dev/null
+++ b/qapi/rdma.json
@@ -0,0 +1,38 @@ 
+# -*- Mode: Python -*-
+#
+
+##
+# = RDMA device
+##
+
+##
+# @RDMA_GID_STATUS_CHANGED:
+#
+# Emitted when guest driver adds/deletes GID to/from device
+#
+# @netdev: RoCE Network Device name - char *
+#
+# @gid-status: Add or delete indication - bool
+#
+# @subnet-prefix: Subnet Prefix - uint64
+#
+# @interface-id : Interface ID - uint64
+#
+# Since: 3.2
+#
+# Example:
+#
+# <- {"timestamp": {"seconds": 1541579657, "microseconds": 986760},
+#     "event": "RDMA_GID_STATUS_CHANGED",
+#     "data":
+#         {"netdev": "bridge0",
+#         "interface-id": 15880512517475447892,
+#         "gid-status": true,
+#         "subnet-prefix": 33022}}
+#
+##
+{ 'event': 'RDMA_GID_STATUS_CHANGED',
+  'data': { 'netdev'        : 'str',
+            'gid-status'    : 'bool',
+            'subnet-prefix' : 'uint64',
+            'interface-id'  : 'uint64' } }