Message ID | 20181118122843.10892-11-yuval.shaia@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for RDMA MAD | expand |
The subsystem tag in the commit message's title should be "qapi: " not "json: ". 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 | 3 ++- > Makefile.objs | 4 ++++ > qapi/qapi-schema.json | 1 + > qapi/rdma.json | 38 ++++++++++++++++++++++++++++++++++++++ > 5 files changed, 46 insertions(+), 1 deletion(-) > create mode 100644 qapi/rdma.json > > diff --git a/MAINTAINERS b/MAINTAINERS > index e087d58ac6..a149f68a8f 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -2232,6 +2232,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 b/Makefile > index 94072776ff..db4ce60ee5 100644 > --- a/Makefile > +++ b/Makefile > @@ -599,7 +599,8 @@ qapi-modules = $(SRC_PATH)/qapi/qapi-schema.json $(SRC_PATH)/qapi/common.json \ > $(SRC_PATH)/qapi/tpm.json \ > $(SRC_PATH)/qapi/trace.json \ > $(SRC_PATH)/qapi/transaction.json \ > - $(SRC_PATH)/qapi/ui.json > + $(SRC_PATH)/qapi/ui.json \ > + $(SRC_PATH)/qapi/rdma.json Please insert between net.json and rocker.json to maintain alphabetical order. > qapi/qapi-builtin-types.c qapi/qapi-builtin-types.h \ > qapi/qapi-types.c qapi/qapi-types.h \ > diff --git a/Makefile.objs b/Makefile.objs > index cc7df3ad80..76d8028f2f 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -21,6 +21,7 @@ util-obj-y += qapi/qapi-types-tpm.o > util-obj-y += qapi/qapi-types-trace.o > util-obj-y += qapi/qapi-types-transaction.o > util-obj-y += qapi/qapi-types-ui.o > +util-obj-y += qapi/qapi-types-rdma.o > util-obj-y += qapi/qapi-builtin-visit.o > util-obj-y += qapi/qapi-visit.o > util-obj-y += qapi/qapi-visit-block-core.o > @@ -40,6 +41,7 @@ util-obj-y += qapi/qapi-visit-tpm.o > util-obj-y += qapi/qapi-visit-trace.o > util-obj-y += qapi/qapi-visit-transaction.o > util-obj-y += qapi/qapi-visit-ui.o > +util-obj-y += qapi/qapi-visit-rdma.o > util-obj-y += qapi/qapi-events.o > util-obj-y += qapi/qapi-events-block-core.o > util-obj-y += qapi/qapi-events-block.o > @@ -58,6 +60,7 @@ util-obj-y += qapi/qapi-events-tpm.o > util-obj-y += qapi/qapi-events-trace.o > util-obj-y += qapi/qapi-events-transaction.o > util-obj-y += qapi/qapi-events-ui.o > +util-obj-y += qapi/qapi-events-rdma.o > util-obj-y += qapi/qapi-introspect.o > > chardev-obj-y = chardev/ > @@ -155,6 +158,7 @@ common-obj-y += qapi/qapi-commands-tpm.o > common-obj-y += qapi/qapi-commands-trace.o > common-obj-y += qapi/qapi-commands-transaction.o > common-obj-y += qapi/qapi-commands-ui.o > +common-obj-y += qapi/qapi-commands-rdma.o > common-obj-y += qapi/qapi-introspect.o > common-obj-y += qmp.o hmp.o > endif This is incomplete, and it conflicts with Eric Blake's "[PATCH v3] qapi: Reduce Makefile boilerplate". I recommend to base on Eric's patch, because that'll let you add the new rdma.json much more easily. > diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json > index 65b6dc2f6f..a650d80f83 100644 > --- a/qapi/qapi-schema.json > +++ b/qapi/qapi-schema.json > @@ -94,3 +94,4 @@ > { 'include': 'trace.json' } > { 'include': 'introspect.json' } > { 'include': 'misc.json' } > +{ 'include': 'rdma.json' } This makes the "RDMA device" section appear last in the QEMU QMP reference manual, since they appear in include order there. $ grep -h @section bld-x86/qapi/qapi-doc.texi @section Introduction @section Stability Considerations @section Common data types @section Socket data types @section VM run state @section Cryptography @section Block devices @section Character devices @section Net devices @section Rocker switch device @section TPM (trusted platform module) devices @section Remote desktop @section Input @section Migration @section Transactions @section Tracing @section QMP introspection @section Miscellanea @section RDMA device It should go next to the other "device" sections, shouldn't it? > 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' } } Schema looks okay from a QAPI perspective (I know next to nothing about RDMA).
On Mon, Nov 19, 2018 at 08:16:08AM +0100, Markus Armbruster wrote: > The subsystem tag in the commit message's title should be "qapi: " not > "json: ". Done. > > 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 | 3 ++- > > Makefile.objs | 4 ++++ > > qapi/qapi-schema.json | 1 + > > qapi/rdma.json | 38 ++++++++++++++++++++++++++++++++++++++ > > 5 files changed, 46 insertions(+), 1 deletion(-) > > create mode 100644 qapi/rdma.json > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > index e087d58ac6..a149f68a8f 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -2232,6 +2232,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 b/Makefile > > index 94072776ff..db4ce60ee5 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -599,7 +599,8 @@ qapi-modules = $(SRC_PATH)/qapi/qapi-schema.json $(SRC_PATH)/qapi/common.json \ > > $(SRC_PATH)/qapi/tpm.json \ > > $(SRC_PATH)/qapi/trace.json \ > > $(SRC_PATH)/qapi/transaction.json \ > > - $(SRC_PATH)/qapi/ui.json > > + $(SRC_PATH)/qapi/ui.json \ > > + $(SRC_PATH)/qapi/rdma.json > > Please insert between net.json and rocker.json to maintain alphabetical > order. Removed after using Eric Blake's framework. > > > qapi/qapi-builtin-types.c qapi/qapi-builtin-types.h \ > > qapi/qapi-types.c qapi/qapi-types.h \ > > diff --git a/Makefile.objs b/Makefile.objs > > index cc7df3ad80..76d8028f2f 100644 > > --- a/Makefile.objs > > +++ b/Makefile.objs > > @@ -21,6 +21,7 @@ util-obj-y += qapi/qapi-types-tpm.o > > util-obj-y += qapi/qapi-types-trace.o > > util-obj-y += qapi/qapi-types-transaction.o > > util-obj-y += qapi/qapi-types-ui.o > > +util-obj-y += qapi/qapi-types-rdma.o > > util-obj-y += qapi/qapi-builtin-visit.o > > util-obj-y += qapi/qapi-visit.o > > util-obj-y += qapi/qapi-visit-block-core.o > > @@ -40,6 +41,7 @@ util-obj-y += qapi/qapi-visit-tpm.o > > util-obj-y += qapi/qapi-visit-trace.o > > util-obj-y += qapi/qapi-visit-transaction.o > > util-obj-y += qapi/qapi-visit-ui.o > > +util-obj-y += qapi/qapi-visit-rdma.o > > util-obj-y += qapi/qapi-events.o > > util-obj-y += qapi/qapi-events-block-core.o > > util-obj-y += qapi/qapi-events-block.o > > @@ -58,6 +60,7 @@ util-obj-y += qapi/qapi-events-tpm.o > > util-obj-y += qapi/qapi-events-trace.o > > util-obj-y += qapi/qapi-events-transaction.o > > util-obj-y += qapi/qapi-events-ui.o > > +util-obj-y += qapi/qapi-events-rdma.o > > util-obj-y += qapi/qapi-introspect.o > > > > chardev-obj-y = chardev/ > > @@ -155,6 +158,7 @@ common-obj-y += qapi/qapi-commands-tpm.o > > common-obj-y += qapi/qapi-commands-trace.o > > common-obj-y += qapi/qapi-commands-transaction.o > > common-obj-y += qapi/qapi-commands-ui.o > > +common-obj-y += qapi/qapi-commands-rdma.o > > common-obj-y += qapi/qapi-introspect.o > > common-obj-y += qmp.o hmp.o > > endif > > This is incomplete, and it conflicts with Eric Blake's "[PATCH v3] qapi: > Reduce Makefile boilerplate". I recommend to base on Eric's patch, > because that'll let you add the new rdma.json much more easily. Sure, will do that but let's ignore build error reports generated by build robot for my v5 :) Framework looks great! > > > diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json > > index 65b6dc2f6f..a650d80f83 100644 > > --- a/qapi/qapi-schema.json > > +++ b/qapi/qapi-schema.json > > @@ -94,3 +94,4 @@ > > { 'include': 'trace.json' } > > { 'include': 'introspect.json' } > > { 'include': 'misc.json' } > > +{ 'include': 'rdma.json' } Done. > > This makes the "RDMA device" section appear last in the QEMU QMP > reference manual, since they appear in include order there. > > $ grep -h @section bld-x86/qapi/qapi-doc.texi > @section Introduction > @section Stability Considerations > @section Common data types > @section Socket data types > @section VM run state > @section Cryptography > @section Block devices > @section Character devices > @section Net devices > @section Rocker switch device > @section TPM (trusted platform module) devices > @section Remote desktop > @section Input > @section Migration > @section Transactions > @section Tracing > @section QMP introspection > @section Miscellanea > @section RDMA device > > It should go next to the other "device" sections, shouldn't it? Removed after using Eric Blake's framework. > > > 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' } } > > Schema looks okay from a QAPI perspective (I know next to nothing about > RDMA). Thanks
diff --git a/MAINTAINERS b/MAINTAINERS index e087d58ac6..a149f68a8f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2232,6 +2232,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 b/Makefile index 94072776ff..db4ce60ee5 100644 --- a/Makefile +++ b/Makefile @@ -599,7 +599,8 @@ qapi-modules = $(SRC_PATH)/qapi/qapi-schema.json $(SRC_PATH)/qapi/common.json \ $(SRC_PATH)/qapi/tpm.json \ $(SRC_PATH)/qapi/trace.json \ $(SRC_PATH)/qapi/transaction.json \ - $(SRC_PATH)/qapi/ui.json + $(SRC_PATH)/qapi/ui.json \ + $(SRC_PATH)/qapi/rdma.json qapi/qapi-builtin-types.c qapi/qapi-builtin-types.h \ qapi/qapi-types.c qapi/qapi-types.h \ diff --git a/Makefile.objs b/Makefile.objs index cc7df3ad80..76d8028f2f 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -21,6 +21,7 @@ util-obj-y += qapi/qapi-types-tpm.o util-obj-y += qapi/qapi-types-trace.o util-obj-y += qapi/qapi-types-transaction.o util-obj-y += qapi/qapi-types-ui.o +util-obj-y += qapi/qapi-types-rdma.o util-obj-y += qapi/qapi-builtin-visit.o util-obj-y += qapi/qapi-visit.o util-obj-y += qapi/qapi-visit-block-core.o @@ -40,6 +41,7 @@ util-obj-y += qapi/qapi-visit-tpm.o util-obj-y += qapi/qapi-visit-trace.o util-obj-y += qapi/qapi-visit-transaction.o util-obj-y += qapi/qapi-visit-ui.o +util-obj-y += qapi/qapi-visit-rdma.o util-obj-y += qapi/qapi-events.o util-obj-y += qapi/qapi-events-block-core.o util-obj-y += qapi/qapi-events-block.o @@ -58,6 +60,7 @@ util-obj-y += qapi/qapi-events-tpm.o util-obj-y += qapi/qapi-events-trace.o util-obj-y += qapi/qapi-events-transaction.o util-obj-y += qapi/qapi-events-ui.o +util-obj-y += qapi/qapi-events-rdma.o util-obj-y += qapi/qapi-introspect.o chardev-obj-y = chardev/ @@ -155,6 +158,7 @@ common-obj-y += qapi/qapi-commands-tpm.o common-obj-y += qapi/qapi-commands-trace.o common-obj-y += qapi/qapi-commands-transaction.o common-obj-y += qapi/qapi-commands-ui.o +common-obj-y += qapi/qapi-commands-rdma.o common-obj-y += qapi/qapi-introspect.o common-obj-y += qmp.o hmp.o endif diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json index 65b6dc2f6f..a650d80f83 100644 --- a/qapi/qapi-schema.json +++ b/qapi/qapi-schema.json @@ -94,3 +94,4 @@ { 'include': 'trace.json' } { 'include': 'introspect.json' } { 'include': 'misc.json' } +{ 'include': 'rdma.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' } }