qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Cc: Halil Pasic <pasic@linux.vnet.ibm.com>,
	Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org, qemu-s390x@nongnu.org
Subject: Re: [Qemu-devel] [RFC PATCH v2 1/1] s390x/css: unrestrict cssids
Date: Wed, 29 Nov 2017 12:47:47 +0100	[thread overview]
Message-ID: <20171129124747.63c1359b.cohuck@redhat.com> (raw)
In-Reply-To: <20171129081735.GR5859@bjsdjshi@linux.vnet.ibm.com>

On Wed, 29 Nov 2017 16:17:35 +0800
Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> wrote:

> * Halil Pasic <pasic@linux.vnet.ibm.com> [2017-11-28 14:07:58 +0100]:
> 
> [...]
> > 
> > The auto-generated bus ids are affected by both changes. We hope to not
> > encounter any auto-generated bus ids in production as Libvirt is always
> > explicit about the bus id.  Since 8ed179c937 ("s390x/css: catch section
> > mismatch on load", 2017-05-18) the worst that can happen because the same
> > device ended up having a different bus id is a cleanly failed migration.
> > I find it hard to reason about the impact of changed auto-generated bus
> > ids on migration for command line users as I don't know which rules is
> > such an user supposed to follow.  
> For this paragraph, Halil pointed to me a case that he is thinking of.
> 1. VM configuration with 3 devices:
>   -device virtio (e.g. virtio-blk-ccw,id=disk0)
>   -device vfio-ccw (e.g. id=vfio0)
>   -device virtio (e.g. virtio-rng-ccw,id=rng0)
> 2. Start the vm.
> 3. device_del vfio0
> 4. migrate "exec:gzip -c > /tmp/tmp_vmstate.gz"
> 5. modify cmd line from step 1 by removing the vfio0 device, and adding:
>    -incoming "exec:gzip -c -d /tmp/tmp_vmstate.gz"
> 
> Let me list my test results here for everybody's reference.
> 
> W/o this patch
> ==============
> 
> ------------+---------------+-------------
>             | squashing off | squashing on
> ------------+---------------+-------------
>     auto id |        F      |     F
> ------------+---------------+-------------
> explicit id |        F      |     S
> ------------+---------------+-------------
> 
> T1. squashing off + auto id
>   qemu-system-s390x: vmstate: get_nullptr expected VMS_NULLPTR_MARKER
>   qemu-system-s390x: Failed to load s390_css:css
>   qemu-system-s390x: error while loading state for instance 0x0 of device 's390_css'
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Fail due to css mismatch - there is no css 0 in the new vm.]
> 
> T2. squashing off + explicit given id
>   qemu-system-s390x: vmstate: get_nullptr expected VMS_NULLPTR_MARKER
>   qemu-system-s390x: Failed to load s390_css:css
>   qemu-system-s390x: error while loading state for instance 0x0 of device 's390_css'
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Fail due to css mismatch - there is no css 0 in the new vm.]

Hmm... so should we even try to migrate an empty css 0? It only exists
because we have created a device that we had to detach anyway because
it was non-migrateable...

[Probably no easy way to deal with this, though.]

> 
> T3. squashing on  + auto id
>   qemu-system-s390x: Unknown savevm section or instance '/00.0.0003/virtio-rng' 0
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Fail due to busid mismatch.]
> 
> T4. squashing on  + explicit given id
>   Succeed.
> 
> With this patch
> ===============
> 
> ------------+---------------+-------------
>             | squashing off | squashing on
> ------------+---------------+-------------
>     auto id |        F      |     F
> ------------+---------------+-------------
> explicit id |        S'     |     S
> ------------+---------------+-------------
> 
> T5. squashing off + auto id
>   qemu-system-s390x: Unknown savevm section or instance '/fe.0.0003/virtio-rng' 0
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Fail due to busid mismatch.]
> 
> T6. squashing off + explicit given id
>   qemu-system-s390x: vmstate: get_nullptr expected VMS_NULLPTR_MARKER
>   qemu-system-s390x: Failed to load s390_css:css
>   qemu-system-s390x: error while loading state for instance 0x0 of device 's390_css'
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Setting vfio-ccw.devno=non-fe.x.xxxx. (same as T1)
>  Fail due to css mismatch - there is no css 0 in the new vm.]
> 
>   Succeed.
> [Setting vfio-ccw.devno=fe.x.xxxx.]

Don't you need to attach the vfio-ccw device later anyway? You have to
detach it from the source before you migrate, and I'd expect it to be
symmetric.

> 
> T7. squashing on  + auto id
>   qemu-system-s390x: Unknown savevm section or instance '/00.0.0003/virtio-rng' 0
>   qemu-system-s390x: load of migration failed: Invalid argument
> [Fail due to busid mismatch.]
> 
> T8. squashing on  + explicit given id
>   Succeed.
> 
> 
> Notice:
> The differences of the test results between w and w/o this patch are in
> the "squashing off" cases. I think these are things that we can accept.

Yes, I think that makes sense. If you want reliable migration, you need
to be specific with your ids. I'd just don't want us to break things
explicitly.

  parent reply	other threads:[~2017-11-29 11:47 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 13:07 [Qemu-devel] [RFC PATCH v2 1/1] s390x/css: unrestrict cssids Halil Pasic
2017-11-29  8:17 ` Dong Jia Shi
2017-11-29  8:20   ` Dong Jia Shi
2017-11-29 11:47   ` Cornelia Huck [this message]
2017-11-29 16:30     ` Halil Pasic
2017-11-30  3:16       ` Dong Jia Shi
2017-11-30  3:29     ` Dong Jia Shi
2017-11-29 12:37 ` Cornelia Huck
2017-11-29 16:25   ` Halil Pasic
2017-11-29 17:29     ` Cornelia Huck
2017-11-30 12:32       ` Halil Pasic
2017-11-30 13:32         ` Cornelia Huck
2017-12-01 14:38           ` Halil Pasic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171129124747.63c1359b.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=fiuczy@linux.vnet.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=shalini@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).