mirror of https://github.com/proxmox/mirror_qemu
virtio-serial: Convert to hotplug-handler API
Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>master
parent
7f17a91715
commit
0ddef15b04
|
@ -904,6 +904,12 @@ static void virtser_port_device_realize(DeviceState *dev, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
port->elem.out_num = 0;
|
port->elem.out_num = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void virtser_port_device_plug(HotplugHandler *hotplug_dev,
|
||||||
|
DeviceState *dev, Error **errp)
|
||||||
|
{
|
||||||
|
VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
|
||||||
|
|
||||||
QTAILQ_INSERT_TAIL(&port->vser->ports, port, next);
|
QTAILQ_INSERT_TAIL(&port->vser->ports, port, next);
|
||||||
port->ivq = port->vser->ivqs[port->id];
|
port->ivq = port->vser->ivqs[port->id];
|
||||||
|
@ -912,7 +918,7 @@ static void virtser_port_device_realize(DeviceState *dev, Error **errp)
|
||||||
add_port(port->vser, port->id);
|
add_port(port->vser, port->id);
|
||||||
|
|
||||||
/* Send an update to the guest about this new port added */
|
/* Send an update to the guest about this new port added */
|
||||||
virtio_notify_config(vdev);
|
virtio_notify_config(VIRTIO_DEVICE(hotplug_dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virtser_port_device_unrealize(DeviceState *dev, Error **errp)
|
static void virtser_port_device_unrealize(DeviceState *dev, Error **errp)
|
||||||
|
@ -935,7 +941,6 @@ static void virtio_serial_device_realize(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
||||||
VirtIOSerial *vser = VIRTIO_SERIAL(dev);
|
VirtIOSerial *vser = VIRTIO_SERIAL(dev);
|
||||||
BusState *bus;
|
|
||||||
uint32_t i, max_supported_ports;
|
uint32_t i, max_supported_ports;
|
||||||
|
|
||||||
if (!vser->serial.max_virtserial_ports) {
|
if (!vser->serial.max_virtserial_ports) {
|
||||||
|
@ -957,8 +962,7 @@ static void virtio_serial_device_realize(DeviceState *dev, Error **errp)
|
||||||
/* Spawn a new virtio-serial bus on which the ports will ride as devices */
|
/* Spawn a new virtio-serial bus on which the ports will ride as devices */
|
||||||
qbus_create_inplace(&vser->bus, sizeof(vser->bus), TYPE_VIRTIO_SERIAL_BUS,
|
qbus_create_inplace(&vser->bus, sizeof(vser->bus), TYPE_VIRTIO_SERIAL_BUS,
|
||||||
dev, vdev->bus_name);
|
dev, vdev->bus_name);
|
||||||
bus = BUS(&vser->bus);
|
qbus_set_hotplug_handler(BUS(&vser->bus), DEVICE(vser), errp);
|
||||||
bus->allow_hotplug = 1;
|
|
||||||
vser->bus.vser = vser;
|
vser->bus.vser = vser;
|
||||||
QTAILQ_INIT(&vser->ports);
|
QTAILQ_INIT(&vser->ports);
|
||||||
|
|
||||||
|
@ -1021,7 +1025,6 @@ static void virtio_serial_port_class_init(ObjectClass *klass, void *data)
|
||||||
k->bus_type = TYPE_VIRTIO_SERIAL_BUS;
|
k->bus_type = TYPE_VIRTIO_SERIAL_BUS;
|
||||||
k->realize = virtser_port_device_realize;
|
k->realize = virtser_port_device_realize;
|
||||||
k->unrealize = virtser_port_device_unrealize;
|
k->unrealize = virtser_port_device_unrealize;
|
||||||
k->unplug = qdev_simple_unplug_cb;
|
|
||||||
k->props = virtser_props;
|
k->props = virtser_props;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1064,6 +1067,7 @@ static void virtio_serial_class_init(ObjectClass *klass, void *data)
|
||||||
{
|
{
|
||||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
||||||
|
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
|
||||||
|
|
||||||
QLIST_INIT(&vserdevices.devices);
|
QLIST_INIT(&vserdevices.devices);
|
||||||
|
|
||||||
|
@ -1077,6 +1081,8 @@ static void virtio_serial_class_init(ObjectClass *klass, void *data)
|
||||||
vdc->reset = vser_reset;
|
vdc->reset = vser_reset;
|
||||||
vdc->save = virtio_serial_save_device;
|
vdc->save = virtio_serial_save_device;
|
||||||
vdc->load = virtio_serial_load_device;
|
vdc->load = virtio_serial_load_device;
|
||||||
|
hc->plug = virtser_port_device_plug;
|
||||||
|
hc->unplug = qdev_simple_device_unplug_cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo virtio_device_info = {
|
static const TypeInfo virtio_device_info = {
|
||||||
|
@ -1084,6 +1090,10 @@ static const TypeInfo virtio_device_info = {
|
||||||
.parent = TYPE_VIRTIO_DEVICE,
|
.parent = TYPE_VIRTIO_DEVICE,
|
||||||
.instance_size = sizeof(VirtIOSerial),
|
.instance_size = sizeof(VirtIOSerial),
|
||||||
.class_init = virtio_serial_class_init,
|
.class_init = virtio_serial_class_init,
|
||||||
|
.interfaces = (InterfaceInfo[]) {
|
||||||
|
{ TYPE_HOTPLUG_HANDLER },
|
||||||
|
{ }
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void virtio_serial_register_types(void)
|
static void virtio_serial_register_types(void)
|
||||||
|
|
Loading…
Reference in New Issue