@@ -895,6 +895,34 @@ Set cache size to @var{value} (in bytes) for xbzrle migrations.
ETEXI
{
+ .name = "migrate_rdma_prepare",
+ .args_type = "",
+ .params = "",
+ .help = "prepare for RDMA VM migration",
+ .mhandler.cmd = hmp_migrate_rdma_prepare,
+ },
+
+STEXI
+@item migrate_rdma_prepare
+@findex migrate_rdma_prepare
+Prepare the VM for RDMA VM migration.
+ETEXI
+
+ {
+ .name = "migrate_rdma_release",
+ .args_type = "",
+ .params = "",
+ .help = "release RDMA resources for VM migration",
+ .mhandler.cmd = hmp_migrate_rdma_release,
+ },
+
+STEXI
+@item migrate_rdma_release
+@findex migrate_rdma_release
+Release the RDMA resources used during VM RDMA migration.
+ETEXI
+
+ {
.name = "migrate_set_speed",
.args_type = "value:o",
.params = "value",
@@ -910,6 +938,34 @@ Set maximum speed to @var{value} (in bytes) for migrations.
ETEXI
{
+ .name = "migrate_set_rdma_port",
+ .args_type = "port:i",
+ .params = "port",
+ .help = "set RDMA port for migration",
+ .mhandler.cmd = hmp_migrate_set_rdma_port,
+ },
+
+STEXI
+@item migrate_set_rdma_port @var{value}
+@findex migrate_set_rdma_port
+Set RDMA migration port to @var{value}.
+ETEXI
+
+ {
+ .name = "migrate_set_rdma_host",
+ .args_type = "host:s",
+ .params = "host",
+ .help = "set RDMA host name for migration",
+ .mhandler.cmd = hmp_migrate_set_rdma_host,
+ },
+
+STEXI
+@item migrate_set_rdma_host @var{value}
+@findex migrate_set_rdma_host
+Set RDMA migration host name to @var{value}.
+ETEXI
+
+ {
.name = "migrate_set_downtime",
.args_type = "value:T",
.params = "value",
@@ -848,6 +848,29 @@ void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict)
}
}
+void hmp_migrate_set_rdma_port(Monitor *mon, const QDict *qdict)
+{
+ int port = qdict_get_int(qdict, "port");
+ qmp_migrate_set_rdma_port(port, NULL);
+}
+
+void hmp_migrate_set_rdma_host(Monitor *mon, const QDict *qdict)
+{
+ const char *host = qdict_get_str(qdict, "host");
+ qmp_migrate_set_rdma_host(host, NULL);
+}
+
+void hmp_migrate_rdma_prepare(Monitor *mon, const QDict *qdict)
+{
+ qmp_migrate_rdma_prepare(NULL);
+}
+
+void hmp_migrate_rdma_release(Monitor *mon, const QDict *qdict)
+{
+ qmp_migrate_rdma_release(NULL);
+}
+
+
void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict)
{
int64_t value = qdict_get_int(qdict, "value");
@@ -55,6 +55,10 @@ void hmp_drive_mirror(Monitor *mon, const QDict *qdict);
void hmp_migrate_cancel(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict);
+void hmp_migrate_set_rdma_port(Monitor *mon, const QDict *qdict);
+void hmp_migrate_set_rdma_host(Monitor *mon, const QDict *qdict);
+void hmp_migrate_rdma_prepare(Monitor *mon, const QDict *qdict);
+void hmp_migrate_rdma_release(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict);
void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict);
void hmp_set_password(Monitor *mon, const QDict *qdict);
@@ -1695,6 +1695,62 @@
{ 'command': 'migrate_set_speed', 'data': {'value': 'int'} }
##
+# @migrate_set_rdma_port
+#
+# Set rdma communication port.
+#
+# @port: rdma communication port.
+#
+# Returns: nothing on success
+#
+# Notes: Nothing.
+#
+# Since: 1.3.0
+##
+{ 'command': 'migrate_set_rdma_port', 'data': {'port': 'int'} }
+
+##
+# @migrate_set_rdma_host
+#
+# Set rdma communication host address.
+#
+# @host: rdma communication host address.
+#
+# Returns: nothing on success
+#
+# Notes: Nothing.
+#
+# Since: 1.3.0
+##
+{ 'command': 'migrate_set_rdma_host', 'data': {'host': 'str'} }
+
+##
+# @migrate_rdma_prepare
+#
+# Tell the backup QEMU to pre-register all of the RDMA memory
+#
+# Returns: nothing on success
+#
+# Notes: Nothing.
+#
+# Since: 1.3.0
+##
+{ 'command': 'migrate_rdma_prepare' }
+
+##
+# @migrate_rdma_release
+#
+# Tell the QEMU to release rdma resources
+#
+# Returns: nothing on success
+#
+# Notes: Nothing.
+#
+# Since: 1.3.0
+##
+{ 'command': 'migrate_rdma_release' }
+
+##
# @migrate-set-cache-size
#
# Set XBZRLE cache size
@@ -2796,6 +2796,16 @@ CD-ROM drive and others. The @code{-nodefaults} option will disable all those
default devices.
ETEXI
+DEF("rdmaport", HAS_ARG, QEMU_OPTION_rdmaport, \
+ "-rdmaport p port for RDMA migration\n", QEMU_ARCH_ALL)
+STEXI
+ETEXI
+
+DEF("rdmahost", HAS_ARG, QEMU_OPTION_rdmahost, \
+ "-rdmahost p host name for RDMA migration\n", QEMU_ARCH_ALL)
+STEXI
+ETEXI
+
#ifndef _WIN32
DEF("chroot", HAS_ARG, QEMU_OPTION_chroot, \
"-chroot dir chroot to dir just before starting the VM\n",