On Mit, 2002-09-25 at 19:34, Keith Whitwell wrote:
> Michel Dänzer wrote:
> > On Mit, 2002-09-25 at 04:17, Michel Dänzer wrote:
> > 
> >>On Mit, 2002-09-25 at 03:52, Eric Anholt wrote:
> >>
> >>>On Tue, 2002-09-24 at 17:08, Michel Dänzer wrote:
> >>>
> >>>>BTW I'm just experiencing IRQ timeouts as well. In fact, no interrupts
> >>>>occur at all, and the RADEON_GEN_INT_STATUS register seems to always
> >>>>contain 0x00080007; interestingly, bit 16 isn't documented. Maybe that's
> >>>>just a red herring though, and the IRQ is disabled in PCI config space
> >>>>or something?
> >>>>
> >>>How often do you get timeouts?  Does it happen with any app?  I haven't
> >>>noticed any yet.
> >>>
> >>Neither did I until shortly before my last post, but now the CPU doesn't
> >>see any interrupts even though the chip seems to be generating them
> >>(that's why some bits in RADEON_GEN_INT_STATUS are set). Any idea what
> >>could be up and how to resolve it?
> >>
> > 
> > Simple, the interrupts weren't enabled in RADEON_GEN_INT_CNTL (it's
> > cleared on VT switches). The patch includes restoring that register in
> > EnterVT(), but I had lost the part where it's saved. Fixed now. Keith, I
> > think you can enable IRQs in the r200 3D driver again.
> 
> OK, so what was triggering the problem?  q3 mode switching?

Hmm right, that's another problem. What about this patch?


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast
Index: radeon_driver.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.30
diff -p -u -r1.30 radeon_driver.c
--- radeon_driver.c	25 Sep 2002 17:17:36 -0000	1.30
+++ radeon_driver.c	25 Sep 2002 17:45:24 -0000
@@ -4405,6 +4429,7 @@ Bool RADEONSwitchMode(int scrnIndex, Dis
 {
     ScrnInfoPtr   pScrn       = xf86Screens[scrnIndex];
     RADEONInfoPtr info        = RADEONPTR(pScrn);
+    unsigned char *RADEONMMIO = info->MMIO;
 
     /* when switch mode in dual-head setup, this function will be called
        separately for each screen (depending on which screen the cursor is
@@ -4414,6 +4439,7 @@ Bool RADEONSwitchMode(int scrnIndex, Dis
        So we set the flag for RADEONRestoreMode here. */
     info->SwitchingMode = TRUE;
     return RADEONModeInit(xf86Screens[scrnIndex], mode);
+    OUTREG( RADEON_GEN_INT_CNTL, info->gen_int_cntl );
     info->SwitchingMode = FALSE;
 }
 

Reply via email to