[libvirt-users] Unable to use more than 4 serial devices at once.

Cole Robinson crobinso at redhat.com
Tue Nov 19 19:39:01 UTC 2013


On 11/17/2013 09:18 PM, Matthew Harrold wrote:
>     On Sun, Nov 17, 2013 at 7:44 PM, Cole Robinson <crobinso at redhat.com
>     <mailto:crobinso at redhat.com>> wrote:
>     On 11/17/2013 01:26 PM, Matthew Harrold wrote:
>     > Hi All.
>     >
>     > I'm trying to setup a guest within my hypervisor that acts as a Console
>     > Server, using 10 USB to Serial adapters. The Host is all setup and can
>     access
>     > each Serial Port without problems.
>     >
>     > I have attempted to add the Serial Connections to a Guest, using both
>     Virtual
>     > Machine Manager and by editing the .XML file, and I can add up to 4 Serial
>     > devices (Including one for console access to the guest) without any
>     issues at
>     > all. However when I try to add a fifth , the virtual machine refuses to
>     start
>     >
>     >
>     > Distro: Ubuntu 13.04
>     > Kernel: 3.8.0-33-generic
>     > libvirtd: 1.0.2
>     > QEMU:1.4.0 (Debian 1.4.0+dfsg-1expubuntu4)
>     >
>     > The log-
>     >
>     > _4 Serial Devices_
>     >
>     > 2013-11-17 17:37:45.901+0000: starting up
>     > LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
>     > QEMU_AUDIO_DRV=none /usr/bin/kvm -name Ubuntu12.04-Cisco -S -M pc-1.0 -m
>     1024
>     > -smp 2,sockets=2,cores=1,threads=1 -uuid
>     1837c56f-6f84-2abe-8bdd-d7c974803b84
>     > -no-user-config -nodefaults -chardev
>     >
>     socket,id=charmonitor,path=/var/lib/libvirt/qemu/Ubuntu12.04-Cisco.monitor,server,nowait
>     > -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown
>     > -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive
>     >
>     file=/mnt/DiskRepo/Ubuntu12.04-TFTP.qcow2,if=none,id=drive-virtio-disk0,format=qcow2
>     > -device
>     >
>     virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
>     > -drive if=none,id=drive-ide0-1-0,readonly=on,format=raw -device
>     > ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev
>     > tap,fd=31,id=hostnet0,vhost=on,vhostfd=32 -device
>     >
>     virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:e6:9c:c0,bus=pci.0,addr=0x3
>     -chardev
>     > pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0
>     -chardev
>     > tty,id=charserial1,path=/dev/c1841-A -device
>     > isa-serial,chardev=charserial1,id=serial1 -chardev
>     > tty,id=charserial2,path=/dev/c2620-A -device
>     > isa-serial,chardev=charserial2,id=serial2 -chardev
>     > tty,id=charserial3,path=/dev/c2620-B -device
>     > isa-serial,chardev=charserial3,id=serial3 -vnc 0.0.0.0:0
>     <http://0.0.0.0:0> <http://0.0.0.0:0>
>     > -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
>     > W: kvm binary is deprecated, please use qemu-system-x86_64 instead
>     > char device redirected to /dev/pts/0 (label charserial0)
>     >
>     >
>     > _5 Serial Devices_
>     >
>     > 2013-11-17 18:05:59.925+0000: starting up
>     > LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
>     > QEMU_AUDIO_DRV=none /usr/bin/kvm -name Ubuntu12.04-Cisco -S -M pc-1.0 -m
>     1024
>     > -smp 2,sockets=2,cores=1,threads=1 -uuid
>     1837c56f-6f84-2abe-8bdd-d7c974803b84
>     > -no-user-config -nodefaults -chardev
>     >
>     socket,id=charmonitor,path=/var/lib/libvirt/qemu/Ubuntu12.04-Cisco.monitor,server,nowait
>     > -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown
>     > -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive
>     >
>     file=/mnt/DiskRepo/Ubuntu12.04-TFTP.qcow2,if=none,id=drive-virtio-disk0,format=qcow2
>     > -device
>     >
>     virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
>     > -drive if=none,id=drive-ide0-1-0,readonly=on,format=raw -device
>     > ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev
>     > tap,fd=31,id=hostnet0,vhost=on,vhostfd=32 -device
>     >
>     virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:e6:9c:c0,bus=pci.0,addr=0x3
>     -chardev
>     > pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0
>     -chardev
>     > tty,id=charserial1,path=/dev/c1841-A -device
>     > isa-serial,chardev=charserial1,id=serial1 -chardev
>     > tty,id=charserial2,path=/dev/c2620-A -device
>     > isa-serial,chardev=charserial2,id=serial2 -chardev
>     > tty,id=charserial3,path=/dev/c2620-B -device
>     > isa-serial,chardev=charserial3,id=serial3 -chardev
>     > tty,id=charserial4,path=/dev/c2950-A -device
>     > isa-serial,chardev=charserial4,id=serial4 -vnc 0.0.0.0:0
>     <http://0.0.0.0:0> <http://0.0.0.0:0>
>     > -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
>     > W: kvm binary is deprecated, please use qemu-system-x86_64 instead
>     > char device redirected to /dev/pts/0 (label charserial0)
>     > qemu-system-x86_64: -device isa-serial,chardev=charserial4,id=serial4:
>     Device
>     > 'isa-serial' could not be initialized
>     > 2013-11-17 18:06:00.314+0000: shutting down
>     >
>     > Does anyone have any idea what's causing this? I have attempted using
>     > different Serial to USB adapters to rule out a hardware / configuration
>     issue
>     > on one of the adapters, but it makes no difference. If I try to start more
>     > than 4 Serial Devices, it refuses to start up.
>     >
>     Pretty sure that's just a qemu or PC limit for isa-serial. The alternative is
>     to use virtio serial which can handle many more ports.
>     - Cole
> 
> 
> That sounds likely. Is there any documentation covering 'binding' a host
> serial port to a virtio serial device? I've search but not found anything
> relevant.
> 

Hmm, that's a good question. Actually it doesn't look like there is any way to
have <serial> use virtio. You can use channel to get something close, like:

    <channel type='pty'>
      <target type='virtio' name='my.port.2'/>
    </channel>

However it won't appear as ttyS0 in the guest so it might not fit your
usecase. Recent qemu has a PCI serial device which should allow for more than
4 serial ports, but support isn't wired up in libvirt yet.

- Cole




More information about the libvirt-users mailing list