Il 24/09/2014 13:48, Igor Mammedov ha scritto: > Although virtio-pci-bus is internal object of composite > virtio-pci device and it doesn't participate in > -device/device_add hotplug flow, it's required by > bus_add_child() that bus must be hotpluggable to > be able to add child at runtime. > Set parent of virtio-pci-bus as NOP hotplug controller, > so that bus_add_child() would allow to add child > device during hotplug time when BusState.allow_hotplug > is dropped. > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > --- > hw/virtio/virtio-pci.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index f560814..0486b25 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1070,6 +1070,10 @@ static const TypeInfo virtio_pci_info = { > .class_init = virtio_pci_class_init, > .class_size = sizeof(VirtioPCIClass), > .abstract = true, > + .interfaces = (InterfaceInfo[]) { > + { TYPE_HOTPLUG_HANDLER }, > + { } > + } > }; > > /* virtio-blk-pci */ > @@ -1543,13 +1547,11 @@ static void virtio_pci_bus_new(VirtioBusState *bus, > size_t bus_size, > VirtIOPCIProxy *dev) > { > DeviceState *qdev = DEVICE(dev); > - BusState *qbus; > char virtio_bus_name[] = "virtio-bus"; > > qbus_create_inplace(bus, bus_size, TYPE_VIRTIO_PCI_BUS, qdev, > virtio_bus_name); > - qbus = BUS(bus); > - qbus->allow_hotplug = 1; > + qbus_set_hotplug_handler(BUS(bus), qdev, &error_abort); > } > > static void virtio_pci_bus_class_init(ObjectClass *klass, void *data) >
So this is the opposite of icc-bus; here you need to call the simple hot-unplug callback in the hotplug handler, right? Paolo