In fact the lockup comes down to this one line:



--- radeon_driver.c 28 Oct 2002 02:21:14 -0000 1.44 +++ radeon_driver.c 29 Oct 2002 13:49:25 -0000 1.45 @@ -4639,6 +4639,7 @@ save->cap0_trig_cntl = 0; save->cap1_trig_cntl = 0; save->bus_cntl = info->BusCntl; + save->gen_int_cntl = info->gen_int_cntl; /* * If bursts are enabled, turn on discards * Radeon doesn't have write bursts


Michel, what are the consequences of removing this?

Hmm. Things are slightly compilcated by the fact that this code has been reworked since this change was made. To get rid of the lockup on the dri trunk I have to use the attached patch. It's a little heavy handed...


Anyone have any better ideas? Otherwise I'm going to commit this here as it at least it resolves the lockup.

Keith
Index: radeon_dri.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c,v
retrieving revision 1.44
diff -u -r1.44 radeon_dri.c
--- radeon_dri.c        6 Feb 2003 19:13:40 -0000       1.44
+++ radeon_dri.c        12 Mar 2003 10:50:20 -0000
@@ -1148,7 +1148,7 @@
            info->irq = 0;
        } else {
            unsigned char *RADEONMMIO = info->MMIO;
-           info->ModeReg.gen_int_cntl = INREG( RADEON_GEN_INT_CNTL );
+           info->ModeReg.gen_int_cntl = 0; /* INREG( RADEON_GEN_INT_CNTL ); */
        }
     }
 
Index: radeon_driver.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.56
diff -u -r1.56 radeon_driver.c
--- radeon_driver.c     25 Jan 2003 22:25:44 -0000      1.56
+++ radeon_driver.c     12 Mar 2003 10:50:21 -0000
@@ -4384,7 +4384,7 @@
     save->subpic_cntl        = INREG(RADEON_SUBPIC_CNTL);
     save->viph_control       = INREG(RADEON_VIPH_CONTROL);
     save->i2c_cntl_1         = INREG(RADEON_I2C_CNTL_1);
-    save->gen_int_cntl       = INREG(RADEON_GEN_INT_CNTL);
+    save->gen_int_cntl       = 0; /* INREG(RADEON_GEN_INT_CNTL); */
     save->cap0_trig_cntl     = INREG(RADEON_CAP0_TRIG_CNTL);
     save->cap1_trig_cntl     = INREG(RADEON_CAP1_TRIG_CNTL);
     save->bus_cntl           = INREG(RADEON_BUS_CNTL);
@@ -4400,7 +4400,7 @@
 
     /* Save register for vertical blank interrupts */
     if (info->irq) {
-       save->gen_int_cntl = INREG(RADEON_GEN_INT_CNTL);
+       save->gen_int_cntl = 0; /* INREG(RADEON_GEN_INT_CNTL); */
     }
 
     /* Save registers for page flipping */

Reply via email to