Bug 19874 - R600+EXA: infinite loop when starting application in KDE
Summary: R600+EXA: infinite loop when starting application in KDE
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-02-01 03:43 UTC by Rafał Miłecki
Modified: 2009-02-10 14:38 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Rafał Miłecki 2009-02-01 03:43:14 UTC
This is very similar to bug #19693, just a few differences.

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
(656edee0e177f...)
2) drm.ko from git from r6xx-r7xx-support branch (ba4e9f6397c630...)
3) radeon.ko from git from r6xx-r7xx-support branch (ba4e9f6397c630...)

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

This time I can start plain X with xterm and run SMplayer without hanging system. There are some small EXA corruptions (lacking letters + opened menu isn't displayed until I hover all it's positions) but generally it works.

I can start KDE 3.5 but there it's worse. Just after starting I see many corruptions (some black letters instead of white and many weird-color rectangles hovering icons and quite always starting from top left) and I can not start any application. When I try to start SMplayer or Konsole, system hangs.

Part of Xorg.0.log:
> [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-02-01 03:46:16 UTC
The lockup happens in the same place, as in case of bug #19693:
> 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.
Comment 2 Rafał Miłecki 2009-02-10 14:38:08 UTC
Bug smashed with just one simple patch. Thank you Alex!

http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/commit/?id=85e406dd


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.