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