Bug#193127: xserver-xfree86: Radeon 7500 - dri hangs system with ALI motherboard
On Thu, May 15, 2003 at 08:58:32AM -0700, Elladan wrote:
> On Thu, May 15, 2003 at 11:39:25AM +0200, Michel D?nzer wrote:
>
> > Anyway, you may want to try the snapshots described in
> > http://dri.sourceforge.net/snapshots/README.Debian . You can even try
> > without AGP with those using Option "ForcePCIMode". You'll need to build
> > the DRM from drm-trunk-module-src though.
>
> If I can find some time, and a proper cable, I'll attempt to get some
> kernel information out through serial console, I guess.
Ok, I was able to grab some SysRQ information over serial console. I'm
not sure how useful it is, though. This is using a build of XFree
4.3.0, because it takes longer to crash...
>From what I was able to glean from it, it looks like the X server is
blocked in radeon_lock, and it looks like glxgears is stuck in a loop
doing a lot of ioctl(DRM_IOCTL_RADEON_GETPARAM) calls. This explains
the livelock in 4.3.0. 4.2 just crashes instead.
For kicks, I tried kill -BUS on XFree after killing glxgears. The
system seemed to take a second or two to lock up, and this was printed
on the console first:
[drm:radeon_cp_idle] *ERROR* radeon_cp_idle called without lock held
[drm] AGP 0.99 aperture @ 0xf0000000 128MB
[drm] Initialized radeon 1.7.0 20020828 on minor 0
PCI: Found IRQ 11 for device 01:00.0
PCI: Sharing IRQ 11 with 00:0c.0
SysRq : Show State
free sibling
task PC stack pid father child younger older
[...]
XFree86 S DBAC6560 0 752 685 (NOTLB)
Call Trace: [<e09069de>] [<e09068a3>] [<e0906800>] [<c0145e40>] [<c010733f>]
--> radeon_lock / radeon_ioctl / radeon_ioctl (??) / sys_ioctl /
system_call
glxgears R current 2656 760 755 (NOTLB)
Call Trace: [<c0145e14>] [<c010733f>]
--> sys_ioctl / system_call
SysRq : Show Regs
Pid: 760, comm: glxgears
EIP: 0023:[<4042f9ab>] CPU: 0 ESP: 002b:bffff9f0 EFLAGS: 00200246 Not tainted
EAX: 00000000 EBX: 42498000 ECX: c0086451 EDX: bffffa10
ESI: 40012898 EDI: 00400002 EBP: bffffa18 DS: 002b ES: 002b
CR0: 8005003b CR2: 4013da40 CR3: 1c22f000 CR4: 000006d0
If I strace glxgears, I find that the ioctl it's stuck in a loop on is:
ioctl(4, 0xc0086451, 0xbffffb50) returns 0
I looked up this ioctl, the call is:
ioctl(4, DRM_IOCTL_RADEON_GETPARAM, pointer);
Reply to: