Patchwork acpi_piix4: save gpe and pci hotplug slot status

login
register
mail settings
Submitter Alex Williamson
Date June 2, 2010, 4:58 p.m.
Message ID <20100602165806.9089.28740.stgit@localhost.localdomain>
Download mbox | patch
Permalink /patch/54403/
State New
Headers show

Comments

Alex Williamson - June 2, 2010, 4:58 p.m.
PCI hotplug currently doesn't work after a migration because
we don't migrate the enable bits of the GPE state.  Pull hotplug
structs into vmstate.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---

 hw/acpi_piix4.c |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)
Alex Williamson - June 9, 2010, 8:12 p.m.
nudge.  Any comments here?

On Wed, Jun 2, 2010 at 10:58 AM, Alex Williamson
<alex.williamson@redhat.com> wrote:
>
> PCI hotplug currently doesn't work after a migration because
> we don't migrate the enable bits of the GPE state.  Pull hotplug
> structs into vmstate.
>
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
>
>  hw/acpi_piix4.c |   29 ++++++++++++++++++++++++++++-
>  1 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
> index 0fce958..091cdcd 100644
> --- a/hw/acpi_piix4.c
> +++ b/hw/acpi_piix4.c
> @@ -282,9 +282,33 @@ static int vmstate_acpi_post_load(void *opaque, int version_id)
>     return 0;
>  }
>
> +static const VMStateDescription vmstate_gpe = {
> +    .name = "gpe",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .minimum_version_id_old = 1,
> +    .fields      = (VMStateField []) {
> +        VMSTATE_UINT16(sts, struct gpe_regs),
> +        VMSTATE_UINT16(en, struct gpe_regs),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
> +static const VMStateDescription vmstate_pci_status = {
> +    .name = "pci_status",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .minimum_version_id_old = 1,
> +    .fields      = (VMStateField []) {
> +        VMSTATE_UINT32(up, struct pci_status),
> +        VMSTATE_UINT32(down, struct pci_status),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
>  static const VMStateDescription vmstate_acpi = {
>     .name = "piix4_pm",
> -    .version_id = 1,
> +    .version_id = 2,
>     .minimum_version_id = 1,
>     .minimum_version_id_old = 1,
>     .post_load = vmstate_acpi_post_load,
> @@ -296,6 +320,9 @@ static const VMStateDescription vmstate_acpi = {
>         VMSTATE_STRUCT(apm, PIIX4PMState, 0, vmstate_apm, APMState),
>         VMSTATE_TIMER(tmr_timer, PIIX4PMState),
>         VMSTATE_INT64(tmr_overflow_time, PIIX4PMState),
> +        VMSTATE_STRUCT(gpe, PIIX4PMState, 2, vmstate_gpe, struct gpe_regs),
> +        VMSTATE_STRUCT(pci0_status, PIIX4PMState, 2, vmstate_pci_status,
> +                       struct pci_status),
>         VMSTATE_END_OF_LIST()
>     }
>  };
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
index 0fce958..091cdcd 100644
--- a/hw/acpi_piix4.c
+++ b/hw/acpi_piix4.c
@@ -282,9 +282,33 @@  static int vmstate_acpi_post_load(void *opaque, int version_id)
     return 0;
 }
 
+static const VMStateDescription vmstate_gpe = {
+    .name = "gpe",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .minimum_version_id_old = 1,
+    .fields      = (VMStateField []) {
+        VMSTATE_UINT16(sts, struct gpe_regs),
+        VMSTATE_UINT16(en, struct gpe_regs),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static const VMStateDescription vmstate_pci_status = {
+    .name = "pci_status",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .minimum_version_id_old = 1,
+    .fields      = (VMStateField []) {
+        VMSTATE_UINT32(up, struct pci_status),
+        VMSTATE_UINT32(down, struct pci_status),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static const VMStateDescription vmstate_acpi = {
     .name = "piix4_pm",
-    .version_id = 1,
+    .version_id = 2,
     .minimum_version_id = 1,
     .minimum_version_id_old = 1,
     .post_load = vmstate_acpi_post_load,
@@ -296,6 +320,9 @@  static const VMStateDescription vmstate_acpi = {
         VMSTATE_STRUCT(apm, PIIX4PMState, 0, vmstate_apm, APMState),
         VMSTATE_TIMER(tmr_timer, PIIX4PMState),
         VMSTATE_INT64(tmr_overflow_time, PIIX4PMState),
+        VMSTATE_STRUCT(gpe, PIIX4PMState, 2, vmstate_gpe, struct gpe_regs),
+        VMSTATE_STRUCT(pci0_status, PIIX4PMState, 2, vmstate_pci_status,
+                       struct pci_status),
         VMSTATE_END_OF_LIST()
     }
 };