Bug 720635

Summary: Guest with "udp" serial device will show freezen screen after boot up.
Product: Red Hat Enterprise Linux 6 Reporter: Huming Jiang <hjiang>
Component: qemu-kvmAssignee: Virtualization Maintenance <virt-maint>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: high    
Version: 6.2CC: bcao, dyuan, jdenemar, juzhang, jyang, mkenneth, mzhan, rwu, tburke, tnagata, vbian, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-07-13 08:23:12 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
log message
none
Guest xml file none

Description Huming Jiang 2011-07-12 10:25:52 UTC
Description of problem:
Add a serial device with type "udp" to a guest, and boot up the guest, It will show black screen in a while.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:

Comment 2 Huming Jiang 2011-07-12 11:28:44 UTC
Created attachment 512397 [details]
log message

Comment 3 Huming Jiang 2011-07-12 11:30:01 UTC
Created attachment 512398 [details]
Guest xml file

Comment 4 Huming Jiang 2011-07-12 11:51:12 UTC
A mistake leads to the bug description above. Sorry for that. Now edit as follows:

Description of problem:
Add a serial device with type "udp" to a guest, and boot up the guest, It will show freezen screen, because it will hang forever.


Version-Release number of selected component (if applicable):
 virt-manager-0.8.6-4.el6.noarch
 libvirt-0.9.2-1.el6.x86_64
 qemu-kvm-0.12.1.2-2.165.el6.x86_64
 kernel-2.6.32-156.el6.x86_6

 and the kernel version of the guest is :
 kernel-2.6.32.131.0.15.el6.x86_64

How reproducible:
always

Steps to Reproduce:
Make sure there exists an shut-down healthy guest, for example, a guest with RHEL6 os.
 1. Remove all the serial device of the guest, then add a new one, type is "udp", port of host is "4560", leave other parameters default.
 2. Start the guest.

 # ps -aef | grep kvm
 root       857     2  0 14:06 ?        00:00:00 [kvm-irqfd-clean]
 qemu     18805     1  6 18:41 ?        00:00:20 /usr/libexec/qemu-kvm -S -M rhel6.1.0 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name sound-test -uuid cd313cf9-ec30-f87b-f4c7-9cc2cc6d5e3b -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/sound-test.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/sound-test.img,if=none,id=drive-ide0-0-0,format=raw,cache=none,aio=threads -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,fd=20,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3b:81:f1,bus=pci.0,addr=0x3 -chardev udp,id=charserial0,host=127.0.0.1,port=4560,localaddr=127.0.0.1,localport=4556 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
 root     18824     2  0 18:41 ?        00:00:00 [kvm-pit-wq]
 root     18969 10612  0 18:46 pts/0    00:00:00 grep kvm

Actual results:
The guest will show freezen screen.
Expected results:
the guest could be started successfully.

Additional info:
There is no problem about tcp serial device.
and i found in the guest xml file, there exists similar content:
...
    <serial type='udp'>
      <source mode='bind' host='127.0.0.1' service='4556'/>
      <source mode='connect' host='127.0.0.1' service='4560'/>
      <target port='0'/>
    </serial>
    <console type='udp'>
      <source mode='bind' host='127.0.0.1' service='4556'/>
      <source mode='connect' host='127.0.0.1' service='4560'/>
      <target type='serial' port='0'/>
    </console>
...
if i delete any part, for example, delete "serial" part or the "console" part, the guest could be started successfully with the serial device, though the xml file of the guest has not been changed after the guest boot up.

# virsh edit sound-test
Domain sound-test XML configuration edited.

# virsh start sound-test
Domain sound-test started

