xf86-video-mga: Changes to 'master'
Dave Airlie
airlied at kemper.freedesktop.org
Thu Mar 13 17:39:27 PDT 2014
src/mga.h | 1 +
src/mga_dacG.c | 39 +++++++++++++++++++++++++++++++++++++++
src/mga_driver.c | 12 +++++++++---
3 files changed, 49 insertions(+), 3 deletions(-)
New commits:
commit 0789f3f2799e6497e9e2e7488da679c03b7fa468
Author: Mikulas Patocka <mpatocka at redhat.com>
Date: Thu Mar 13 18:25:56 2014 -0400
xf86-video-mga: fix a lockup in the mga driver
I've had a Xserver lockup in the mga driver, examining it with gdb showed
this obviously broken loop:
count = INREG(MGAREG_VCOUNT) + 2;
while(INREG(MGAREG_VCOUNT) < count);
It reads the line counter and waits until the counter advances by two. The
cause of the lockup is this - if the kernel reschedules the Xorg process
and lets it run in such a moment when INREG(MGAREG_VCOUNT) returns the
maximum (or maximum minus 1) line count, the loop never exits.
Signed-off-by: Dave Airlie <airlied at redhat.com>
commit 62ba63f687d7b99aff7c88ffd2774f15a2471ce0
Author: Mikulas Patocka <mpatocka at redhat.com>
Date: Fri Jan 17 16:04:26 2014 -0500
xf86-video-mga: set the pan_ctl register
On my Matrox G550 most videomodes in Xorg didn't work. I found out that it
works if Xorg pixel clock is similar to the pixel clock set on framebuffer
console.
Further analysis showed that the Linux framebuffer driver sets the pan_ctl
register (the register 0xa2) according to the pixel clock, the Xorg driver
doesn't set it.
I copied the code to set the pan_ctl register from the Linux kernel to the
Xorg driver, and most videomodes in Xorg work.
The pan_ctl register is required for both analog and digital output.
The pan_ctl register is saved and restored, this is required so that we
restore text-mode screen or Linux framebuffer correctly.
Signed-off-by: Dave Airlie <airlied at redhat.com>
More information about the xorg-commit
mailing list