]> xenbits.xensource.com Git - libvirt.git/commit
qemu: Process RDMA GID state change event
authorYuval Shaia <yuval.shaia@oracle.com>
Mon, 24 Dec 2018 10:15:12 +0000 (12:15 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 9 Jan 2019 09:26:29 +0000 (10:26 +0100)
commited357cef18b21c26f15e342b712a7de3f28f9471
tree19ef5a31a8544480a7022e3f9884d0d0cf9a7d0c
parent45b439c3af000eb41c819068d093406810dd036c
qemu: Process RDMA GID state change event

This event is emitted on the monitor when a GID table in pvrdma device
is modified and the change needs to be propagate to the backend RDMA
device's GID table.

The control over the RDMA device's GID table is done by updating the
device's Ethernet function addresses.
Usually the first GID entry is determine by the MAC address, the second
by the first IPv6 address and the third by the IPv4 address. Other
entries can be added by adding more IP addresses. The opposite is the
same, i.e. whenever an address is removed, the corresponding GID entry
is removed.

The process is done by the network and RDMA stacks. Whenever an address
is added the ib_core driver is notified and calls the device driver's
add_gid function which in turn update the device.

To support this in pvrdma device we need to hook into the create_bind
and destroy_bind HW commands triggered by pvrdma driver in guest.
Whenever a changed is made to the pvrdma device's GID table a special
QMP messages is sent to be processed by libvirt to update the address of
the backend Ethernet device.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_driver.c
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_process.c