From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH] device-assignment: Register as un-migratable Date: Mon, 15 Nov 2010 21:05:35 +0100 Message-ID: <4CE1928F.7060100@web.de> References: <20101115194103.15991.41060.stgit@s20.home> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigAA9E9DDC03EA679DE61F0AE4" Cc: kvm@vger.kernel.org, mst@redhat.com To: Alex Williamson Return-path: Received: from fmmailgate02.web.de ([217.72.192.227]:56253 "EHLO fmmailgate02.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757235Ab0KOUHb (ORCPT ); Mon, 15 Nov 2010 15:07:31 -0500 In-Reply-To: <20101115194103.15991.41060.stgit@s20.home> Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigAA9E9DDC03EA679DE61F0AE4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Am 15.11.2010 20:41, Alex Williamson wrote: > Use register_device_unmigratable() to declare ourselves as > non-migratable. >=20 > Signed-off-by: Alex Williamson > --- >=20 > hw/device-assignment.c | 15 +++++++++++++++ > 1 files changed, 15 insertions(+), 0 deletions(-) >=20 > diff --git a/hw/device-assignment.c b/hw/device-assignment.c > index bde231d..cd93941 100644 > --- a/hw/device-assignment.c > +++ b/hw/device-assignment.c > @@ -1434,6 +1434,13 @@ static void assigned_dev_unregister_msix_mmio(As= signedDevice *dev) > dev->msix_table_page =3D NULL; > } > =20 > +/* This should never get called, but we're required to create a save_s= tate > + * handler or else the no_migrate flag will never be checked. */ > +static void assigned_save(QEMUFile* f, void *opaque) > +{ > + abort(); > +} > + > static int assigned_initfn(struct PCIDevice *pci_dev) > { > AssignedDevice *dev =3D DO_UPCAST(AssignedDevice, dev, pci_dev); > @@ -1490,6 +1497,13 @@ static int assigned_initfn(struct PCIDevice *pci= _dev) > =20 > assigned_dev_load_option_rom(dev); > QLIST_INSERT_HEAD(&devs, dev, next); > + > + /* Assigned devices are not migratable, register a save > + * state entry so that we can mark it unmigratable. */ > + register_savevm(&dev->dev.qdev, "pci-assign", 0, 0, > + assigned_save, NULL, dev); > + register_device_unmigratable(&dev->dev.qdev, "pci-assign", dev); > + Isn't this expressible via some VMStateDescription? If not, that should be changed first. Jan > return 0; > =20 > assigned_out: > @@ -1503,6 +1517,7 @@ static int assigned_exitfn(struct PCIDevice *pci_= dev) > { > AssignedDevice *dev =3D DO_UPCAST(AssignedDevice, dev, pci_dev); > =20 > + unregister_savevm(&dev->dev.qdev, "pci-assign", dev); > QLIST_REMOVE(dev, next); > deassign_device(dev); > free_assigned_device(dev); >=20 --------------enigAA9E9DDC03EA679DE61F0AE4 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org/ iEYEARECAAYFAkzhko8ACgkQitSsb3rl5xTByQCeJgyxyx28yggHyKOl+Z+KHZF5 NOMAn0Qrfk/QjYiEpnXhC+8Ykp5mWIHa =G+Bn -----END PGP SIGNATURE----- --------------enigAA9E9DDC03EA679DE61F0AE4--