Message ID | 20100615034727.GT23473@valinux.co.jp |
---|---|
State | New |
Headers | show |
On 06/15/10 05:47, Isaku Yamahata wrote: > Make pci hotplug callback return value to caller. > There is no reason to discard return value. Acked-by: Gerd Hoffmann <kraxel@redhat.com> cheers, Gerd
Ping. Michael, is there any issues to address? On Tue, Jun 15, 2010 at 12:47:27PM +0900, Isaku Yamahata wrote: > Make pci hotplug callback return value to caller. > There is no reason to discard return value. > > Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> > --- > hw/pci.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/hw/pci.c b/hw/pci.c > index 7787005..3777c1c 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -1623,8 +1623,12 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) > pci_dev->romfile = qemu_strdup(info->romfile); > pci_add_option_rom(pci_dev); > > - if (qdev->hotplugged) > - bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > + if (qdev->hotplugged) { > + rc = bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > + if (rc != 0) { > + return rc; > + } > + } > return 0; > } > > @@ -1632,8 +1636,7 @@ static int pci_unplug_device(DeviceState *qdev) > { > PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev); > > - dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > - return 0; > + return dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > } > > void pci_qdev_register(PCIDeviceInfo *info) > -- > 1.6.6.1 > > >
On Tue, Jun 15, 2010 at 12:47:27PM +0900, Isaku Yamahata wrote: > Make pci hotplug callback return value to caller. > There is no reason to discard return value. > > Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> > --- > hw/pci.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/hw/pci.c b/hw/pci.c > index 7787005..3777c1c 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -1623,8 +1623,12 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) > pci_dev->romfile = qemu_strdup(info->romfile); > pci_add_option_rom(pci_dev); > > - if (qdev->hotplugged) > - bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > + if (qdev->hotplugged) { > + rc = bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > + if (rc != 0) { > + return rc; I think we need to unregister the device (and remove option rom?), otherwise there's a resource leak here. Can it really fail? If not we can just make it void. > + } > + } > return 0; > } > > @@ -1632,8 +1636,7 @@ static int pci_unplug_device(DeviceState *qdev) > { > PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev); > > - dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > - return 0; > + return dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > } > > void pci_qdev_register(PCIDeviceInfo *info) > -- > 1.6.6.1 >
On Mon, Jun 21, 2010 at 02:40:06PM +0300, Michael S. Tsirkin wrote: > On Tue, Jun 15, 2010 at 12:47:27PM +0900, Isaku Yamahata wrote: > > Make pci hotplug callback return value to caller. > > There is no reason to discard return value. > > > > Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> > > --- > > hw/pci.c | 11 +++++++---- > > 1 files changed, 7 insertions(+), 4 deletions(-) > > > > diff --git a/hw/pci.c b/hw/pci.c > > index 7787005..3777c1c 100644 > > --- a/hw/pci.c > > +++ b/hw/pci.c > > @@ -1623,8 +1623,12 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) > > pci_dev->romfile = qemu_strdup(info->romfile); > > pci_add_option_rom(pci_dev); > > > > - if (qdev->hotplugged) > > - bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > > + if (qdev->hotplugged) { > > + rc = bus->hotplug(bus->hotplug_qdev, pci_dev, 1); > > + if (rc != 0) { > > + return rc; > > I think we need to unregister the device (and remove option rom?), > otherwise there's a resource leak here. Okay. I'll look into it. > Can it really fail? If not we can just make it void. The current pci hot plug(acpi_piix4.c) always successes. But in the pcie native hot plug case it can fail because a slot can have a electromechanical lock. If the slot is locked, a card can't be inserted/removed. There are also other pci hot plug controllers which have a lock. Hot plug can fail with such a controller. > > > > + } > > + } > > return 0; > > } > > > > @@ -1632,8 +1636,7 @@ static int pci_unplug_device(DeviceState *qdev) > > { > > PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev); > > > > - dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > > - return 0; > > + return dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); > > } > > > > void pci_qdev_register(PCIDeviceInfo *info) > > -- > > 1.6.6.1 > > >
diff --git a/hw/pci.c b/hw/pci.c index 7787005..3777c1c 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1623,8 +1623,12 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) pci_dev->romfile = qemu_strdup(info->romfile); pci_add_option_rom(pci_dev); - if (qdev->hotplugged) - bus->hotplug(bus->hotplug_qdev, pci_dev, 1); + if (qdev->hotplugged) { + rc = bus->hotplug(bus->hotplug_qdev, pci_dev, 1); + if (rc != 0) { + return rc; + } + } return 0; } @@ -1632,8 +1636,7 @@ static int pci_unplug_device(DeviceState *qdev) { PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev); - dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); - return 0; + return dev->bus->hotplug(dev->bus->hotplug_qdev, dev, 0); } void pci_qdev_register(PCIDeviceInfo *info)
Make pci hotplug callback return value to caller. There is no reason to discard return value. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> --- hw/pci.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)