From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51558) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c8fIN-00067w-Ir for qemu-devel@nongnu.org; Sun, 20 Nov 2016 22:29:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c8fIK-0003dm-Cf for qemu-devel@nongnu.org; Sun, 20 Nov 2016 22:29:27 -0500 Date: Mon, 21 Nov 2016 10:57:49 +1100 From: David Gibson Message-ID: <20161120235749.GC18153@umbus.fritz.box> References: <1479433227-29238-1-git-send-email-mdroth@linux.vnet.ibm.com> <1479433227-29238-4-git-send-email-mdroth@linux.vnet.ibm.com> <20161118160859.3756.30817@loki> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="8X7/QrJGcKSMr1RN" Content-Disposition: inline In-Reply-To: <20161118160859.3756.30817@loki> Subject: Re: [Qemu-devel] [PATCH for-2.8 3/3] spapr: migration support for CAS-negotiated option vectors List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Roth Cc: qemu-devel@nongnu.org, duanj@linux.vnet.ibm.com, quintela@redhat.com, dgilbert@redhat.com, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, amit.shah@redhat.com --8X7/QrJGcKSMr1RN Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Nov 18, 2016 at 10:08:59AM -0600, Michael Roth wrote: > Quoting Michael Roth (2016-11-17 19:40:27) > > With the additional of the OV5_HP_EVT option vector, we now have > > certain functionality (namely, memory unplug) that checks at run-time > > for whether or not the guest negotiated the option via CAS. Because > > we don't currently migrate these negotiated values, we are unable > > to unplug memory from a guest after it's been migrated until after > > the guest is rebooted and CAS-negotiation is repeated. > >=20 > > This patch fixes this by adding CAS-negotiated options to the > > migration stream. We do this using a subsection, since the > > negotiated value of OV5_HP_EVT is the only option currently needed > > to maintain proper functionality for a running guest. > >=20 > > Signed-off-by: Michael Roth > > --- > > hw/ppc/spapr.c | 68 +++++++++++++++++++++++++++++++++++++= ++++++++ > > hw/ppc/spapr_ovec.c | 12 ++++++++ > > include/hw/ppc/spapr_ovec.h | 4 +++ > > 3 files changed, 84 insertions(+) > >=20 > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > index 0cbab24..9e08aed 100644 > > --- a/hw/ppc/spapr.c > > +++ b/hw/ppc/spapr.c > > @@ -1267,6 +1267,70 @@ static bool version_before_3(void *opaque, int v= ersion_id) > > return version_id < 3; > > } > >=20 > > +static bool spapr_ov5_cas_needed(void *opaque) > > +{ > > + sPAPRMachineState *spapr =3D opaque; > > + sPAPROptionVector *ov5_mask =3D spapr_ovec_new(); > > + sPAPROptionVector *ov5_legacy =3D spapr_ovec_new(); > > + sPAPROptionVector *ov5_removed =3D spapr_ovec_new(); > > + bool cas_needed; > > + > > + /* Prior to the introduction of sPAPROptionVector, we had two opti= on > > + * vectors we dealt with: OV5_FORM1_AFFINITY, and OV5_DRCONF_MEMOR= Y. > > + * Both of these options encode machine topology into the device-t= ree > > + * in such a way that the now-booted OS should still be able to in= teract > > + * appropriately with QEMU regardless of what options were actually > > + * negotiatied on the source side. > > + * > > + * As such, we can avoid migrating the CAS-negotiated options if t= hese > > + * are the only options available on the current machine/platform. > > + * Since these are the only options available for pseries-2.7 and > > + * earlier, this allows us to maintain old->new/new->old migration > > + * compatibility. > > + * > > + * For QEMU 2.8+, there are additional CAS-negotiatable options av= ailable > > + * via default pseries-2.8 machines and explicit command-line para= meters. > > + * Some of these options, like OV5_HP_EVT, *do* require QEMU to be= aware > > + * of the actual CAS-negotiated values to continue working properl= y. For > > + * example, availability of memory unplug depends on knowing wheth= er > > + * OV5_HP_EVT was negotiated via CAS. > > + * > > + * Thus, for any cases where the set of available CAS-negotiatable > > + * options extends beyond OV5_FORM1_AFFINITY and OV5_DRCONF_MEMORY= , we > > + * include the CAS-negotiated options in the migration stream. > > + */ > > + spapr_ovec_set(ov5_mask, OV5_FORM1_AFFINITY); > > + spapr_ovec_set(ov5_mask, OV5_DRCONF_MEMORY); > > + > > + /* spapr_ovec_diff returns true if bits were removed. we avoid usi= ng > > + * the mask itself since in the future it's possible "legacy" bits= may be > > + * removed via machine options, which could generate a false posit= ive > > + * that breaks migration. > > + */ > > + spapr_ovec_intersect(ov5_legacy, spapr->ov5, ov5_mask); > > + cas_needed =3D spapr_ovec_diff(ov5_removed, spapr->ov5, ov5_legacy= ); > > + > > + spapr_ovec_cleanup(ov5_mask); > > + spapr_ovec_cleanup(ov5_legacy); > > + spapr_ovec_cleanup(ov5_removed); > > + > > + error_report("MIGRATION NEEDED: %d", cas_needed); >=20 > Argh, sorry, I just noticed this stray debug comment that slipped in. > Would you prefer a v2, or just removing it in-tree? I've fixed it in tree. Thanks for pointing it out. --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --8X7/QrJGcKSMr1RN Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYMjh7AAoJEGw4ysog2bOSE30P/j1q/kAmlhAkh/7PI0OrPAoe 6O1G7fS9rC1RE50zugxT7plP58uuEdl5Db5ze5PNsqJqtKbUaAsowDUpMoj20l58 Az+kDSAVd6SmDxjDLS6MfW+9WdrHTLm1MAUvCLoYRJICUCWXaiAyNvFPMnaaiuU9 vBsey4q/63DuYUCwz+QD04dK6pO3fj6MRrB9OPcUq8wODIcyG0kGDSBTxGqoaBcm 0zOI5l+Z/4QvxF2yUzNXmnIJPccBJkJNoneicVV0ovWaHZZZ7qNAPp+UzP+Fi1Y0 l8VWly8QTc2h8qnOBHjQ8Wzzt2SlcxHj95XbaKZsJMJkXhSUotfpWnKSfBIVgoeG H5KWjvQTdb3YSpBvqjEQ/yzjC3i86ZqDqAS1XyESrJ+6w0w6YR66ANolJf/lQpRS iUEW0VKw29tKg8ExeC5XrFeHAVH1fO9pv3u1y9Rw6HT7xyOybklcaBbW3WVQFp5e 2TRa4Bh83jTz4Cny0ToqXwek17wdZbXVRFFFp88lmmnu+KrS7Bj0akWCW8tKl3AW 2C4WMioIOFmbhQrifJ/lD5DXygQ59erWd768uPUDw93aQhfweGI3jJGmGftKEDuX caCPZ/NHhPTAEhQYGrGjUWLXUzScmWAmiSZZi0+HgeyYiF/+xmtVjMZ80eQN8Mlj 2WAWBtW+s6vyw6SL8p6n =cHhc -----END PGP SIGNATURE----- --8X7/QrJGcKSMr1RN--