* [PATCH 0/2] failover: trivial cleanup and fix @ 2021-02-06 12:39 Laurent Vivier 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela The first patch removes a duplicate assignment to allow_unplug_during_migrati= on, and simplify the code. The second patch fixes a dangling object in failover_add_primary() that preve= nts to cleanup the internal structure after the object has been unplugged. Laurent Vivier (2): pci: cleanup failover sanity check virtio-net: add missing object_unref() hw/net/virtio-net.c | 2 ++ hw/pci/pci.c | 6 ++---- 2 files changed, 4 insertions(+), 4 deletions(-) --=20 2.29.2 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] pci: cleanup failover sanity check 2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier @ 2021-02-06 12:39 ` Laurent Vivier 2021-02-06 14:32 ` Laurent Vivier ` (2 more replies) 2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier 2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier 2 siblings, 3 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela Commit a1190ab628 has added a "allow_unplug_during_migration = true" at the end of the main "if" block, so it is not needed to set it anymore in the previous checking. Remove it, to have only sub-ifs that check for needed conditions and exit if one fails. Fixes: 4f5b6a05a4e7 ("pci: add option for net failover") Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices") Cc: jfreimann@redhat.com Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com> --- hw/pci/pci.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 512e9042ffae..ecb7aa31fabd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp) pci_qdev_unrealize(DEVICE(pci_dev)); return; } - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) - && (PCI_FUNC(pci_dev->devfn) == 0)) { - qdev->allow_unplug_during_migration = true; - } else { + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) + || (PCI_FUNC(pci_dev->devfn) != 0)) { error_setg(errp, "failover: primary device must be in its own " "PCI slot"); pci_qdev_unrealize(DEVICE(pci_dev)); -- 2.29.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier @ 2021-02-06 14:32 ` Laurent Vivier 2021-02-08 8:42 ` Jens Freimann 2021-02-09 16:49 ` Laurent Vivier 2 siblings, 0 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-06 14:32 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela On 06/02/2021 13:39, Laurent Vivier wrote: > Commit a1190ab628 has added a "allow_unplug_during_migration = true" at > the end of the main "if" block, so it is not needed to set it anymore > in the previous checking. > > Remove it, to have only sub-ifs that check for needed conditions and exit > if one fails. > > Fixes: 4f5b6a05a4e7 ("pci: add option for net failover") > Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices") > Cc: jfreimann@redhat.com > Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com> Sorry, git misconfiguration, read: Signed-off-by: Laurent Vivier <lvivier@redhat.com> > --- > hw/pci/pci.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 512e9042ffae..ecb7aa31fabd 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp) > pci_qdev_unrealize(DEVICE(pci_dev)); > return; > } > - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) > - && (PCI_FUNC(pci_dev->devfn) == 0)) { > - qdev->allow_unplug_during_migration = true; > - } else { > + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) > + || (PCI_FUNC(pci_dev->devfn) != 0)) { > error_setg(errp, "failover: primary device must be in its own " > "PCI slot"); > pci_qdev_unrealize(DEVICE(pci_dev)); > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier 2021-02-06 14:32 ` Laurent Vivier @ 2021-02-08 8:42 ` Jens Freimann 2021-02-09 16:49 ` Laurent Vivier 2 siblings, 0 replies; 9+ messages in thread From: Jens Freimann @ 2021-02-08 8:42 UTC (permalink / raw) To: Laurent Vivier; +Cc: qemu-trivial, Laurent Vivier, qemu-devel, quintela On Sat, Feb 06, 2021 at 01:39:54PM +0100, Laurent Vivier wrote: >Commit a1190ab628 has added a "allow_unplug_during_migration = true" at >the end of the main "if" block, so it is not needed to set it anymore >in the previous checking. > >Remove it, to have only sub-ifs that check for needed conditions and exit >if one fails. > >Fixes: 4f5b6a05a4e7 ("pci: add option for net failover") >Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices") >Cc: jfreimann@redhat.com >Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com> >--- > hw/pci/pci.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > Reviewed-by: Jens Freimann <jfreimann@redhat.com> Thank you Laurent! regards, Jens ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier 2021-02-06 14:32 ` Laurent Vivier 2021-02-08 8:42 ` Jens Freimann @ 2021-02-09 16:49 ` Laurent Vivier 2 siblings, 0 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-09 16:49 UTC (permalink / raw) To: qemu-devel Cc: qemu-trivial, jfreimann, Michael S. Tsirkin, Laurent Vivier, quintela CC: Michael On 06/02/2021 13:39, Laurent Vivier wrote: > Commit a1190ab628 has added a "allow_unplug_during_migration = true" at > the end of the main "if" block, so it is not needed to set it anymore > in the previous checking. > > Remove it, to have only sub-ifs that check for needed conditions and exit > if one fails. > > Fixes: 4f5b6a05a4e7 ("pci: add option for net failover") > Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices") > Cc: jfreimann@redhat.com > Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com> > --- > hw/pci/pci.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 512e9042ffae..ecb7aa31fabd 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp) > pci_qdev_unrealize(DEVICE(pci_dev)); > return; > } > - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) > - && (PCI_FUNC(pci_dev->devfn) == 0)) { > - qdev->allow_unplug_during_migration = true; > - } else { > + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) > + || (PCI_FUNC(pci_dev->devfn) != 0)) { > error_setg(errp, "failover: primary device must be in its own " > "PCI slot"); > pci_qdev_unrealize(DEVICE(pci_dev)); > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] virtio-net: add missing object_unref() 2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier @ 2021-02-06 12:39 ` Laurent Vivier 2021-02-08 8:45 ` Jens Freimann 2021-02-09 16:50 ` Laurent Vivier 2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier 2 siblings, 2 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela failover_add_primary() calls qdev_device_add() and doesn't unref the device. Because of that, when the device is unplugged a reference is remaining and prevents the cleanup of the object. This prevents to be able to plugin back the failover primary device, with errors like: (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 (qemu) device_del hostdev0 We can check with "info qtree" and "info pci" that the device has been removed, and then: (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0 Error: vfio 0000:41:00.0: device is already attached (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 qemu-kvm: Duplicate ID 'hostdev0' for device Fixes: 21e8709b29cd ("failover: Remove primary_dev member") Cc: quintela@redhat.com Signed-off-by: Laurent Vivier <lvivier@redhat.com> --- hw/net/virtio-net.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 5150f295e8c5..1c5af08dc556 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -862,6 +862,8 @@ static void failover_add_primary(VirtIONet *n, Error **errp) dev = qdev_device_add(opts, &err); if (err) { qemu_opts_del(opts); + } else { + object_unref(OBJECT(dev)); } } else { error_setg(errp, "Primary device not found"); -- 2.29.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] virtio-net: add missing object_unref() 2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier @ 2021-02-08 8:45 ` Jens Freimann 2021-02-09 16:50 ` Laurent Vivier 1 sibling, 0 replies; 9+ messages in thread From: Jens Freimann @ 2021-02-08 8:45 UTC (permalink / raw) To: Laurent Vivier; +Cc: qemu-trivial, Laurent Vivier, qemu-devel, quintela On Sat, Feb 06, 2021 at 01:39:55PM +0100, Laurent Vivier wrote: >failover_add_primary() calls qdev_device_add() and doesn't unref >the device. Because of that, when the device is unplugged a reference >is remaining and prevents the cleanup of the object. > >This prevents to be able to plugin back the failover primary device, >with errors like: > > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 > (qemu) device_del hostdev0 > >We can check with "info qtree" and "info pci" that the device has been removed, and then: > > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0 > Error: vfio 0000:41:00.0: device is already attached > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 > qemu-kvm: Duplicate ID 'hostdev0' for device > >Fixes: 21e8709b29cd ("failover: Remove primary_dev member") >Cc: quintela@redhat.com >Signed-off-by: Laurent Vivier <lvivier@redhat.com> >--- > hw/net/virtio-net.c | 2 ++ > 1 file changed, 2 insertions(+) > Reviewed-by: Jens Freimann <jfreimann@redhat.com> Thank you Laurent! regards, Jens ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] virtio-net: add missing object_unref() 2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier 2021-02-08 8:45 ` Jens Freimann @ 2021-02-09 16:50 ` Laurent Vivier 1 sibling, 0 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-09 16:50 UTC (permalink / raw) To: qemu-devel Cc: qemu-trivial, jfreimann, Michael S. Tsirkin, Laurent Vivier, quintela CC: Michael On 06/02/2021 13:39, Laurent Vivier wrote: > failover_add_primary() calls qdev_device_add() and doesn't unref > the device. Because of that, when the device is unplugged a reference > is remaining and prevents the cleanup of the object. > > This prevents to be able to plugin back the failover primary device, > with errors like: > > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 > (qemu) device_del hostdev0 > > We can check with "info qtree" and "info pci" that the device has been removed, and then: > > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0 > Error: vfio 0000:41:00.0: device is already attached > (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0 > qemu-kvm: Duplicate ID 'hostdev0' for device > > Fixes: 21e8709b29cd ("failover: Remove primary_dev member") > Cc: quintela@redhat.com > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > --- > hw/net/virtio-net.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index 5150f295e8c5..1c5af08dc556 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -862,6 +862,8 @@ static void failover_add_primary(VirtIONet *n, Error **errp) > dev = qdev_device_add(opts, &err); > if (err) { > qemu_opts_del(opts); > + } else { > + object_unref(OBJECT(dev)); > } > } else { > error_setg(errp, "Primary device not found"); > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] failover: trivial cleanup and fix 2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier 2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier @ 2021-02-10 13:40 ` Laurent Vivier 2 siblings, 0 replies; 9+ messages in thread From: Laurent Vivier @ 2021-02-10 13:40 UTC (permalink / raw) To: qemu-devel, Michael S. Tsirkin Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela On 06/02/2021 13:39, Laurent Vivier wrote: > The first patch removes a duplicate assignment to allow_unplug_during_migrati= > on, > and simplify the code. > > The second patch fixes a dangling object in failover_add_primary() that preve= > nts > to cleanup the internal structure after the object has been unplugged. > > Laurent Vivier (2): > pci: cleanup failover sanity check > virtio-net: add missing object_unref() I can collect these two patches via the trivial branch if there will be no PR for virtio or PCI soon. Michael? Thanks, Laurent ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-02-10 13:41 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier 2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier 2021-02-06 14:32 ` Laurent Vivier 2021-02-08 8:42 ` Jens Freimann 2021-02-09 16:49 ` Laurent Vivier 2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier 2021-02-08 8:45 ` Jens Freimann 2021-02-09 16:50 ` Laurent Vivier 2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).