diff mbox series

[v2] libxl: Add suppress-vmdesc to QEMU machine

Message ID 20201029190332.31161-1-jandryuk@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v2] libxl: Add suppress-vmdesc to QEMU machine | expand

Commit Message

Jason Andryuk Oct. 29, 2020, 7:03 p.m. UTC
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 <jandryuk@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(-)

Comments

Wei Liu Nov. 3, 2020, 10:48 a.m. UTC | #1
On Thu, Oct 29, 2020 at 03:03:32PM -0400, Jason Andryuk wrote:
> 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 <jandryuk@gmail.com>
> 
> ---
> QEMU 2.3 came out in 2015, so setting suppress-vmdesc unilaterally
> should be okay...  Is this okay?

Anthony, what is your opinion on this?

Wei.
Anthony PERARD Nov. 3, 2020, 11:06 a.m. UTC | #2
On Tue, Nov 03, 2020 at 10:48:44AM +0000, Wei Liu wrote:
> On Thu, Oct 29, 2020 at 03:03:32PM -0400, Jason Andryuk wrote:
> > 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 <jandryuk@gmail.com>

:-(, sorry, I never received that email.

> > ---
> > QEMU 2.3 came out in 2015, so setting suppress-vmdesc unilaterally
> > should be okay...  Is this okay?


> Anthony, what is your opinion on this?

That it's fine, and I actually asked for the libxl patch. For reference,
QEMU 2.3 is in qemu-xen-4.7.

So,
Acked-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,
Jason Andryuk Nov. 3, 2020, 2:14 p.m. UTC | #3
On Tue, Nov 3, 2020 at 6:06 AM Anthony PERARD <anthony.perard@citrix.com> wrote:
>
> On Tue, Nov 03, 2020 at 10:48:44AM +0000, Wei Liu wrote:
> > On Thu, Oct 29, 2020 at 03:03:32PM -0400, Jason Andryuk wrote:
> > > 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 <jandryuk@gmail.com>
>
> :-(, sorry, I never received that email.

Sorry about that.  I included your address , but Gmail said:
"""
Address not found

Your message wasn't delivered to anthony.perard@citrix.com because the
address couldn't be found, or is unable to receive mail.

The response from the remote server was:

550 Too many invalid recipients
"""

> > > ---
> > > QEMU 2.3 came out in 2015, so setting suppress-vmdesc unilaterally
> > > should be okay...  Is this okay?
>
>
> > Anthony, what is your opinion on this?
>
> That it's fine, and I actually asked for the libxl patch. For reference,
> QEMU 2.3 is in qemu-xen-4.7.
>
> So,
> Acked-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

Jason
diff mbox series

Patch

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) -