[Nouveau] NV50 inifinite loop
Benjamin Schmidt
DeMonk at gmx.net
Tue Jul 27 06:30:18 PDT 2010
Hello,
this is my first Xorg/Nouveau bug-report ever so I'll try to explain as good as I can ;)
After several years of using the NVIDIA binary driver, I once again tried the latest nouveau driver for my Onboard Geforce 8100 card.
Several month ago I couldn' t even get to the kdm screen. But to my surprise everything I needed worked perfectly. Even KWin compositing. Amazing.
Although after doing some work the xserver freezes in an endless loop.
When I leave the pc alone, it survives a whole night without freezing. Most of the time it occures while opening a context menu, or a new gui program .
I'm running Ubuntu Maverick with the latest Xorg-Edgers repository
2.6.35-11-generic #16-Ubuntu SMP Sat Jul 24 21:37:44 UTC 2010 x86_64 GNU/Linux
lspci says
00:00.0 RAM memory: nVidia Corporation MCP78S [GeForce 8200] Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP78S [GeForce 8200] LPC Bridge (rev a2)
00:01.1 SMBus: nVidia Corporation MCP78S [GeForce 8200] SMBus (rev a1)
00:01.2 RAM memory: nVidia Corporation MCP78S [GeForce 8200] Memory Controller (rev a1)
00:01.3 Co-processor: nVidia Corporation MCP78S [GeForce 8200] Co-Processor (rev a2)
00:01.4 RAM memory: nVidia Corporation MCP78S [GeForce 8200] Memory Controller (rev a1)
00:02.0 USB Controller: nVidia Corporation MCP78S [GeForce 8200] OHCI USB 1.1 Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP78S [GeForce 8200] EHCI USB 2.0 Controller (rev a1)
00:04.0 USB Controller: nVidia Corporation MCP78S [GeForce 8200] OHCI USB 1.1 Controller (rev a1)
00:04.1 USB Controller: nVidia Corporation MCP78S [GeForce 8200] EHCI USB 2.0 Controller (rev a1)
00:06.0 IDE interface: nVidia Corporation MCP78S [GeForce 8200] IDE (rev a1)
00:07.0 Audio device: nVidia Corporation MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio (rev a1)
00:08.0 PCI bridge: nVidia Corporation MCP78S [GeForce 8200] PCI Bridge (rev a1)
00:09.0 IDE interface: nVidia Corporation MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) (rev a2)
00:0a.0 Ethernet controller: nVidia Corporation MCP77 Ethernet (rev a2)
00:0b.0 PCI bridge: nVidia Corporation MCP78S [GeForce 8200] PCI Express Bridge (rev a1)
00:10.0 PCI bridge: nVidia Corporation MCP78S [GeForce 8200] PCI Express Bridge (rev a1)
00:12.0 PCI bridge: nVidia Corporation MCP78S [GeForce 8200] PCI Express Bridge (rev a1)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
02:00.0 VGA compatible controller: nVidia Corporation C77 [GeForce 8100 / nForce 720a] (rev a2)
When the xserver is frozen, I can ssh into the machine and get the following messages in dmesg
[ 9509.530366] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.530979] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.531585] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.532197] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.532785] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.533385] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.533986] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4d000000
[ 9509.534573] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.535161] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4d000000
[ 9509.535745] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.536339] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffeaebeb
[ 9509.536960] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffeceded
[ 9509.537558] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffedeeee
[ 9509.538159] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffeff0f0
[ 9509.538758] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.539354] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.539955] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.540575] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.541169] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.541773] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x4c000000
[ 9509.542371] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.542968] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffffffff
[ 9509.543560] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0xffeeeeee
[ 9509.544151] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x00042050
[ 9509.544739] [drm] nouveau 0000:02:00.0: PFIFO_CACHE_ERROR - Ch 2/0 Mthd 0x0000 Data 0x000eccc9
and Xorg.0.log
[ 9515.311] [mi] EQ overflowing. The server is probably stuck in an infinite loop.
[ 9515.311]
Backtrace:
[ 9515.311] 0: /usr/bin/X (xorg_backtrace+0x28) [0x4614e8]
[ 9515.311] 1: /usr/bin/X (mieqEnqueue+0x1f4) [0x45e1f4]
[ 9515.311] 2: /usr/bin/X (xf86PostMotionEventP+0xc4) [0x47fcc4]
[ 9515.311] 3: /usr/lib/xorg/modules/input/evdev_drv.so (0x7f6819536000+0x423f) [0x7f681953a23f]
[ 9515.311] 4: /usr/bin/X (0x400000+0x784c7) [0x4784c7]
[ 9515.311] 5: /usr/bin/X (0x400000+0x1006c3) [0x5006c3]
[ 9515.311] 6: /lib/libpthread.so.0 (0x7f681eedd000+0xfb50) [0x7f681eeecb50]
[ 9515.311] 7: /usr/lib/xorg/modules/drivers/nouveau_drv.so (0x7f681c07a000+0x2009a) [0x7f681c09a09a]
[ 9515.311] 8: /usr/lib/xorg/modules/libexa.so (0x7f681b1fa000+0xf495) [0x7f681b209495]
[ 9515.311] 9: /usr/lib/xorg/modules/libexa.so (0x7f681b1fa000+0xfb8a) [0x7f681b209b8a]
[ 9515.311] 10: /usr/bin/X (0x400000+0xc2880) [0x4c2880]
[ 9515.311] 11: /usr/bin/X (0x400000+0xb5d79) [0x4b5d79]
[ 9515.311] 12: /usr/bin/X (0x400000+0x39fa9) [0x439fa9]
[ 9515.311] 13: /usr/bin/X (0x400000+0x2165b) [0x42165b]
[ 9515.311] 14: /lib/libc.so.6 (__libc_start_main+0xfd) [0x7f681de44d8d]
[ 9515.311] 15: /usr/bin/X (0x400000+0x211e9) [0x4211e9]
like in the X.Org Wiki I installed the debug packages, attached gdb to the process and made it freeze again. Xorg is at 100% CPU load, I break the process inside gdb using strg+c.
bt full:
#0 NV50EXAPrepareComposite (op=<value optimized out>, pspict=<value optimized out>, pmpict=<value optimized out>, pdpict=<value optimized out>, pspix=0x2057530, pmpix=<value optimized out>, pdpix=0x21e4b20)
at ../../src/nv50_exa.c:840
pNv = 0x1c8c690
chan = 0x1c95d80
eng2d = 0x1c825d0
tesla = 0x1c8bf10
#1 0x00007f681b209495 in exaTryDriverComposite (op=128 '\200', pSrc=0x2068830, pMask=0x0, pDst=0x2068a20, xSrc=<value optimized out>, ySrc=<value optimized out>, xMask=<value optimized out>,
yMask=<value optimized out>, xDst=268, yDst=0, width=<value optimized out>, height=<value optimized out>) at ../../exa/exa_render.c:759
region = {extents = {x1 = 268, y1 = 0, x2 = 848, y2 = 28}, data = 0x3794a70}
pbox = <value optimized out>
nbox = <value optimized out>
src_off_x = <value optimized out>
src_off_y = <value optimized out>
mask_off_x = <value optimized out>
mask_off_y = <value optimized out>
dst_off_x = 0
dst_off_y = 0
pSrcPix = 0x2057530
pMaskPix = 0x0
pDstPix = 0x21e4b20
pSrcExaPix = 0x7fffd18b5790
pMaskExaPix = <value optimized out>
#2 0x00007f681b209b8a in exaComposite (op=<value optimized out>, pSrc=0x2068830, pMask=0x0, pDst=0x2068a20, xSrc=<value optimized out>, ySrc=<value optimized out>, xMask=0, yMask=0, xDst=268, yDst=0, width=580,
height=28) at ../../exa/exa_render.c:1033
isSrcSolid = <value optimized out>
ret = <value optimized out>
saveMaskRepeat = 0
region = {extents = {x1 = -27072, y1 = 512, x2 = 0, y2 = 0}, data = 0x1a00370}
#3 0x00000000004c2880 in damageComposite (op=128 '\200', pSrc=<value optimized out>, pMask=<value optimized out>, pDst=0x2068a20, xSrc=30000, ySrc=0, xMask=<value optimized out>, yMask=<value optimized out>,
xDst=268, yDst=0, width=580, height=<value optimized out>) at ../../../miext/damage/damage.c:640
pScreen = <value optimized out>
#4 0x00000000004b5d79 in ProcRenderComposite (client=0x2009640) at ../../render/render.c:723
pSrc = 0x2068830
pMask = 0x0
pDst = 0x2068a20
#5 0x0000000000439fa9 in Dispatch () at ../../dix/dispatch.c:432
result = <value optimized out>
client = 0x2009640
nready = 0
start_tick = 117040
#6 0x000000000042165b in main (argc=8, argv=0x7fffd18b5c38, envp=<value optimized out>) at ../../dix/main.c:291
i = 1
alwaysCheckForInput = {0, 1}
It seems to be looping inside NV50EXAPrepareComposite (?)
Do you need any more data to this issue?
Thanks a lot for all your work!
Benjamin
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
More information about the Nouveau
mailing list