Re: [RFC PATCH 07/13] hw/virtio-serial-bus.c: Add virtio-serial device.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 15, 2012 at 11:35 PM, Evgeny Voevodin
<e.voevodin@xxxxxxxxxxx> wrote:
> 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 \
>
right, but it seems there's some missing binding of the transport
layer for the pci-new protocol thingy for the virtio serial port bus
console or am I missing something?

these options for disk and network work perfectly!

Thanks,
-Christoffer
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux