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 23:04:08 +0100 Message-ID: <4CE1AE58.3070508@web.de> References: <20101115194103.15991.41060.stgit@s20.home> <4CE1928F.7060100@web.de> <1289852706.2805.223.camel@x201> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig21F48F30D69DD370622C25F9" Cc: kvm@vger.kernel.org, mst@redhat.com To: Alex Williamson Return-path: Received: from fmmailgate01.web.de ([217.72.192.221]:44161 "EHLO fmmailgate01.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758634Ab0KOWFa (ORCPT ); Mon, 15 Nov 2010 17:05:30 -0500 In-Reply-To: <1289852706.2805.223.camel@x201> Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig21F48F30D69DD370622C25F9 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Am 15.11.2010 21:25, Alex Williamson wrote: > On Mon, 2010-11-15 at 21:05 +0100, Jan Kiszka wrote: >> Am 15.11.2010 20:41, Alex Williamson wrote: >>> Use register_device_unmigratable() to declare ourselves as >>> non-migratable. >>> >>> Signed-off-by: Alex Williamson >>> --- >>> >>> hw/device-assignment.c | 15 +++++++++++++++ >>> 1 files changed, 15 insertions(+), 0 deletions(-) >>> >>> 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(= AssignedDevice *dev) >>> dev->msix_table_page =3D NULL; >>> } >>> =20 >>> +/* This should never get called, but we're required to create a save= _state >>> + * 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 *p= ci_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 shoul= d >> be changed first. >=20 > Nope, save state handlers aren't allowed to fail. I tried to fix it: >=20 > http://lists.nongnu.org/archive/html/qemu-devel/2010-11/msg00417.html >=20 > (you can find more discussion in other branches of that subject) I've > succumbed to not getting that series in, so now I'm just trying to use > the code as it exists. Thanks, Hmm, didn't get why you need that series for the purpose of no_migration declaration. My point is: struct VMStateDescription { const char *name; int version_id; int minimum_version_id; int minimum_version_id_old; int no_migrate; /* or 'flags' */ ... so that you can specify an empty vmstate with that flag set, and you do not need to register/unregister things via to-be-deprecated service calls. Or am I missing some subtle detail? Jan --------------enig21F48F30D69DD370622C25F9 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/ iEYEARECAAYFAkzhrlgACgkQitSsb3rl5xRqJQCbBA232ZAuAa7EVlIcravO0QaH g6sAoKMi/gvatZ63Cbv97+ZeEf4kpT19 =XGls -----END PGP SIGNATURE----- --------------enig21F48F30D69DD370622C25F9--