On Tue, Oct 9, 2012 at 5:24 AM, <fred.konrad@xxxxxxxxxxxxx> wrote: > From: Evgeny Voevodin <e.voevodin@xxxxxxxxxxx> > > Signed-off-by: Evgeny Voevodin <e.voevodin@xxxxxxxxxxx> > --- > hw/virtio-serial-bus.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > hw/virtio-serial.h | 11 +++++++++++ > 2 files changed, 55 insertions(+) > > diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c > index 82073f5..699a485 100644 > --- a/hw/virtio-serial-bus.c > +++ b/hw/virtio-serial-bus.c > @@ -24,6 +24,7 @@ > #include "sysbus.h" > #include "trace.h" > #include "virtio-serial.h" > +#include "virtio-transport.h" > > /* The virtio-serial bus on top of which the ports will ride as devices */ > struct VirtIOSerialBus { > @@ -1014,3 +1015,46 @@ static void virtio_serial_register_types(void) > } > > type_init(virtio_serial_register_types) > + > +/******************** VirtIOSer Device **********************/ > + > +static int virtio_serialdev_init(DeviceState *dev) > +{ > + VirtIODevice *vdev; > + VirtIOSerState *s = VIRTIO_SERIAL_FROM_QDEV(dev); > + vdev = virtio_serial_init(dev, &s->serial); > + if (!vdev) { > + return -1; > + } > + > + assert(s->trl != NULL); > + > + return virtio_call_backend_init_cb(dev, s->trl, vdev); > +} > + > +static Property virtio_serial_properties[] = { > + DEFINE_PROP_UINT32("max_ports", VirtIOSerState, > + serial.max_virtserial_ports, 31), > + DEFINE_PROP_END_OF_LIST(), > +}; > + > +static void virtio_serial_class_init(ObjectClass *klass, void *data) > +{ > + DeviceClass *dc = DEVICE_CLASS(klass); > + dc->init = virtio_serialdev_init; > + dc->props = virtio_serial_properties; > +} > + > +static TypeInfo virtio_serial_info = { > + .name = "virtio-serial", > + .parent = TYPE_DEVICE, > + .instance_size = sizeof(VirtIOSerState), > + .class_init = virtio_serial_class_init, > +}; > + > +static void virtio_ser_register_types(void) > +{ > + type_register_static(&virtio_serial_info); > +} > + > +type_init(virtio_ser_register_types) > diff --git a/hw/virtio-serial.h b/hw/virtio-serial.h > index 16e3982..c6b916a 100644 > --- a/hw/virtio-serial.h > +++ b/hw/virtio-serial.h > @@ -15,8 +15,10 @@ > #ifndef _QEMU_VIRTIO_SERIAL_H > #define _QEMU_VIRTIO_SERIAL_H > > +#include "sysbus.h" > #include "qdev.h" > #include "virtio.h" > +#include "virtio-transport.h" > > /* == Interface shared between the guest kernel and qemu == */ > > @@ -173,6 +175,15 @@ struct VirtIOSerialPort { > bool throttled; > }; > > +typedef struct { > + DeviceState qdev; > + /* virtio-serial */ > + virtio_serial_conf serial; > + VirtIOTransportLink *trl; > +} VirtIOSerState; > + > +#define VIRTIO_SERIAL_FROM_QDEV(dev) DO_UPCAST(VirtIOSerState, qdev, dev) > + > /* Interface to the virtio-serial bus */ > > /* Hi Fred, Did you ever actually test this? With -device virtio-serial I hit the assert on s->trl != NULL Perhaps I am doing something wrong? -Christoffer _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm