qemu-e2k/hw/s390x
Dong Jia Shi 3c788ebc6f s390x/css: reassign subchannel if schid is changed after migration
The subchannel is a means to access a device. While the device number is
assigned by the administrator, the subchannel number is assigned by
the channel subsystem in an ascending order on cold and hot plug.
When doing unplug and replug operations, the same device may end up on
a different subchannel; for example

- We start with a device fe.1.2222, which ends up at subchannel
  fe.1.0000.
- Now we detach the device, attach a device fe.1.3333 (which would get
  the now-free subchannel fe.1.0000), re-attach fe.1.2222 (which ends
  up at subchannel fe.1.0001) and detach fe.1.3333.
- We now have the same device (fe.1.2222) available to the guest; it
  just shows up on a different subchannel.

In such a case, the subchannel numbers are different from what a
QEMU would create during cold plug when parsing the command line.

As this would cause a guest visible change on migration, we do restore
the source system's value of the subchannel number on load.

So we are now fine from the guest perspective. From the host
perspective this will cause an inconsistent state in our internal data
structures, though.

For example, the subchannel 0 might not be at array position 0. This will
lead to problems when we continue doing hot (un/re) plug operations.

Let's fix this by cleaning up our internal data structures.

Reported-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
2017-03-20 09:22:57 +01:00
..
ccw-device.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
ccw-device.h s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
css-bridge.c s390x/css: provide a dev_path for css devices 2016-07-20 15:47:25 +02:00
css.c s390x/css: reassign subchannel if schid is changed after migration 2017-03-20 09:22:57 +01:00
event-facility.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
ipl.c s390x/ipl: Load network boot image 2017-02-28 12:04:48 +01:00
ipl.h s390x/ipl: Load network boot image 2017-02-28 12:04:48 +01:00
Makefile.objs s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
s390-pci-bus.c s390x/pci: merge msix init functions 2017-01-20 10:02:02 +01:00
s390-pci-bus.h s390-pci: fix compilation on older GCC versions 2017-02-01 09:11:56 +01:00
s390-pci-inst.c * QOM interface fix (Eduardo) 2017-01-20 16:42:07 +00:00
s390-pci-inst.h s390x/pci: make S390PCIIOMMU inherit Object 2017-01-20 09:48:09 +01:00
s390-skeys-kvm.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-skeys.c s390: use FILE instead of QEMUFile for creating text file 2016-05-26 11:31:05 +05:30
s390-virtio-ccw.c s390x/ipl: Extend S390IPLState to support network boot 2017-02-28 12:04:48 +01:00
s390-virtio-hcall.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-virtio.c s390x/ipl: Extend S390IPLState to support network boot 2017-02-28 12:04:48 +01:00
s390-virtio.h s390x/ipl: Extend S390IPLState to support network boot 2017-02-28 12:04:48 +01:00
sclp.c s390x: remove useless cast 2016-09-15 15:32:22 +03:00
sclpcpu.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
sclpquiesce.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
virtio-ccw.c virtio-ccw: support VIRTIO_QUEUE_MAX virtqueues 2017-02-24 10:15:18 +01:00
virtio-ccw.h virtio-ccw: add virtio-crypto-ccw device 2017-02-24 10:15:18 +01:00