@@ -105,4 +105,7 @@ void migrate_add_blocker(Error *reason);
*/
void migrate_del_blocker(Error *reason);
+extern bool incoming_postcopy;
+extern unsigned long incoming_postcopy_flags;
+
#endif
@@ -2497,6 +2497,28 @@ STEXI
Prepare for incoming migration, listen on @var{port}.
ETEXI
+DEF("postcopy", 0, QEMU_OPTION_postcopy,
+ "-postcopy postcopy incoming migration when -incoming is specified\n",
+ QEMU_ARCH_ALL)
+STEXI
+@item -postcopy
+@findex -postcopy
+start incoming migration in postcopy mode.
+ETEXI
+
+DEF("postcopy-flags", HAS_ARG, QEMU_OPTION_postcopy_flags,
+ "-postcopy-flags unsigned-int(flags)\n"
+ " flags for postcopy incoming migration\n"
+ " when -incoming and -postcopy are specified.\n"
+ " This is for benchmark/debug purpose (default: 0)\n",
+ QEMU_ARCH_ALL)
+STEXI
+@item -postcopy-flags int
+@findex -postcopy-flags
+Specify flags for incoming postcopy migration when -incoming and -postcopy are
+specified. This is for benchamrk/debug purpose. (default: 0)
+ETEXI
+
DEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
"-nodefaults don't create default devices\n", QEMU_ARCH_ALL)
STEXI
@@ -188,6 +188,8 @@ int mem_prealloc = 0; /* force preallocation of physical target memory */
int nb_nics;
NICInfo nd_table[MAX_NICS];
int autostart;
+bool incoming_postcopy = false; /* When -incoming is specified, postcopy mode */
+unsigned long incoming_postcopy_flags = 0; /* flags for postcopy incoming mode */
static int rtc_utc = 1;
static int rtc_date_offset = -1; /* -1 means no change */
QEMUClock *rtc_clock;
@@ -2969,6 +2971,12 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_incoming:
incoming = optarg;
break;
+ case QEMU_OPTION_postcopy:
+ incoming_postcopy = true;
+ break;
+ case QEMU_OPTION_postcopy_flags:
+ incoming_postcopy_flags = strtoul(optarg, NULL, 0);
+ break;
case QEMU_OPTION_nodefaults:
default_serial = 0;
default_parallel = 0;