[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 06/33] add the vmstate description for device
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH v3 06/33] add the vmstate description for device reset state |
Date: |
Wed, 31 Jul 2019 16:08:50 +1000 |
User-agent: |
Mutt/1.12.0 (2019-05-25) |
On Mon, Jul 29, 2019 at 04:56:27PM +0200, Damien Hedde wrote:
> It contains the resetting counter and cold flag status.
>
> At this point, migration of bus reset related state (counter and cold/warm
> flag) is handled by parent device. This done using the post_load
> function in the vmsd subsection.
>
> This is last point allow to add an initial support of migration with part of
> qdev/qbus tree in reset state under the following condition:
> + time-lasting reset are asserted on Device only
>
> Note that if this condition is not respected, migration will succeed and
> no failure will occurs. The only impact is that the resetting counter
> of a bus may lower afer a migration.
>
> Signed-off-by: Damien Hedde <address@hidden>
> ---
> hw/core/Makefile.objs | 1 +
> hw/core/qdev-vmstate.c | 45 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 46 insertions(+)
> create mode 100644 hw/core/qdev-vmstate.c
>
> diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs
> index d9234aa98a..49e9be0228 100644
> --- a/hw/core/Makefile.objs
> +++ b/hw/core/Makefile.objs
> @@ -4,6 +4,7 @@ common-obj-y += bus.o reset.o
> common-obj-y += resettable.o
> common-obj-$(CONFIG_SOFTMMU) += qdev-fw.o
> common-obj-$(CONFIG_SOFTMMU) += fw-path-provider.o
> +common-obj-$(CONFIG_SOFTMMU) += qdev-vmstate.o
> # irq.o needed for qdev GPIO handling:
> common-obj-y += irq.o
> common-obj-y += hotplug.o
> diff --git a/hw/core/qdev-vmstate.c b/hw/core/qdev-vmstate.c
> new file mode 100644
> index 0000000000..07b010811f
> --- /dev/null
> +++ b/hw/core/qdev-vmstate.c
> @@ -0,0 +1,45 @@
> +/*
> + * Device vmstate
> + *
> + * Copyright (c) 2019 GreenSocs
> + *
> + * Authors:
> + * Damien Hedde
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "hw/qdev.h"
> +#include "migration/vmstate.h"
> +
> +static bool device_vmstate_reset_needed(void *opaque)
> +{
> + DeviceState *dev = (DeviceState *) opaque;
> + return dev->resetting != 0;
> +}
> +
> +static int device_vmstate_reset_post_load(void *opaque, int version_id)
> +{
> + DeviceState *dev = (DeviceState *) opaque;
> + BusState *bus;
> + QLIST_FOREACH(bus, &dev->child_bus, sibling) {
> + bus->resetting = dev->resetting;
Having redundant copies of the resetting bit in the bridge and every
bus instance seems kind of bogus.
> + bus->reset_is_cold = dev->reset_is_cold;
> + }
> + return 0;
> +}
> +
> +const struct VMStateDescription device_vmstate_reset = {
> + .name = "device_reset",
> + .version_id = 0,
> + .minimum_version_id = 0,
> + .needed = device_vmstate_reset_needed,
> + .post_load = device_vmstate_reset_post_load,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT32(resetting, DeviceState),
> + VMSTATE_BOOL(reset_is_cold, DeviceState),
> + VMSTATE_END_OF_LIST()
> + },
> +};
--
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
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH v3 00/33] Multi-phase reset mechanism, Damien Hedde, 2019/07/29
- [Qemu-devel] [PATCH v3 06/33] add the vmstate description for device reset state, Damien Hedde, 2019/07/29
- Re: [Qemu-devel] [PATCH v3 06/33] add the vmstate description for device reset state,
David Gibson <=
- [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Damien Hedde, 2019/07/29
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Cornelia Huck, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Peter Maydell, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Cornelia Huck, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Peter Maydell, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Damien Hedde, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Cornelia Huck, 2019/07/30
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, David Gibson, 2019/07/31
- Re: [Qemu-devel] [PATCH v3 01/33] Create Resettable QOM interface, Christophe de Dinechin, 2019/07/31