View Single Post
Old 01-11-07, 12:23 PM   #20
radmanly
Registered User
 
Join Date: Jan 2007
Posts: 9
Default Re: Xorg 7.2 and 9746 freeze

I can confirm that the problem DOES reproduce with the 'nv' X driver (assuming his stack trace is the same as mine):

(gdb) bt
#0 0x0000000801d37134 in NVSync ()
from /usr/X11R6/lib/xorg/modules/drivers//nv_drv.so
#1 0x00000008035f3008 in XAAGlyphs ()
from /usr/X11R6/lib/xorg/modules//libxaa.so
#2 0x0000000000506fdf in DamageExtensionInit ()
#3 0x00000000004fd1df in RenderExtensionInit ()
#4 0x0000000000445e3d in Dispatch ()
#5 0x000000000042eae5 in main ()

Looking at NVSync in the xaa bit of the 'nv' driver (nv_xaa.c), I found this:

Quote:
void NVSync(ScrnInfoPtr pScrn)
{
NVPtr pNv = NVPTR(pScrn);

if(pNv->DMAKickoffCallback)
(*pNv->DMAKickoffCallback)(pScrn);

while(READ_GET(pNv) != pNv->dmaPut);

while(pNv->PGRAPH[0x0700/4]);
}
Two big ole' while loops that look like prime candidates for gobbling up CPU cycles.

Are there similar loops in the proprietary drivers?
radmanly is offline   Reply With Quote