Comment 5 Huming Jiang 2011-07-12 12:12:51 UTC
(In reply to comment #4)
> A mistake leads to the bug description above. Sorry for that. Now edit as
> follows:
> 
> Description of problem:
> Add a serial device with type "udp" to a guest, and boot up the guest, It will
> show freezen screen, because it will hang forever.
> 
> 
> Version-Release number of selected component (if applicable):
>  virt-manager-0.8.6-4.el6.noarch
>  libvirt-0.9.2-1.el6.x86_64
>  qemu-kvm-0.12.1.2-2.165.el6.x86_64
>  kernel-2.6.32-156.el6.x86_6
> 
>  and the kernel version of the guest is :
>  kernel-2.6.32.131.0.15.el6.x86_64
> 
> How reproducible:
> always
> 
> Steps to Reproduce:
> Make sure there exists an shut-down healthy guest, for example, a guest with
> RHEL6 os.
>  1. Remove all the serial device of the guest, then add a new one, type is
> "udp", port of host is "4560", leave other parameters default.
>  2. Start the guest.
> 
>  # ps -aef | grep kvm
>  root       857     2  0 14:06 ?        00:00:00 [kvm-irqfd-clean]
>  qemu     18805     1  6 18:41 ?        00:00:20 /usr/libexec/qemu-kvm -S -M
> rhel6.1.0 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name
> sound-test -uuid cd313cf9-ec30-f87b-f4c7-9cc2cc6d5e3b -nodefconfig -nodefaults
> -chardev
> socket,id=charmonitor,path=/var/lib/libvirt/qemu/sound-test.monitor,server,nowait
> -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot c -drive
> file=/var/lib/libvirt/images/sound-test.img,if=none,id=drive-ide0-0-0,format=raw,cache=none,aio=threads
> -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev
> tap,fd=20,id=hostnet0 -device
> rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3b:81:f1,bus=pci.0,addr=0x3
> -chardev
> udp,id=charserial0,host=127.0.0.1,port=4560,localaddr=127.0.0.1,localport=4556
> -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga
> cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
>  root     18824     2  0 18:41 ?        00:00:00 [kvm-pit-wq]
>  root     18969 10612  0 18:46 pts/0    00:00:00 grep kvm
> 
> Actual results:
> The guest will show freezen screen.
> Expected results:
> the guest could be started successfully.
> 
> Additional info:
> There is no problem about tcp serial device.
> and i found in the guest xml file, there exists similar content:
> ...
>     <serial type='udp'>
>       <source mode='bind' host='127.0.0.1' service='4556'/>
>       <source mode='connect' host='127.0.0.1' service='4560'/>
>       <target port='0'/>
>     </serial>
>     <console type='udp'>
>       <source mode='bind' host='127.0.0.1' service='4556'/>
>       <source mode='connect' host='127.0.0.1' service='4560'/>
>       <target type='serial' port='0'/>
>     </console>
> ...
> if i delete any part, for example, delete "serial" part or the "console" part,
> the guest could be started successfully with the serial device, though the xml
> file of the guest has not been changed after the guest boot up.
> 
> # virsh edit sound-test
> Domain sound-test XML configuration edited.
> 
> # virsh start sound-test
> Domain sound-test started

The guest will be started successful,and will not hang.

delete "serial" part:
#ps -aef | grep kvm
root       857     2  0 14:06 ?        00:00:00 [kvm-irqfd-clean]
qemu     24894     1 57 20:04 ?        00:00:24 /usr/libexec/qemu-kvm -S -M rhel6.1.0 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name sound-test -uuid cd313cf9-ec30-f87b-f4c7-9cc2cc6d5e3b -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/sound-test.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/sound-test.img,if=none,id=drive-ide0-0-0,format=raw,cache=none,aio=threads -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,fd=26,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3b:81:f1,bus=pci.0,addr=0x3 -chardev udp,id=charserial0,host=127.0.0.1,port=4560,localaddr=127.0.0.1,localport=4556 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
root     24913     2  0 20:04 ?        00:00:00 [kvm-pit-wq]
root     24964 10612  0 20:04 pts/0    00:00:00 grep kvm

delete "console" part:
#ps -aef | grep kvm
root       857     2  0 14:06 ?        00:00:00 [kvm-irqfd-clean]
qemu     25183     1 43 20:07 ?        00:00:24 /usr/libexec/qemu-kvm -S -M rhel6.1.0 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name sound-test -uuid cd313cf9-ec30-f87b-f4c7-9cc2cc6d5e3b -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/sound-test.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/sound-test.img,if=none,id=drive-ide0-0-0,format=raw,cache=none,aio=threads -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,fd=26,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3b:81:f1,bus=pci.0,addr=0x3 -chardev udp,id=charserial0,host=127.0.0.1,port=4560,localaddr=127.0.0.1,localport=4556 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
root     25202     2  0 20:07 ?        00:00:00 [kvm-pit-wq]
root     25266 10612  0 20:08 pts/0    00:00:00 grep kvm

Comment 6 Mike Cao 2011-07-13 02:56:25 UTC
Reproduced on qemu-kvm-0.12.1.2-2.169.el6.x86_64
steps:
1.start VM with -chardev udp,port=6666
eg:/usr/libexec/qemu-kvm -M rhel6.2.0 -enable-kvm -m 1024 -smp 2,sockets=2,cores=1,threads=1 -name Test -uuid 2e426ce8-0cfa-48f7-13df-5cfaa2d15368 -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/Test.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,aio=threads -device virtio-blk-pci,bus=pci.0,addr=0x5,bootindex=1,drive=drive-virtio-disk0,id=virtio-disk0,scsi=on -netdev tap,id=hostnet0,vhost=on -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:07:ce:0d,bus=pci.0,addr=0x3 -chardev udp,id=charserial0,port=6555 -device isa-serial,chardev=charserial0,id=serial0 -usb -device usb-tablet,id=input0 -vnc 0.0.0.0:0 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -monitor stdio

Actual Restult:
qemu-kvm process freezed

Comment 7 Dor Laor 2011-07-13 08:23:12 UTC
udp chardev is not a supported device.
Can you show me the IEEE testplan you got it from?