The device model state saved by QMP xen-save-devices-state doesn't include the vmdesc json. When restoring an HVM, xen-load-devices-state always triggers "Expected vmdescription section, but got 0". This is not a problem when restore comes from a file. However, when QEMU runs in a linux stubdom and comes over a console, EOF is not received. This causes a delay restoring - though it does restore.
Setting suppress-vmdesc skips looking for the vmdesc during restore and avoids the wait. QEMU 5.2 enables suppress-vmdesc by default for xenfv, but this change sets it manually for xenfv and xen_platform_pci=0 when -machine pc is use. QEMU commit 9850c6047b8b "migration: Allow to suppress vmdesc submission" added suppress-vmdesc in QEMU 2.3. Signed-off-by: Jason Andryuk <jandr...@gmail.com> --- QEMU 2.3 came out in 2015, so setting suppress-vmdesc unilaterally should be okay... Is this okay? --- tools/libs/light/libxl_dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index d1ff35dda3..3da83259c0 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -1778,9 +1778,9 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, /* Switching here to the machine "pc" which does not add * the xen-platform device instead of the default "xenfv" machine. */ - machinearg = libxl__strdup(gc, "pc,accel=xen"); + machinearg = libxl__strdup(gc, "pc,accel=xen,suppress-vmdesc=on"); } else { - machinearg = libxl__strdup(gc, "xenfv"); + machinearg = libxl__strdup(gc, "xenfv,suppress-vmdesc=on"); } if (b_info->u.hvm.mmio_hole_memkb) { uint64_t max_ram_below_4g = (1ULL << 32) - -- 2.25.1