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; }