diff -Nru a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c --- a/src/qemu/qemu_process.c 2012-01-03 01:51:55.069333901 +0300 +++ b/src/qemu/qemu_process.c 2012-01-03 05:59:24.195251148 +0300 @@ -2822,10 +2822,26 @@ /* Run an early hook to set-up missing devices */ if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) { char *xml = virDomainDefFormat(vm->def, 0); + char *opt = NULL; int hookret; + if (migrateFrom) { + switch (vmop) { + case VIR_VM_OP_MIGRATE_IN_START: + if (STRPREFIX(migrateFrom, "tcp")) { + opt = "migration-target-direct"; + } else { + opt = "migration-target-tunnel"; + } + break; + case VIR_VM_OP_RESTORE: + opt = "restore"; + break; + } + } + hookret = virHookCall(VIR_HOOK_DRIVER_QEMU, vm->def->name, - VIR_HOOK_QEMU_OP_PREPARE, VIR_HOOK_SUBOP_BEGIN, NULL, xml); + VIR_HOOK_QEMU_OP_PREPARE, VIR_HOOK_SUBOP_BEGIN, opt, xml); VIR_FREE(xml); /*