diff mbox

Migration: Add i82801b11 migration data

Message ID 1459785281-6686-1-git-send-email-dgilbert@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dr. David Alan Gilbert April 4, 2016, 3:54 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

The i82801b11 bridge didn't have a vmsd and thus didn't send
any migration data, including that of its parent PCIBridge object.
The symptom being if the guest used any devices behind the bridge
the guest crashed (mostly with various interrupt related issues).

Note: This will cause migration from old qemus that used this device to
explicitly fail during migration as opposed to the guest crashing.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Suggested-by: Marcel Apfelbaum <marcel@redhat.com>
---
 hw/pci-bridge/i82801b11.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Marcel Apfelbaum April 4, 2016, 4:14 p.m. UTC | #1
On 04/04/2016 06:54 PM, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> The i82801b11 bridge didn't have a vmsd and thus didn't send
> any migration data, including that of its parent PCIBridge object.
> The symptom being if the guest used any devices behind the bridge
> the guest crashed (mostly with various interrupt related issues).
>
> Note: This will cause migration from old qemus that used this device to
> explicitly fail during migration as opposed to the guest crashing.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Suggested-by: Marcel Apfelbaum <marcel@redhat.com>
> ---
>   hw/pci-bridge/i82801b11.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/hw/pci-bridge/i82801b11.c b/hw/pci-bridge/i82801b11.c
> index 5c40708..2404e7e 100644
> --- a/hw/pci-bridge/i82801b11.c
> +++ b/hw/pci-bridge/i82801b11.c
> @@ -78,6 +78,14 @@ err_bridge:
>       return rc;
>   }
>
> +static const VMStateDescription i82801b11_bridge_dev_vmstate = {
> +    .name = "i82801b11_bridge",
> +    .fields = (VMStateField[]) {
> +        VMSTATE_PCI_DEVICE(parent_obj, PCIBridge),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
>   static void i82801b11_bridge_class_init(ObjectClass *klass, void *data)
>   {
>       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> @@ -89,6 +97,7 @@ static void i82801b11_bridge_class_init(ObjectClass *klass, void *data)
>       k->revision = ICH9_D2P_A2_REVISION;
>       k->init = i82801b11_bridge_initfn;
>       k->config_write = pci_bridge_write_config;
> +    dc->vmsd = &i82801b11_bridge_dev_vmstate;
>       set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
>   }
>
>

If this patch was enough we got lucky :)
Is not too late to make it to 2.6, right?

Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Thanks,
Marcel
Peter Maydell April 4, 2016, 4:37 p.m. UTC | #2
On 4 April 2016 at 17:14, Marcel Apfelbaum <marcel@redhat.com> wrote:
> On 04/04/2016 06:54 PM, Dr. David Alan Gilbert (git) wrote:
>>
>> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>>
>> The i82801b11 bridge didn't have a vmsd and thus didn't send
>> any migration data, including that of its parent PCIBridge object.
>> The symptom being if the guest used any devices behind the bridge
>> the guest crashed (mostly with various interrupt related issues).
>>
>> Note: This will cause migration from old qemus that used this device to
>> explicitly fail during migration as opposed to the guest crashing.

> If this patch was enough we got lucky :)
> Is not too late to make it to 2.6, right?

You should add a line to
http://wiki.qemu.org/Planning/2.6#Known_issues
for things you think should be fixed for 2.6...

thanks
-- PMM
Dr. David Alan Gilbert April 4, 2016, 4:40 p.m. UTC | #3
* Peter Maydell (peter.maydell@linaro.org) wrote:
> On 4 April 2016 at 17:14, Marcel Apfelbaum <marcel@redhat.com> wrote:
> > On 04/04/2016 06:54 PM, Dr. David Alan Gilbert (git) wrote:
> >>
> >> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >>
> >> The i82801b11 bridge didn't have a vmsd and thus didn't send
> >> any migration data, including that of its parent PCIBridge object.
> >> The symptom being if the guest used any devices behind the bridge
> >> the guest crashed (mostly with various interrupt related issues).
> >>
> >> Note: This will cause migration from old qemus that used this device to
> >> explicitly fail during migration as opposed to the guest crashing.
> 
> > If this patch was enough we got lucky :)
> > Is not too late to make it to 2.6, right?
> 
> You should add a line to
> http://wiki.qemu.org/Planning/2.6#Known_issues
> for things you think should be fixed for 2.6...

It would be nice for it to be in 2.6, however it's not actually
a 2.6 regression, it's been broken forever, but the difference
is that libvirt started using that bridge for q35 recently.

Dave

> thanks
> -- PMM
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Paolo Bonzini April 4, 2016, 4:43 p.m. UTC | #4
On 04/04/2016 18:40, Dr. David Alan Gilbert wrote:
> It would be nice for it to be in 2.6, however it's not actually
> a 2.6 regression, it's been broken forever, but the difference
> is that libvirt started using that bridge for q35 recently.

I think we should fix it, hard freeze is not limited to regressions.

Paolo
Marcel Apfelbaum April 4, 2016, 4:45 p.m. UTC | #5
On 04/04/2016 07:37 PM, Peter Maydell wrote:
> On 4 April 2016 at 17:14, Marcel Apfelbaum <marcel@redhat.com> wrote:
>> On 04/04/2016 06:54 PM, Dr. David Alan Gilbert (git) wrote:
>>>
>>> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>>>
>>> The i82801b11 bridge didn't have a vmsd and thus didn't send
>>> any migration data, including that of its parent PCIBridge object.
>>> The symptom being if the guest used any devices behind the bridge
>>> the guest crashed (mostly with various interrupt related issues).
>>>
>>> Note: This will cause migration from old qemus that used this device to
>>> explicitly fail during migration as opposed to the guest crashing.
>
>> If this patch was enough we got lucky :)
>> Is not too late to make it to 2.6, right?
>
> You should add a line to
> http://wiki.qemu.org/Planning/2.6#Known_issues
> for things you think should be fixed for 2.6...
>

Done.

Thanks,
Marcel

> thanks
> -- PMM
>
diff mbox

Patch

diff --git a/hw/pci-bridge/i82801b11.c b/hw/pci-bridge/i82801b11.c
index 5c40708..2404e7e 100644
--- a/hw/pci-bridge/i82801b11.c
+++ b/hw/pci-bridge/i82801b11.c
@@ -78,6 +78,14 @@  err_bridge:
     return rc;
 }
 
+static const VMStateDescription i82801b11_bridge_dev_vmstate = {
+    .name = "i82801b11_bridge",
+    .fields = (VMStateField[]) {
+        VMSTATE_PCI_DEVICE(parent_obj, PCIBridge),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static void i82801b11_bridge_class_init(ObjectClass *klass, void *data)
 {
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
@@ -89,6 +97,7 @@  static void i82801b11_bridge_class_init(ObjectClass *klass, void *data)
     k->revision = ICH9_D2P_A2_REVISION;
     k->init = i82801b11_bridge_initfn;
     k->config_write = pci_bridge_write_config;
+    dc->vmsd = &i82801b11_bridge_dev_vmstate;
     set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
 }