mirror of https://gitee.com/openkylin/qemu.git
One bugfix for device plug/unplug and migration in the
channel subsystem code. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJYz5bHAAoJEN7Pa5PG8C+vLP8QAJ8zkTWIOkx7WESsQEqXla8B BmiPtKkmszMWFCoIJ5EXVyBn84IBD02WdQWqxWUlNonTtleFY4y6nPFhEHOL35EO r5bV3dcn6SwhIpBPO4Z1cP+8W3DsB+8QXtNtnViX4NqAQrMRbnBcQzdYfpQtQ4ZC jTyPun+oJ1x0qPCd/Xa0Os3tXsyGat0V2pTDUVVfGWbLCytHfS4NXTlOlX/jUpNG uWoJnChf4UazzD2FHGvz5ysnX6ow1m6NOHIWwnAQwLKnCL6u6XLXEUE5hEssQEkP TROqPl+m0Wzbd5k6gcBOIKTrOt2DMOheFmU70mCXywbp47MVcZYxEfU9ouSsRbKB /cPNyakuem5a7j+hPFEPaJ+8D8wagK7QvkHh3N3dCawt9sQvoOquN7SMQnam5w// rP2b+vA3Ndj8lwuXicjgo5ZAnKQybMUy+xAlVs4DikBMEsVJPYvR8rMZCnOhuIcM jdU3vEZknZzoGcFcFbGS0VIIX8WSsP7tjI8tz+MKiHcdS07y4Bll5aLXmFZUZfej b7Dwm4oyydodnhz46+WVjRS5Qq6XXfWUa7o7UXWtK+IBsgcB1WSp/W/63YenCU0F Q/KWPieOMWgOs16SHza/BuaK5Y608aj7eeN7LvNuPJqBg3ZNEDWZMiBoxS+Rojz+ /ulPBGrOBtX9nkfbN5Tq =hZP4 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20170320' into staging One bugfix for device plug/unplug and migration in the channel subsystem code. # gpg: Signature made Mon 20 Mar 2017 08:45:59 GMT # gpg: using RSA key 0xDECF6B93C6F02FAF # gpg: Good signature from "Cornelia Huck <huckc@linux.vnet.ibm.com>" # gpg: aka "Cornelia Huck <cornelia.huck@de.ibm.com>" # Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0 18CE DECF 6B93 C6F0 2FAF * remotes/cohuck/tags/s390x-20170320: s390x/css: reassign subchannel if schid is changed after migration Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
00e7c07b06
|
@ -1675,12 +1675,27 @@ void subch_device_save(SubchDev *s, QEMUFile *f)
|
|||
|
||||
int subch_device_load(SubchDev *s, QEMUFile *f)
|
||||
{
|
||||
SubchDev *old_s;
|
||||
uint16_t old_schid = s->schid;
|
||||
int i;
|
||||
|
||||
s->cssid = qemu_get_byte(f);
|
||||
s->ssid = qemu_get_byte(f);
|
||||
s->schid = qemu_get_be16(f);
|
||||
s->devno = qemu_get_be16(f);
|
||||
/* Re-assign subch. */
|
||||
if (old_schid != s->schid) {
|
||||
old_s = channel_subsys.css[s->cssid]->sch_set[s->ssid]->sch[old_schid];
|
||||
/*
|
||||
* (old_s != s) means that some other device has its correct
|
||||
* subchannel already assigned (in load).
|
||||
*/
|
||||
if (old_s == s) {
|
||||
css_subch_assign(s->cssid, s->ssid, old_schid, s->devno, NULL);
|
||||
}
|
||||
/* It's OK to re-assign without a prior de-assign. */
|
||||
css_subch_assign(s->cssid, s->ssid, s->schid, s->devno, s);
|
||||
}
|
||||
s->thinint_active = qemu_get_byte(f);
|
||||
/* SCHIB */
|
||||
/* PMCW */
|
||||
|
|
Loading…
Reference in New Issue