RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 987312 - Display mess when boot guest w/ multiple display devices
Summary: Display mess when boot guest w/ multiple display devices
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm-rhev
Version: 7.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Gerd Hoffmann
QA Contact: Virtualization Bugs
URL:
Whiteboard:
: 1048654 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-07-23 08:34 UTC by Qian Guo
Modified: 2015-12-04 16:13 UTC (History)
13 users (show)

Fixed In Version: qemu-2.3
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-12-04 16:13:33 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
spice + -device qxl ... works well, just attach the Xorg log (17.04 KB, text/plain)
2014-08-26 09:00 UTC, Qian Guo
no flags Details
spice + qxl and non_qxl, will display 2 display auto. attach the Xorg log (28.05 KB, text/plain)
2014-08-26 09:03 UTC, Qian Guo
no flags Details
vnc + qxl and non_qxl, can not display GUI, attach the Xorg log (28.05 KB, text/plain)
2014-08-26 09:04 UTC, Qian Guo
no flags Details
vnc with qxl , works well, just attach the Xorg log (17.04 KB, text/plain)
2014-08-26 09:04 UTC, Qian Guo
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:2546 0 normal SHIPPED_LIVE qemu-kvm-rhev bug fix and enhancement update 2015-12-04 21:11:56 UTC

Description Qian Guo 2013-07-23 08:34:30 UTC
Description of problem:
I test following matrix under rhel7 guest:
1. vnc  +  ...-vga std -device qxl,id=video1,ram_size=67108864,vram_size=67108864 ...

2. spice + ...-vga std -device qxl,id=video1,ram_size=67108864,vram_size=67108864 ...

for '1', remote-viewer displays that screen keeps flashing.

for '2', when try to launch guest, remote-viewer automatically two spice windows.

Version-Release number of selected component (if applicable):
Host/guest kernel:
# uname -r
3.10.0-2.el7.x86_64

qemu-kvm build:
# rpm -q qemu-kvm
qemu-kvm-1.5.1-2.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.1 Boot guest w/ two different display devices and vnc, e.g. std and qxl:
# /usr/libexec/qemu-kvm -M pc  -cpu Penryn -m 6G -smp 4,sockets=1,cores=4,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=/home/rhel7_img/rhel7cp1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-scsi-pci,id=virtio-disk0, -device scsi-hd,bus=virtio-disk0.0,drive=drive-virtio-disk0,id=scsi-hd1 -vnc :10  -device qxl,id=video1,vram_size=67108864  -monitor stdio -netdev tap,id=vnet0,vhost=on,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown -device virtio-net-pci,netdev=vnet0,mac=54:52:1a:0b:c2:01,id=vnic1  -boot menu=on -qmp tcp:0:4444,server,nowait -vga std

1.2 Boot guest w/ two different display devices and spice, e.g. std and qxl:

# /usr/libexec/qemu-kvm -M pc  -cpu Penryn -m 6G -smp 4,sockets=1,cores=4,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=/home/rhel7_img/rhel7cp1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-scsi-pci,id=virtio-disk0, -device scsi-hd,bus=virtio-disk0.0,drive=drive-virtio-disk0,id=scsi-hd1 -spice port=5930,disable-ticketing -global qxl-vga.vram_size=67108864  -device qxl,id=video1,vram_size=67108864  -monitor stdio -netdev tap,id=vnet0,vhost=on,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown -device virtio-net-pci,netdev=vnet0,mac=54:52:1a:0b:c2:01,id=vnic1  -boot menu=on -qmp tcp:0:4444,server,nowait -vga none

(when boot w/ spice, will get this messages:

(qemu) (/usr/libexec/qemu-kvm:4220): SpiceWorker-Warning **: red_worker.c:11477:dev_destroy_primary_surface: double destroy of primary surface
(/usr/libexec/qemu-kvm:4220): SpiceWorker-Warning **: red_worker.c:9663:red_create_surface: condition `surface->context.canvas' 
reached

)

2 Launch guest w/ remote-viewer :
 2.1:# remote-viewer vnc://0:5910
 2.2:# remote-viewer spice://0:5930


Actual results:
Display mess:

for '2.1', remote-viewer displays that screen keeps flashing.

for '2.2', when try to launch guest, remote-viewer automatically two spice windows.

Expected results:
No such issue, only can display one window, and no flashing.

Additional info:
I test this w/ virt-manager, for vnc, the issue is same as 2.1 ;
and when for spice, the virt-manager displays keep flashing, if I manuely launch the spice client, hit issue 2.2.

The virt-manager qemu-kvm cmdline:
1. using vnc

# /usr/libexec/qemu-kvm -name rhel -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -m 4096 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 5d071055-0ebe-b743-5998-fa51a392dcdf -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/rhel.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=/home/rhel7_img/rhel7cp1.qcow2,if=none,id=drive-virtio-disk0,format=raw,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga std -device qxl,id=video1,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x6 -device intel-hda,id=sound0,bus=pci.0,addr=0x3 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5

2.using spice:

# /usr/libexec/qemu-kvm -name rhel -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -m 4096 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 5d071055-0ebe-b743-5998-fa51a392dcdf -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/rhel.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 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 -drive file=/home/rhel7_img/rhel7cp1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -device usb-tablet,id=input0 -spice port=5900,addr=127.0.0.1,disable-ticketing,seamless-migration=on -vga std -device qxl,id=video1,ram_size=67108864,vram_size=67108864,bus=pci.0,addr=0x6 -device intel-hda,id=sound0,bus=pci.0,addr=0x3 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5

Comment 1 Qian Guo 2013-07-23 08:43:48 UTC
When boot guest only w/ ... -device qxl,id=video1,ram_size=67108864,vram_size=67108864 ... and spice, when launch guest, will automatically remote-viewer 2 spice clients.

Comment 4 Gerd Hoffmann 2013-10-11 12:45:07 UTC
Mixing qxl and non-qxl doesn't work today.  Improving multihead support upstream should fix that, but that isn't going to happen that quickly, targeting 7.0 isn't realistic.

Comment 5 Gerd Hoffmann 2014-01-15 15:40:37 UTC
*** Bug 1048654 has been marked as a duplicate of this bug. ***

Comment 9 Qian Guo 2014-08-26 08:52:51 UTC
(In reply to Gerd Hoffmann from comment #4)
> Mixing qxl and non-qxl doesn't work today.  Improving multihead support
> upstream should fix that, but that isn't going to happen that quickly,
> targeting 7.0 isn't realistic.

Hi, Gerd

I just test this with qemu-kvm-rhev-2.1.0-2.el7.x86_64

Found that it is not fixed, followings are my tests, if I mis understood you please feel free to fix me:

a.Test vnc + -vga std + -device qxl :
1.Boot RHEL7.0 GA guest:
# /usr/libexec/qemu-kvm -M pc  -cpu Penryn -m 6G -smp 4,sockets=1,cores=4,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=/home/rhel7/sn1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-scsi-pci,id=virtio-disk0, -device scsi-hd,bus=virtio-disk0.0,drive=drive-virtio-disk0,id=scsi-hd1 -vnc :10  -device qxl,id=video1,vram_size=67108864  -monitor stdio -netdev tap,id=vnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=vnet0,mac=54:52:1a:0b:c2:01,id=vnic1  -boot menu=on -qmp tcp:0:4444,server,nowait -vga std -serial unix:/tmp/s1,server,nowait

Result:
Use remote-viewer to display, GUI can not be displayed, I will attach the Xorg.0.log

b).Test spice + -vga std + -device qxl
1.Boot RHEL7.0 GA guest:
# /usr/libexec/qemu-kvm -M pc  -cpu Penryn -m 6G -smp 4,sockets=1,cores=4,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=/home/rhel7/sn1.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-scsi-pci,id=virtio-disk0, -device scsi-hd,bus=virtio-disk0.0,drive=drive-virtio-disk0,id=scsi-hd1 -spice port=5930,disable-ticketing -global qxl-vga.vram_size=67108864  -device qxl,id=video1,vram_size=67108864  -monitor stdio -netdev tap,id=vnet0,vhost=on,script=/etc/qemu-ifup -device virtio-net-pci,netdev=vnet0,mac=54:52:1a:0b:c2:01,id=vnic1  -boot menu=on -qmp tcp:0:4444,server,nowait  -serial unix:/tmp/s1,server,nowait -vga std

Result:
Use remote-viewer to display, GUI can not be displayed, and will automatically come out 2 spice display. I will attach the Xorg.0.log

c.Test vnc/spice + -device qxl (comment 1 is fixed)
Result: works well, I will attach the Xorg.0.log

d.Test vnc/spice + -device qxl + -vga qxl
Result: works well, I will attach the Xorg.0.log


So according to above, the latest qemu-kvm-rhev 2.1 only fixed comment 1, did not fix the qxl+non_qxl issue

Comment 10 Qian Guo 2014-08-26 09:00:19 UTC
Created attachment 930787 [details]
spice + -device qxl ... works well, just attach the Xorg log

Comment 11 Qian Guo 2014-08-26 09:03:10 UTC
Created attachment 930788 [details]
spice + qxl and non_qxl, will display 2 display auto. attach the Xorg log

Comment 12 Qian Guo 2014-08-26 09:04:04 UTC
Created attachment 930789 [details]
vnc + qxl and non_qxl, can not display GUI, attach the Xorg log

Comment 13 Qian Guo 2014-08-26 09:04:55 UTC
Created attachment 930790 [details]
vnc with qxl , works well, just attach the Xorg log

Comment 14 Gerd Hoffmann 2014-08-26 11:34:18 UTC
Improved compared to 7.0, but not yet fully functional indeed.

Comment 15 Gerd Hoffmann 2014-08-28 13:09:11 UTC
(In reply to Gerd Hoffmann from comment #14)
> Improved compared to 7.0, but not yet fully functional indeed.

Spoke to soon.  Seems to be a problem with remote-viewer or spice-gtk.

Details:

We have two display devices.  The easiest way to test out stuff is to create a seat for each display device, so you'll get a login screen on both displays.

(1) use loginctl to list the (default) seat0, find the qxl device nodes:

[root@rhel7 ~]# loginctl seat-status seat0
seat0
        Sessions: *c1
         Devices:
[ ... ]
                  ├─/sys/devices/pci0000:00/0000:00:03.0/drm/card0
                  │ drm:card0
                  ├─/sys/devices/pci0000:00/0000:00:03.0/graphics/fb0
                  │ [MASTER] graphics:fb0 "qxldrmfb"
[ ... ]

(2) Attach those two device nodes to another seat:

[root@rhel7 ~]# loginctl attach seat-qxl /sys/devices/pci0000:00/0000:00:03.0/drm/card0
[root@rhel7 ~]# loginctl attach seat-qxl /sys/devices/pci0000:00/0000:00:03.0/graphics/fb0

(3) reboot.

Expected behavior:

gdm login screen shows up on seat-qxl.
gdm login screen shows up on seat0 in case a kms driver is available
   [ rhel 7.0 guest: works with cirrus only ]
   [ rhel 7.1 guest: planned to work with both cirrus+stdvga, but the drm
                     backport isn't (yet) merged ]
   [ fedora 20 guest: works with both cirrus+stdvga if you install latest
                      kernel from updates ]
any user input (mouse+kbd) goes to seat0.

When using vnc:  You can use Ctrl-Alt-1 and Ctrl-Alt-2 hotkeys to switch between displays devices / seats.

When using spice:  You get two windows, one for each display device / seat.  In my testing this works just fine with rhel6 spicec.  remote-viewer has problems to deal with this though.

See also: http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt

Comment 18 Gerd Hoffmann 2015-05-04 08:22:07 UTC
please retest with latest qemu (2.3+) and virt-viewer packages.

Comment 19 Qian Guo 2015-08-06 05:32:03 UTC
Test components:
qemu-kvm-rhev-2.3.0-15.el7.x86_64
kernel-3.10.0-302.el7.x86_64
virt-viewer-2.0-5.el7.x86_64

test scenarios:
1.Test with virt-manager 

1.1  spice + -vga std + -device qxl ...
  
     result, in virt-manager window, only can get one window, and can not find the method to switch the window(if it have 2 windows)

1.2  vnc + -vga std + -device qxl ...
  
     result, n virt-manager window, only can get one window, and can not find the method to switch the window(if it have 2 windows)

2.Test with qemu cli directly and with virt-viewer

1.1  vnc + -vga std + -device qxl ...
     result, n virt-manager window, only can get one window, and can not find the method to switch the window(if it have 2 windows)

1.2 spice + -vga std + -device qxl ...
    
    result, 2 spice windows, and after attach the secondery graphic(qxl) to login, the 2 windows both have the login screen.
    
    issues:
    1.2.1 but the 2nd windows has no mouse+keyboard control.
    1.2.2 the virt-viewer crashed when switch the pty by "ctrl-alt-fx" --- I will file a bug against this.

So I think the latest qemu-kvm-rhev have fixed the bug.



Additional infos:
1.Inside guest:
# loginctl seat-status seat0 seat-qxl 
seat0
        Sessions: *2 c2
         Devices:
                  ├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
                  │ input:input0 "Power Button"
                  ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1
                  │ drm:card1
                  ├─/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
                  │ [MASTER] graphics:fb1 "bochsdrmfb"
                  ├─/sys/devices/pci0000:00/0000:00:04.0/sound/card0
                  │ sound:card0 "Intel"
                  ├─/sys/devices/pci0000:00/0000:00:06.0/usb2
                  │ usb:usb2
                  ├─/sys/devices/pci0000:00/0000:00:06.1/usb3
                  │ usb:usb3
                  ├─/sys/devices/pci0000:00/0000:00:06.2/usb4
                  │ usb:usb4
                  ├─/sys/devices/pci0000:00/0000:00:06.7/usb1
                  │ usb:usb1
                  ├─/sys/devices/platform/i8042/serio0/input/input1
                  │ input:input1 "AT Translated Set 2 keyboard"
                  ├─/sys/devices/platform/i8042/serio1/input/input2
                  │ input:input2 "ImExPS/2 Generic Explorer Mouse"
                  ├─/sys/devices/platform/pcspkr/input/input3
                  │ input:input3 "PC Speaker"
                  └─/sys/devices/virtual/misc/rfkill
                    misc:rfkill

seat-qxl
        Sessions: *c1
         Devices:
                  ├─/sys/devices/pci0000:00/0000:00:0e.0/drm/card0
                  │ drm:card0
                  └─/sys/devices/pci0000:00/0000:00:0e.0/graphics/fb0
                    [MASTER] graphics:fb0 "qxldrmfb"


2.The cli of vnc scenario:
-device qxl,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0xe \
-vga std.


Hi, Gerd

Could you help check above test, do you think it is fixed ?

Thanks,
qian

Comment 20 Gerd Hoffmann 2015-08-17 22:18:14 UTC
> So I think the latest qemu-kvm-rhev have fixed the bug.

> Could you help check above test, do you think it is fixed ?

Test is fine, bug is fixed indeed.

Comment 22 juzhang 2015-09-21 05:25:44 UTC
According to comment19 and comment20, set this issue as verified.

Comment 24 errata-xmlrpc 2015-12-04 16:13:33 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2546.html


Note You need to log in before you can comment on or make changes to this bug.