Bug 19693 - R600+EXA: infinite loop when starting application in X
Summary: R600+EXA: infinite loop when starting application in X
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/radeonhd (show other bugs)
Version: 7.4 (2008.09)
Hardware: Other All
: medium normal
Assignee: Alex Deucher
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-01-22 14:04 UTC by Rafał Miłecki
Modified: 2009-01-29 14:23 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Xorg.0.log after starting X with xterm only (28.03 KB, text/plain)
2009-01-22 14:27 UTC, Rafał Miłecki
no flags Details
Xorg.0.log with messages about loop. (40.30 KB, text/plain)
2009-01-22 14:30 UTC, Rafał Miłecki
no flags Details
debugging patch I used for xf86-video-radeonhd (1.88 KB, text/plain)
2009-01-27 02:48 UTC, Rafał Miłecki
no flags Details
debugging patch I used for drm (820 bytes, text/plain)
2009-01-27 02:48 UTC, Rafał Miłecki
no flags Details
Xorg.0.log with debugging patches applied (11.27 KB, application/x-tar-gz)
2009-01-27 02:48 UTC, Rafał Miłecki
no flags Details

Description Rafał Miłecki 2009-01-22 14:04:55 UTC
01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series

I use openSUSE 11.1 which by default comes with 2.6.27.7 and X Server 1.5.2 (I didn't change kernel or X). Manually I installed:
1) xf86-video-radeonhd from git from r6xx-r7xx-support branch (0d6f45b70d9aa...)
2) libdrm.so.2.4.0 from git from r6xx-r7xx-support branch (fd3b361a540c4...)
3) drm.ko from git from r6xx-r7xx-support branch (fd3b361a540c4...)
4) radeon.ko from git from r6xx-r7xx-support branch (fd3b361a540c4...)

I made tests using:
Option       "AccelMethod" "exa"
Option       "DRI"

I can start plain X with "xterm" just fine. Using xterm I can start konsole and kcalc (KDE 3.5) without problem. I can even play some movie with mplayer using any: x11 and xv.

The problem happens when I start SMplayer or "qnapi" (small Qt 3 app). What happens then?
1) Display hangs after second or two (nothing changes anymore)
2) I can move cursor using touchpad but it doesn't move smoothly
3) Switching to VT doesn't work
4) CTRL+ALT+DEL doesn't do anything
5) The only escape is SysRq

I belive interesting part of Xorg.0.log is:
> [mi] EQ overflowing. The server is probably stuck in an infinite loop.
> [mi] mieqEnequeue: out-of-order valuator event; dropping.
Comment 1 Rafał Miłecki 2009-01-22 14:27:57 UTC
Created attachment 22156 [details]
Xorg.0.log after starting X with xterm only
Comment 2 Rafał Miłecki 2009-01-22 14:30:12 UTC
Created attachment 22157 [details]
Xorg.0.log with messages about loop.

I started in X+xterm problematic SMplayer, waited a little, then used SysRq to reboot and fianlly after reboot copied /var/log/Xorg.0.log to safe place, which now I attach.
Comment 3 jp fournier 2009-01-24 07:53:44 UTC
similar results for me after clicking though a few config screens in mythtv.  Xorg process seems run away.

root@vcr3:/home/jape# lspci -vv | grep HD
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon HD 3200 Graphics (prog-if 00 [VGA controller])

root@vcr3:/home/jape# top
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 5976 root      20   0  421m 109m  14m R  111  2.9  13:23.48 Xorg


root@vcr3:/home/jape# strace -p 5976
<snip>
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
ioctl(7, 0xc0286429, 0xbfad2d54)        = -1 EBUSY (Device or resource busy)
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
ioctl(7, 0xc0286429, 0xbfad2d54)        = -1 EBUSY (Device or resource busy)
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
ioctl(7, 0xc0286429, 0xbfad2d54)        = -1 EBUSY (Device or resource busy)
<snip>

root@vcr3:/tmp/drm# git status
# On branch r6xx-r7xx-support
nothing to commit (working directory clean)
root@vcr3:/tmp/drm# git show
commit 240b6ab7c7b244b5532d4ca8550954c6377815b9
Author: Alex Deucher <alexdeucher@gmail.com>
Date:   Fri Jan 23 01:47:59 2009 -0500
<snip>

qroot@vcr3:/tmp/xf86-video-radeonhd# git status
# On branch r6xx-r7xx-support                  
nothing to commit (working directory clean)    
root@vcr3:/tmp/xf86-video-radeonhd# git show   
commit 1fe819d7d42ca8f4f4be22e4505f14f0ec28106b
Author: Alex Deucher <alexdeucher@gmail.com>
Date:   Fri Jan 23 17:43:57 2009 -0500
<snip>


root@vcr3:/tmp/xf86-video-radeonhd# dmesg | grep drm
[   38.478284] [drm] Initialized drm 1.1.0 20060810
[   38.561757] [drm] Initialized radeon 1.29.0 20080613 on minor 0
[   42.872282] [drm] Setting GART location based on new memory map
[   42.888171] [drm] Loading RS780 CP Microcode
[   42.889074] [drm] Loading RS780 PFP Microcode
[   42.904218] [drm] Resetting GPU
[   42.904275] [drm] writeback test succeeded in 1 usecs
root@vcr3:/tmp/xf86-video-radeonhd#

xorg info:

X.Org X Server 1.4.0.90
Release Date: 5 September 2007
X Protocol Version 11, Revision 0
Build Operating System: Linux Ubuntu (xorg-server 2:1.4.1~git20080131-1ubuntu9.2)




Comment 4 Rafał Miłecki 2009-01-27 02:42:33 UTC
I made little debugging. Normally on plain X R600PrepareSolid is called from time to time and it works fine. When I start SMplayer R600PrepareSolid is also called but in never returns. R600PrepareSolid sub-calls RHDDRMCPBuffer and that RHDDRMCPBuffer lockups in "for" loop.

This "for" loop starts counting from 0 to 2000000 and every drmDMA() call takes 0.1 sec. As the result system lockups.

Unfortunately I have no idea why ioctl used in drmDMA() takes that 0.1 sec and why RHDDRMCPBuffer can't find ret==0 in few hundreds of calls.
Comment 5 Rafał Miłecki 2009-01-27 02:48:11 UTC
Created attachment 22270 [details]
debugging patch I used for xf86-video-radeonhd
Comment 6 Rafał Miłecki 2009-01-27 02:48:28 UTC
Created attachment 22271 [details]
debugging patch I used for drm
Comment 7 Rafał Miłecki 2009-01-27 02:48:51 UTC
Created attachment 22272 [details]
Xorg.0.log with debugging patches applied
Comment 8 Rafał Miłecki 2009-01-27 07:07:54 UTC
I tried Option "EXANoComposite" "true" and it was respected fine:
> (**) RADEONHD(0): EXA: Disabling Composite operation (RENDER acceleration)
but didn't help. The only difference comparing to my patched system is that I got a few
> [mi] EQ overflowing. The server is probably stuck in an infinite loop.
> [mi] mieqEnequeue: out-of-order valuator event; dropping.
with disabled Composite.

Btw. reassigning as libv and agd5f said on IRC.
Comment 9 Alex Deucher 2009-01-29 12:42:19 UTC
Please try again with the latest code from the r6xx-r7xx-support branches of the drm and radeonhd.
Comment 10 Rafał Miłecki 2009-01-29 14:23:51 UTC
With current git (radeonhd and drm module) it doesn't lockup anymore! Screen is one huge corruption but I doesn't hang my system :) Thanks.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.