1.227. xorg-x11-drv-qxl
1.227.1. RHBA-2010:0188: bug fix update
An updated xorg-x11-drv-qxl package that fixes numerous bugs is now available.
xorg-x11-qxl-drv is an X11 video driver for the QEMU QXL video accelerator. This driver makes it possible to use Red Hat Enterprise Linux 5 as a guest operating system under KVM and QEMU, using the SPICE protocol.
This update addresses the following:
* if a virtual machine running X11 was switched to run-level 3 and the startx command was then used to restart X11, the X server would hang, resulting in a black screen. When "init 3" is run, the QXL device switches into VGA mode without either notifying the X server or clearing the command buffer. As a consequence, when X attempted to restart, the commands queued from the previous X session (which are cleared when an X session is stopped properly and safely) cause X to hang and the virtual machine to crash.
With this update the QXL driver now checks the device mode before issuing any commands: if the QXL driver reports being in VGA mode, the driver now waits for it to be set back to non-VGA mode as part of the normal X startup process. This avoids the problem created by the QXL device and ensures the command queue is not left in an illegal state when exiting X. (BZ#509410)
* In the previous release, only a 32-bit x86 version of the QXL driver was included. With this update both 32-bit and 64-bit x86 versions are provided.(BZ#543663)
* Launching applications from shortcuts pinned to the task bar panel caused a visual glitch where rectangles animating the movement of windows would persist on screen.
To improve performance and fix bugs in conjunction with moving windows around, the driver was modified to keep damage in a separate pending_copy region. Accelerated operations then delete this region, and whenever new damage appears, it is unioned onto the "to_be_sent" region, which is then submitted at BlockHandler time.(BZ#544781)
This modification also resolves the following:
* Scrolling through a document with the mouse wheel in OpenOffice 3.1.1 would cause corruption of the displayed document text.(BZ#552181)
* In Red Hat Enterprise Linux 5.4 with the KDE desktop running in a virtual machine using the QXL driver, dragging icons or drawing frames on the desktop with the mouse would result in residual screen corruption.(BZ#552838)
* When running x11perf in a virtual machine with the 32-bit QXL driver, X Windows would occasionally become unresponsive though the VM was responsive otherwise.
The 32-bit QXL driver did not implement correct memory accesses to the QXL ring buffer. This could lead to an endless loop. In this update, all ring accesses have been modified to use volatile accessors. The driver no longer enters an endless loop after this modification.(BZ#549379)
* Unmapping errors and incorrect draw area values appeared in the log file.
This was caused by incorrect size parameters applied to xf86UnMapVidMem and printing of values from incorrect memory structure. The size parameter was modified and ROM structure replaced QXL structure for draw area values. These errors no longer appear in the log.(BZ#549386)
* Video was not displayed to screen in video players.
The QXL driver did not output video streams with the correct effect type and consequently video was not displayed to screen. The driver was modified to use QXL_EFFECT_OPAQUE instead of QXL_EFFECT_BLEND. Video detection works correctly after this modification.(BZ#551289)
* X11 crashed when the display configuration was changed to "thousands of colors" (16-bit color depth) and the virtual machine was restarted.
QXL uses a 15-bit color depth (x1r5g5b5) rather than 16-bits. The driver implemented 16-bit depth modes incorrectly with the "thousands of colors" setting and caused X11 to crash.
The driver was modified to implement a 15-bit color depth which allowed X11 to restart without crashing after "thousands of colors" was set in the display configuration.(BZ#551981)
All users of KVM-based virtualization are advised to upgrade to this updated package, which fixes these issues.