From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
"Andrew Jeffery" <andrew@aj.id.au>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
qemu-devel@nongnu.org,
"Andrew Baumann" <Andrew.Baumann@microsoft.com>,
"Subbaraya Sundeep" <sundeep.lkml@gmail.com>,
"Joel Stanley" <joel@jms.id.au>,
"Laurent Vivier" <laurent@vivier.eu>,
qemu-arm@nongnu.org, "Cédric Le Goater" <clg@kaod.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Artyom Tarasenko" <atar4qemu@gmail.com>,
"Gerd Hoffmann" <kraxel@redhat.com>
Subject: Re: [RFC PATCH v2 02/20] hw/core/qdev: Add vmstate_qdev_no_state_to_migrate
Date: Tue, 19 Jan 2021 09:31:23 +0000 [thread overview]
Message-ID: <20210119093123.GB3008@work-vm> (raw)
In-Reply-To: <20210117192446.23753-3-f4bug@amsat.org>
* Philippe Mathieu-Daudé (f4bug@amsat.org) wrote:
> Add vmstate_qdev_no_state_to_migrate, which is simply a
> pointer to vmstate_no_state_to_migrate. This way all
> qdev devices (including "hw/qdev-core.h") don't have to
> include "migration/vmstate.h".
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> Unresolved issues:
>
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg721695.html
> Peter:
> > Does this definitely not put any data into the migration stream?
> > We don't want to change what's on the wire for machines that
> > use devices that start using this. (If it does by default, it
> > would be easy to make the migration code special case the
> > magic symbol to act like "no vmsd specified").
>
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg727634.html
> Dave:
> > I'd need to test it to be sure, but I think if we added a .needed
> > to vmstate_no_state_to_migrate with a function that always returned
> > false, then I think the stream would stay unchanged.
Yes I still think you need that; if you only use this for base classes
rather than devices themselves you're probably OK; but if you use it on
a device I think you'll end up with an empty-state entry in the
migration stream.
Dave
> ---
> include/hw/qdev-core.h | 2 ++
> include/migration/vmstate.h | 1 +
> hw/core/qdev.c | 3 +++
> migration/vmstate.c | 7 +++++++
> stubs/vmstate.c | 7 +++++++
> 5 files changed, 20 insertions(+)
>
> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> index bafc311bfa1..d2c7a46e6a2 100644
> --- a/include/hw/qdev-core.h
> +++ b/include/hw/qdev-core.h
> @@ -140,6 +140,8 @@ struct DeviceClass {
> const char *bus_type;
> };
>
> +extern const VMStateDescription *vmstate_qdev_no_state_to_migrate;
> +
> typedef struct NamedGPIOList NamedGPIOList;
>
> struct NamedGPIOList {
> diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> index dda65c9987d..50559598eac 100644
> --- a/include/migration/vmstate.h
> +++ b/include/migration/vmstate.h
> @@ -197,6 +197,7 @@ struct VMStateDescription {
> #if defined(CONFIG_USER_ONLY)
> extern const VMStateDescription vmstate_user_mode_cpu_dummy;
> #endif
> +extern const VMStateDescription vmstate_no_state_to_migrate;
>
> extern const VMStateInfo vmstate_info_bool;
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index cefc5eaa0a9..f0d0afd438d 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -44,6 +44,9 @@
> static bool qdev_hot_added = false;
> bool qdev_hot_removed = false;
>
> +const VMStateDescription *vmstate_qdev_no_state_to_migrate =
> + &vmstate_no_state_to_migrate;
> +
> const VMStateDescription *qdev_get_vmsd(DeviceState *dev)
> {
> DeviceClass *dc = DEVICE_GET_CLASS(dev);
> diff --git a/migration/vmstate.c b/migration/vmstate.c
> index 05f87cdddc5..2c373774dfa 100644
> --- a/migration/vmstate.c
> +++ b/migration/vmstate.c
> @@ -20,6 +20,13 @@
> #include "qemu/error-report.h"
> #include "trace.h"
>
> +const VMStateDescription vmstate_no_state_to_migrate = {
> + .name = "empty-state",
> + .fields = (VMStateField[]) {
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
> void *opaque, JSONWriter *vmdesc);
> static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
> diff --git a/stubs/vmstate.c b/stubs/vmstate.c
> index 8da777a1fb4..f561f9f39bd 100644
> --- a/stubs/vmstate.c
> +++ b/stubs/vmstate.c
> @@ -5,6 +5,13 @@
> const VMStateDescription vmstate_user_mode_cpu_dummy = {};
> #endif
>
> +const VMStateDescription vmstate_no_state_to_migrate = {
> + .name = "empty-state",
> + .fields = (VMStateField[]) {
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> int vmstate_register_with_alias_id(VMStateIf *obj,
> uint32_t instance_id,
> const VMStateDescription *vmsd,
> --
> 2.26.2
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2021-01-19 9:32 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-17 19:24 [RFC PATCH v2 00/20] hw: Mark the device with no migratable fields Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 01/20] migration/vmstate: Restrict vmstate_dummy to user-mode Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-18 11:48 ` Dr. David Alan Gilbert
2021-01-18 11:48 ` Dr. David Alan Gilbert
2021-01-19 13:50 ` Peter Maydell
2021-01-19 16:37 ` Philippe Mathieu-Daudé
2021-01-20 11:03 ` Dr. David Alan Gilbert
2021-01-17 19:24 ` [RFC PATCH v2 02/20] hw/core/qdev: Add vmstate_qdev_no_state_to_migrate Philippe Mathieu-Daudé
2021-01-19 9:31 ` Dr. David Alan Gilbert [this message]
2021-01-19 13:31 ` Peter Maydell
2021-01-17 19:24 ` [RFC PATCH v2 03/20] hw/arm/armv7m: Mark the device with no migratable fields Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 04/20] hw/arm/aspeed_soc: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-26 7:09 ` Cédric Le Goater
2021-01-26 7:09 ` Cédric Le Goater
2021-01-17 19:24 ` [RFC PATCH v2 05/20] hw/arm/bcm283x: Mark devices " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 06/20] hw/arm/msf2-soc: Mark the device " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 07/20] hw/core/split-irq: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 08/20] hw/cpu/a9mpcore: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 09/20] hw/cpu/cluster: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 10/20] hw/usb/hcd-ohci: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-18 20:10 ` Dr. David Alan Gilbert
2021-01-18 20:10 ` Dr. David Alan Gilbert
2021-01-17 19:24 ` [RFC PATCH v2 11/20] hw/intc/arm_gicv2m: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 12/20] hw/misc/armsse-cpuid: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 13/20] hw/misc/iotkit-sysinfo: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 14/20] hw/misc/unimp: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 15/20] hw/nubus/mac-nubus-bridge: " Philippe Mathieu-Daudé
2021-01-17 19:24 ` Philippe Mathieu-Daudé
2021-01-18 12:04 ` Laurent Vivier
2021-01-18 12:04 ` Laurent Vivier
2021-01-17 19:24 ` [RFC PATCH v2 16/20] hw/sparc64/sun4u: Mark devices " Philippe Mathieu-Daudé
2021-01-17 20:37 ` Artyom Tarasenko
2021-01-17 20:37 ` Artyom Tarasenko
2021-01-17 19:24 ` [RFC PATCH v2 17/20] hw/pci-host/gpex: Mark device " Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 18/20] hw/core/qdev: Display warning for devices missing migration state Philippe Mathieu-Daudé
2021-01-17 19:24 ` [RFC PATCH v2 19/20] stubs/vmstate: Add VMSTATE_END_OF_LIST to vmstate_user_mode_cpu_dummy Philippe Mathieu-Daudé
2021-01-20 10:56 ` Dr. David Alan Gilbert
2021-01-20 10:56 ` Dr. David Alan Gilbert
2021-01-17 19:24 ` [RFC PATCH v2 20/20] migration/vmstate: Simplify vmstate for user-mode CPU Philippe Mathieu-Daudé
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=20210119093123.GB3008@work-vm \
--to=dgilbert@redhat.com \
--cc=Andrew.Baumann@microsoft.com \
--cc=andrew@aj.id.au \
--cc=atar4qemu@gmail.com \
--cc=berrange@redhat.com \
--cc=clg@kaod.org \
--cc=ehabkost@redhat.com \
--cc=f4bug@amsat.org \
--cc=joel@jms.id.au \
--cc=kraxel@redhat.com \
--cc=laurent@vivier.eu \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=sundeep.lkml@gmail.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.