[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev() |
Date: |
Wed, 30 May 2012 08:14:03 +0300 |
On Wed, May 30, 2012 at 10:13:07AM +0800, Anthony Liguori wrote:
> On 05/20/2012 05:57 PM, Amos Kong wrote:
> >Start VM with 8 multiple-function block devs, hot-removing
> >those block devs by 'device_del ...' would cause qemu abort.
> >
> >| (qemu) device_del virti0-0-0
> >| (qemu) **
> >|ERROR:qom/object.c:389:object_delete: assertion failed: (obj->ref == 0)
> >
> >It's a regression introduced by commit 57c9fafe
> >
> >The whole PCI slot should be removed once. Currently only one func
> >is cleaned in pci_unplug_device(), if you try to remove a single
> >func by monitor cmd.
> >
> >free_qdev() are called for all functions in slot,
> >but unparent_delete() is only called for one
> >function.
> >
> >---
> >aliguori has a better resolution, better to do it in 1.2
> >
> >v2: fix warning: too many arguments for format
> >v3: move object_unparent() to acpi_piix_eject_slot()
> >
> >Signed-off-by: Amos Kong<address@hidden>
>
> Applied. Thanks.
>
> Regards,
>
> Anthony Liguori
>
> >---
> > hw/acpi_piix4.c | 1 +
> > hw/pci.c | 1 -
> > 2 files changed, 1 insertions(+), 1 deletions(-)
> >
> >diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
> >index 585da4e..0345490 100644
> >--- a/hw/acpi_piix4.c
> >+++ b/hw/acpi_piix4.c
> >@@ -299,6 +299,7 @@ static void acpi_piix_eject_slot(PIIX4PMState *s,
> >unsigned slots)
> > if (pc->no_hotplug) {
> > slot_free = false;
> > } else {
> >+ object_unparent(OBJECT(dev));
> > qdev_free(qdev);
> > }
> > }
Does shpc need this too now?
> >diff --git a/hw/pci.c b/hw/pci.c
> >index b706e69..c1ebdde 100644
> >--- a/hw/pci.c
> >+++ b/hw/pci.c
> >@@ -1527,7 +1527,6 @@ static int pci_unplug_device(DeviceState *qdev)
> > qerror_report(QERR_DEVICE_NO_HOTPLUG,
> > object_get_typename(OBJECT(dev)));
> > return -1;
> > }
> >- object_unparent(OBJECT(dev));
> > return dev->bus->hotplug(dev->bus->hotplug_qdev, dev,
> > PCI_HOTPLUG_DISABLED);
> > }
- [Qemu-devel] [PATCH] qom: fix refcounting in object_property_del_child(), Amos Kong, 2012/05/10
- Re: [Qemu-devel] [PATCH] qom: fix refcounting in object_property_del_child(), Paolo Bonzini, 2012/05/11
- Re: [Qemu-devel] [PATCH] qom: fix refcounting in object_property_del_child(), Amos Kong, 2012/05/11
- [Qemu-devel] [PATCH] pci: unplug all devs of same slot once, Amos Kong, 2012/05/11
- [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev(), Amos Kong, 2012/05/20
- Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev(), Michael S. Tsirkin, 2012/05/20
- Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev(), Anthony Liguori, 2012/05/29
- Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev(),
Michael S. Tsirkin <=
- Re: [Qemu-devel] [PATCH v3] pci: call object_unparent() before free_qdev(), Michael S. Tsirkin, 2012/05/30