From: Alex Williamson <alex.williamson@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: quintela@redhat.com, qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [RESEND PATCH 1/2] qdev: Track runtime machine modifications
Date: Wed, 12 Jan 2011 06:51:54 -0700 [thread overview]
Message-ID: <1294840314.3214.131.camel@x201> (raw)
In-Reply-To: <m3hbdeuxvl.fsf@blackfin.pond.sub.org>
On Wed, 2011-01-12 at 13:09 +0100, Markus Armbruster wrote:
> Alex Williamson <alex.williamson@redhat.com> writes:
>
> > Create a trivial interface to track whether the machine has been
> > modified since boot. Adding or removing devices will trigger this
> > to return true. An example usage scenario for such an interface is
> > the rtl8139 driver which includes a cpu_register_io_memory() value
> > in it's migration stream. For the majority of migrations, where
> > no hotplug has occured in the machine, this works correctly. Once
> > the machine is modified, we can use this interface to detect that
> > and include a subsection for the device to prevent migrations to
> > rtl8139 versions with this bug.
> >
> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> > Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > Acked-by: Juan Quintela <quintela@redhat.com>
> > ---
> >
> > hw/qdev.c | 10 ++++++++++
> > hw/qdev.h | 1 +
> > 2 files changed, 11 insertions(+), 0 deletions(-)
> >
> > diff --git a/hw/qdev.c b/hw/qdev.c
> > index 6fc9b02..e450c21 100644
> > --- a/hw/qdev.c
> > +++ b/hw/qdev.c
> > @@ -32,6 +32,8 @@
> > #include "blockdev.h"
> >
> > static int qdev_hotplug = 0;
> > +static bool qdev_hot_added = false;
> > +static bool qdev_hot_removed = false;
> >
> > /* This is a nasty hack to allow passing a NULL bus to qdev_create. */
> > static BusState *main_system_bus;
> > @@ -93,6 +95,7 @@ static DeviceState *qdev_create_from_info(BusState *bus, DeviceInfo *info)
> > if (qdev_hotplug) {
> > assert(bus->allow_hotplug);
> > dev->hotplugged = 1;
> > + qdev_hot_added = true;
> > }
> > dev->instance_id_alias = -1;
> > dev->state = DEV_STATE_CREATED;
> > @@ -294,6 +297,8 @@ int qdev_unplug(DeviceState *dev)
> > }
> > assert(dev->info->unplug != NULL);
> >
> > + qdev_hot_removed = true;
> > +
> > return dev->info->unplug(dev);
> > }
> >
> > @@ -394,6 +399,11 @@ void qdev_machine_creation_done(void)
> > qdev_hotplug = 1;
> > }
> >
> > +bool qdev_machine_modified(void)
> > +{
> > + return qdev_hot_added || qdev_hot_removed;
> > +}
> > +
> > /* Get a character (serial) device interface. */
> > CharDriverState *qdev_init_chardev(DeviceState *dev)
> > {
>
> Why do you track add/remove separately, in qdev_hot_added and
> qdev_hot_removed? I don't mind, just curious.
I thought the distinction might be useful at some point, but we don't
use it yet. Thanks,
Alex
next prev parent reply other threads:[~2011-01-12 13:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-16 18:01 [Qemu-devel] [PATCH 0/2] Fix rtl8139 migration with hotplug Alex Williamson
2010-12-16 18:02 ` [Qemu-devel] [PATCH 1/2] qdev: Track runtime machine modifications Alex Williamson
2010-12-16 18:02 ` [Qemu-devel] [PATCH 2/2] rtl8139: Use subsection to restrict migration after hotplug Alex Williamson
2010-12-16 23:41 ` [Qemu-devel] Re: [PATCH 0/2] Fix rtl8139 migration with hotplug Michael S. Tsirkin
2010-12-17 1:35 ` Juan Quintela
2011-01-04 19:37 ` [Qemu-devel] [RESEND PATCH " Alex Williamson
2011-01-04 19:37 ` [Qemu-devel] [RESEND PATCH 1/2] qdev: Track runtime machine modifications Alex Williamson
2011-01-12 12:09 ` Markus Armbruster
2011-01-12 13:51 ` Alex Williamson [this message]
2011-01-04 19:38 ` [Qemu-devel] [RESEND PATCH 2/2] rtl8139: Use subsection to restrict migration after hotplug Alex Williamson
2011-01-05 10:13 ` [Qemu-devel] Re: [RESEND PATCH 0/2] Fix rtl8139 migration with hotplug Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1294840314.3214.131.camel@x201 \
--to=alex.williamson@redhat.com \
--cc=armbru@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.