On 10/16/2012 12:28 AM, Christoffer Dall wrote: > 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 > The parameters should be like: -drive file=./abc.img,id=virtio-blk,if=none \ -device virtio-blk,drive=virtio-blk,transport=virtio-mmio.0 \ -netdev user,id=virtio-net \ -device virtio-net,netdev=virtio-net,transport=virtio-mmio.1 \ -- Kind regards, Evgeny Voevodin, Technical Leader, Mobile Group, Samsung Moscow Research Center, e-mail: e.voevodin@xxxxxxxxxxx _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm