Black screen on guest with anything except Cirrus

Bug #958549 reported by ValVe on 2012-03-18
198
This bug affects 41 people
Affects Status Importance Assigned to Milestone
seabios (Ubuntu)
Medium
Unassigned

Bug Description

No graphics output during boot when using qxl, vga, or vmvga in libvirt (kvm).
Cirrus graphics still work fine.

The bug is encountered through both VNC and SPICE.

Graphics output resumes when the guest OS loads its own VGA driver.

I'm using Ubuntu 12.04 and this bug is present in seabios 0.6.2-0ubuntu2 and 1.6.3 built from source.

Adjusting video memory allocation to a different (smaller) value does not make any difference.

The bug was not present before some recent (~2 weeks) changes to related virtualization packages.

Алексей (baradazer) wrote :

Also have this bug. I have blank screen on guest boot. After QXL guest drivers load everything become ok.

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in seabios (Ubuntu):
status: New → Confirmed
Tom Vaughan (tvaughan) wrote :

This is also true for me. But this seems to have happened once I switched to `kvm-spice` over `kvm`[1]. Host is 12.04 x86_64 (completely up-to-date) and guest is Arch x86_64 (also completely up-to-date).

[1] https://bugs.launchpad.net/ubuntu/+source/virt-manager/+bug/975165

Duplicates:
https://bugs.launchpad.net/ubuntu/+source/qemu-kvm-spice/+bug/970234
https://bugs.launchpad.net/ubuntu/+source/seabios/+bug/823494

Troels Liebe Bentsen (tlbdk) wrote :

I did a home made upgrade to seabios 1.7.0 with no patches and vgabios 0.7a with the build of the special qlx and vga versions in the ubuntu patch, and I still have the issue, the only mode that works for me "cirrus" with and without spice.

Serge Hallyn (serge-hallyn) wrote :

@ValVe,

do you still have this issue?

If so, please give the exact command lines or sequence of steps which you use.

ValVe (valve-via) wrote :

@Serge Hallyn

Most definitely.

To check the missing graphics output:
1) Download any bootable iso for the sake of simplicity.
Let's assume it's Damn Small LInux: http://distro.ibiblio.org/pub/linux/distributions/damnsmall/dsl-n/current/dsl-n-01RC4.iso

2)Open Virt-Manager
3) Click Create New Virtual Machine
4) Enter something as name and select "Local Install Media"
5) Select the downloaded ISO image
6) On the storage setup screen, uncheck Enable storage
7) On the next screen, check Customize Configuration before install
8) Select cirrus in Video options, click Apply
9) Click Begin Installation -- here you go, you can see bios messages and everything

10) Stop the VM and click Show Virtual Hardware Details
11) Change video to vga and click Apply
12) Click Power On the Virtual Machine button
13) you get no bios messages and no graphics, although the system reacts to input and consumes cpu

This works with either SPICE or VNC display.

To chech whether QXL works:
1) Install some OS (like WinXP or something) using cirrus video in VM settings
2) Install the QXL driver in guest OS or make sure it already comes with it.
3) Change video to QXL in VM settings and reboot the guest OS.
4) You should not see any bios messages or anything for some time, then the guest OS loads the driver and screen output begins to work correctly.

Before 12.04 beta 1 bios messages and graphics output during boot were present regardless of Video settings in VirtManager.
I still have a strong suspicion that if BIOS boot messages are not visible, then the BIOS (seabios) itself is not working with the virtual hardware quite right.

Torsten (torsten-vogelreuter) wrote :

The problem still remains. Nothing has happend? I have tried the same under 12.10 from daily builds and here the qxl video out is working fine, (although i had massiv problems in installing the driver under server 2003 due to a missing qxl.inf in the actual driver package. I solved it by using an older package for xql video driver i found in the web)
So what has changed and why it hasn been solved for 12.04 backwards?

Ken-ichi Mito (mitty) wrote :

I think AppArmor needs a new rule for /usr/bin/kvm-spice.

The reason,

1) When I boot a VM, every time I get a kernel log like below, even if I set the VM's Video model to Cirrus.
Oct 13 22:45:08 HOSTNAME kernel: [507466.445098] type=1400 audit(1350135908.372:69): apparmor="DENIED" operation="open" parent=1 profile="libvirt-52d08545-a490-c890-654a-260caf35d27d" name="/proc/17685/auxv" pid=17685 comm="kvm-spice" requested_mask="r" denied_mask="r" fsuid=104 ouid=104

2) I change the VM's setting "<emulator>/usr/bin/kvm-spice</emulator>" to /usr/bin/kvm with "virsh edit VMNAME", and I get BIOS boot menu correctly while the VM is booting. And there is no "DENIED" in kernel log anymore.

I'm not familiar with AppArmor so I have no idea how to set AppArmor properly.

Peter Antoniac (pan1nx) on 2012-10-14
Changed in seabios (Ubuntu):
importance: Undecided → Medium

Confirm the AppArmor messages; same here.

Jim Salter (jrssnet) wrote :

Confirm AppArmor message here also:

syslog:Oct 27 16:09:31 banshee kernel: [609909.052908] type=1400 audit(1351368571.038:185): apparmor="DENIED" operation="open" parent=1 profile="libvirt-0640ddeb-8f7f-11f9-c4ed-f8ea333303a8" name="/proc/15859/auxv" pid=15859 comm="kvm" requested_mask="r" denied_mask="r" fsuid=113 ouid=113

Jim Salter (jrssnet) wrote :

I nerfed the AppArmor problem easily enough by adding the following line to /etc/apparmor.d/abstractions/libvirt-qemu:

  @{PROC}/*/auxv r,

and doing /etc/init.d/apparmor restart. Confirmed: DENIED messages went away.

However, still no BIOS screen if booting in qxl video mode; also still no display in Win7 itself once loaded. I tried installing the spice-guest-tools in Win7 VM, and display stopped working about 85% of the way through installation - this was with already-working display in cirrus video mode. Now, in cirrus mode video works until guest OS loads but then "freezes" (mouse and keyboard input do not produce any change in displayed video), and qxl video mode produces plain black screen in both BIOS and in guest OS.

Sadface.

Jim Salter (jrssnet) wrote :

Oh, MY. This was ugly - switched back to VNC display and cirrus video and removed Spice channels; that got things running on my guest again. Reinstalled the spice-guest-tools - that worked fine. Shut down the guest, switched video to QXL, and started the guest - black screen.

Used Remmina to RDP into the guest, logged in okay. Right-clicked Computer in the Win7 VM and hit the Device Manager, found "Standard VGA Adapter", clicked update driver and it found RedHat QXL driver and installed it pending reboot. Still great so far...

But on reboot, got continual crashes in virt-manager on starting the guest, and exposed an apparent bug in apport-gtk as well - it couldn't actually submit error reports due to "incorrect padding". Never could manage to either submit a report or view details. finally force stopped the guest to stop the apport-gtk spam, then tried changing back to Spice graphics - THAT works.

TL;DR if you fix the AppArmor profile, symlink /usr/bin/qemu-system-x86_64-spice /usr/bin/kvm, install python-spice-client-gtk, install spice-client-tools in your guests BEFORE EVER SWITCHING TO SPICE OR QXL, shutdown your guests, then YOU ABSOLUTELY MUST CHANGE AWAY FROM VNC/CIRRUS TO SPICE/QXL BEFORE STARTING THE GUESTS AGAIN... everything will work.

Still no BIOS display though. Sigh.

Possibly related to bug 998435.

Also, Fedora 18 has known bugs with cirrus. So, I can not use fedora 18 as guest. Screen looks ugly.

Jogarem (jogi) wrote :

Thanks Jim Salter!
You point me to the right direction...!

Nevertheless I had choosen another way to solve that black screen issue because RDP to my Windows Machine wasn't possible.

I use virt-manager so I added a new video device to the VM.
The order is important: the first Video device must be "Cirrus" and the second one must be "qxl".
Boot up Windows VM
Download and install the latest spice-tools within Windows VM
Shutdown Windows VM
Change first video driver back to qxl
Remove second video driver
Boot up Windows VM
Enjoy ;o)

Ah yeah and well I had some other problem here when booting up: Windows told me that the Redhat QXL driver is not signed and therefore it refuses to load that driver!!!! I use Windows 7 - 64 bit and as you can read here:
http://lists.freedesktop.org/archives/spice-devel/2011-May/003814.html
The SPICE Team do not deploy signed drivers for 64 bit Windows.. You have two options to solve that: The hard and correct way as described here:
http://spice-space.org/page/WinQXL#How_to_build_the_driver
or to use the test-mode and test-sign the Redhat QXL drivers (right click within the device manager and then "Driver details" will show you all QXL drivers you need to sign than) like described here:
http://www.ngohq.com/?page=dseo

My tip: Remove the second video driver in virt-manager only when the QXL driver is fully working.

Issue may occuring for you, too:
When you have the QXL driver running correctly (no warning icon in device manager) and your Mouse/Mice stops working this is a known bug in libvirt - you only need to shutdown the VM and do the steps above which removes the second Video card. Afterwards when you boot up your mouse should work again (if not try to remove the mouse in device manager and reboot again)

For me running testmode is ok and it works like a charm ... so great desktop resolution ;o)

Hope that helps someone out ;o)

Hint: no BIOS display though.

Regards
Thomas

James Johnston (mail-codenest) wrote :

This is an old bug but still seems to be relevant on Ubuntu 16.04, unfortunately. When booting from the Windows DVD to install a Windows 7 guest, the boot process hangs on "Starting Windows." By "hang" I don't mean a total hang - the Windows logo animation still pulses in & out. CPU usage is near zero, with no I/O activity. It just never actually gets past that to let me choose how to install Windows. This was with the default QXL display. Changing to Cirrus "fixed" the problem.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers