Radeon drivers causing XOrg freeze with 3D graphics?

I’m having a few problems with XOrg freezing while playing World of Goo (not the worlds most intense game for graphics, but seemingly too much for my rig).

I initially posted on the developer’s forums, but they said a full X freeze wouldn’t be the game. Testing with BZFlag got me a full Xorg freeze even quicker than with WoG. Later I even tried glxgears to see how well it ran and even that froze the system! My only way of recovering is SysReq-REISUB.

Specs/system details:
2.4GHz Core 2 Duo (E6600)
2GB RAM
Radeon X1950XTX using the open source drivers
openSUSE 11.2 (64-bit - patched up to date and without an xorg.conf)
Kernel 2.6.31.5-0.1-desktop
Gnome desktop (2.28)
Compiz with Emerald
Goodmans HD Ready TV as a monitor @ 1360x768 (the wife let me bring the computer inside for Christmas :slight_smile: )

Behaviour:
Run anything that uses 3D graphics (other than Compiz, which is strangely immune) and start playing (or, in the case of glxgears, just let it run). Wait between 1s and 15 min until everything freezes and becomes unresponsive. Occasionally the mouse will still move but nothing else will respond (can’t click between apps, can’t drop to a different virtual terminal, can’t restart X, can’t do anything but SysReq combos).

Tests
I’ve SSHed in to the machine to watch “top” and the games run at about 30% until the freeze, when they max out a core at 100%.

I’ve tried adding “acpi=off” to my grub arguments (found as a suggestion in a discussion somewhere) and I got an error about being unable to insert “thermal.???” (can’t remember the file name)

I’ve tried adding “pci=noacpi” to my grub arguments (same as above - found it and thought I’d give it a try) and ended up with a continuous list of errors about being unable to find the “system” volume group.

I would try the official drivers, but the X1950 is legacy now and the old drivers aren’t built for openSUSE and the AMD download hasn’t been updated since March.

“lsmod|grep radeon” shows radeon rather than radeonhd, but “grep -i radeon /var/log/Xorg.0.log” shows “(II) Loading /usr/lib64/xorg/modules//drivers/radeonhd_drv.so”, “(II) Loading /usr/lib64/xorg/modules//drivers/radeon_drv.so” and a big long list of mode lines prefixed with “RADEONHD”.

So, is there a fix for the huge instability with 3D graphics, or am I stuck between a rock and a hard place with the options of outdated official drivers that may not work with the latest kernels (and would need manually rebuilding even if they did) or flakey open drivers that are guaranteed to freeze at some point, it is just a matter of when?

Thanks.

Weirder and weirder.

I just tried runnin SaX2 to build an Xorg config file rather than auto-configuring. The only change I made was to make the resolution match my display (1360x768 instead of 1280x1024) and it defaulted to “radeonhd”, which is presumably what auto-configure uses as lsmod still reported “radeon” (even though the Radeon wiki page says RadeonHD should report radeonhd).

I restarted X and Compiz didn’t auto-load when I logged in (although it started fine when I ran fusion-icon), my processor was churning at ~50% on both cores and “top” was only reporting 20% user process usage. Diffing the output of glxinfo gives no difference between with and without a config file. prepare_preload seemed to have appeared and be eating 75% of a processor. Delete the config file and restarting X gets me back to minimal processor usage but seemingly the same configuration.

This is very strange. I don’t think it’s necessarily a problem of radeonhd vs. radeon, since your card has an R500 series chip in it, so it should work under radeonhd. I don’t use the radeonhd driver though, so someone else who does could probably contribute something more useful here.

Try grepping your Xorg.0.log (and any older logs) for (EE) to see if that gives any more information. You can also type ‘glxinfo’ to see if anything looks like it’s broken. In particular, the command:

glxinfo | grep “direct rendering”

Should return: “direct rendering: Yes”

I’m getting direct rendering (grepping returns “yes” and 3D stuff can run for a few seconds) but it just freezes. My wife has had Windows reboot on her recently then BIOS beeped on restart, so it could be a bad card.

I’ve swapped it out for a GeForce 7900 temporarily (lower power, but good enough for most of what I need) and it has been stable for an hour tonight, which the Radeon wouldn’t have been, but that was using the proprietary drivers (since nVidia still support the card).

I can’t grep the XOrg log at the moment, since I’ve swapped the cards, but the last I tried it didn’t show anything obvious for EE and WW only showed warnings about not finding fglrx and other earlier warnings. The last lines in the log were generally all of the mode lines that I mentioned, and dmesg didn’t show anything from my SSH session either.

Been doing some poking while my son naps (ah, the life of a 19 month old!) and it is strange to say the least. We’ve removed the TV and swapped back to a 19" monitor now and the Windows side seemed stable last night but the Linux side is no better.

Auto-generating a config using “Xorg -configure” gives lots of junk. It defaults to the radeonhd driver, but that still freezes with 3D. lsmod also still reports “radeon”.

Changing the driver to “radeon” seems to fix the 3D (glxgears ran for about a minute without freezing X, rather than triggering it within 5s max) but I’m constantly at 50%+ CPU usage on both cores, which is obviously not right. lsmod again reports “radeon”.

Here’s the config I’m using. The only changes from default were removing “vnc”, since the log warned it couldn’t find it, and changing the driver. I would have used SaX2, but its config was even more cluttered in places and seemed to be lacking in other areas.

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/lib64/xorg/modules/updates"
	ModulePath   "/usr/lib64/xorg/modules"
	FontPath     "/usr/share/fonts/misc:unscaled"
	FontPath     "/usr/share/fonts/truetype/"
	FontPath     "/usr/share/fonts/TTF/"
	FontPath     "/usr/share/fonts/OTF"
	FontPath     "/usr/share/fonts/Type1/"
	FontPath     "/usr/share/fonts/100dpi:unscaled"
	FontPath     "/usr/share/fonts/75dpi:unscaled"
EndSection

Section "Module"
	Load  "dri2"
	Load  "glx"
	Load  "extmod"
	Load  "dri"
	Load  "dbe"
	Load  "record"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "NoAccel"            	# <bool>]
        #Option     "AccelMethod"        	# <str>]
        #Option     "offscreensize"      	# <str>]
        #Option     "SWcursor"           	# <bool>]
        #Option     "ignoreconnector"    	# <str>]
        #Option     "forcereduced"       	# <bool>]
        #Option     "forcedpi"           	# <i>
        #Option     "useconfiguredmonitor" 	# <bool>]
        #Option     "HPD"                	# <str>
        #Option     "NoRandr"            	# <bool>]
        #Option     "RROutputOrder"      	# <str>]
        #Option     "DRI"                	# <bool>]
        #Option     "TVMode"             	# <str>]
        #Option     "ScaleType"          	# <str>]
        #Option     "UseAtomBIOS"        	# <bool>]
        #Option     "AtomBIOS"           	# <str>]
        #Option     "UnverifiedFeatures" 	# <bool>]
        #Option     "Audio"              	# <bool>]
        #Option     "AudioStreamSilence" 	# <str>]
        #Option     "HDMI"               	# <str>]
        #Option     "COHERENT"           	# <str>]
        #Option     "ForceLowPowerMode"  	# <bool>]
        #Option     "LowPowerModeEngineClock" 	# <i>
	Identifier  "Card0"
	Driver      "radeon"
	VendorName  "Unknown Vendor"
	BoardName   "Unknown Board"
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Does that help anyone come up with ideas in any way?

Thanks.

Tack this on the end of that xorg.conf and see what happens:

Section "DRI"
        Mode 0666
EndSection

I’m pretty sure you need that in order for 3D to work properly.

I actually moved across to a SaX2 config (I checked again and it does the modelines correctly, even if it does have too many font dirs) and it already includes that section. My config is now:

# /.../
# SaX generated X11 config file
# Created on: 2010-01-03T15:53:32+0000.
#
# Version: 8.1
# Contact: Marcus Schaefer <sax@suse.de>, 2005
# Contact: SaX-User list <https://lists.berlios.de/mailman/listinfo/sax-users>
#
# Automatically generated by [ISaX] (8.1)
# PLEASE DO NOT EDIT THIS FILE!
#
Section "Files"
  FontPath     "/usr/share/fonts/misc:unscaled"
  FontPath     "/usr/share/fonts/local"
  FontPath     "/usr/share/fonts/75dpi:unscaled"
  FontPath     "/usr/share/fonts/100dpi:unscaled"
  FontPath     "/usr/share/fonts/Type1"
  FontPath     "/usr/share/fonts/URW"
  FontPath     "/usr/share/fonts/Speedo"
  FontPath     "/usr/share/fonts/PEX"
  FontPath     "/usr/share/fonts/cyrillic"
  FontPath     "/usr/share/fonts/latin2/misc:unscaled"
  FontPath     "/usr/share/fonts/latin2/75dpi:unscaled"
  FontPath     "/usr/share/fonts/latin2/100dpi:unscaled"
  FontPath     "/usr/share/fonts/latin2/Type1"
  FontPath     "/usr/share/fonts/latin7/75dpi:unscaled"
  FontPath     "/usr/share/fonts/baekmuk:unscaled"
  FontPath     "/usr/share/fonts/japanese:unscaled"
  FontPath     "/usr/share/fonts/kwintv"
  FontPath     "/usr/share/fonts/truetype"
  FontPath     "/usr/share/fonts/uni:unscaled"
  FontPath     "/usr/share/fonts/CID"
  FontPath     "/usr/share/fonts/ucs/misc:unscaled"
  FontPath     "/usr/share/fonts/ucs/75dpi:unscaled"
  FontPath     "/usr/share/fonts/ucs/100dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/misc:unscaled"
  FontPath     "/usr/share/fonts/hellas/75dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/100dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/Type1"
  FontPath     "/usr/share/fonts/misc/sgi:unscaled"
  FontPath     "/usr/share/fonts/xtest"
  FontPath     "/opt/kde3/share/fonts"
  InputDevices "/dev/gpmdata"
  InputDevices "/dev/input/mice"
EndSection

Section "ServerFlags"
  Option       "AllowMouseOpenFail" "on"
  Option       "ZapWarning" "on"
EndSection

Section "Module"
  Load         "dri"
  Load         "dbe"
  Load         "extmod"
  Load         "glx"
EndSection

Section "InputDevice"
  # Driver "kbd" will be disabled unless 'Option "AutoAddDevices" "off"' 
  # is set in "ServerFlags" section. 
  Driver       "kbd"
  Identifier   "Keyboard[0]"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "gb"
  Option       "XkbModel" "microsoftpro"
  Option       "XkbRules" "xfree86"
EndSection

Section "InputDevice"
  # Driver "mouse" will be disabled unless 'Option "AutoAddDevices" "off"' 
  # is set in "ServerFlags" section. 
  Driver       "mouse"
  Identifier   "Mouse[1]"
  Option       "Buttons" "5"
  Option       "Device" "/dev/input/mice"
  Option       "Name" "ImPS/2 Logitech Wheel Mouse"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Sysp"
  Option       "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
  DisplaySize  340 270
  HorizSync    29-64
  Identifier   "Monitor[0]"
  ModelName    "1280X1024@60HZ"
  Option       "DPMS"
  Option       "PreferredMode" "1280x1024"
  VendorName   "--> VESA"
  VertRefresh  50-60
  UseModes     "Modes[0]"
EndSection

Section "Modes"
  Identifier   "Modes[0]"
  Modeline 	"1280x960" 102.10 1280 1360 1496 1712 960 961 964 994
  Modeline 	"1280x800" 83.46 1280 1344 1480 1680 800 801 804 828
  Modeline 	"1152x864" 81.62 1152 1216 1336 1520 864 865 868 895
  Modeline 	"1280x768" 80.14 1280 1344 1480 1680 768 769 772 795
  Modeline 	"1280x720" 74.48 1280 1336 1472 1664 720 721 724 746
  Modeline 	"1024x768" 64.11 1024 1080 1184 1344 768 769 772 795
  Modeline 	"1280x600" 61.50 1280 1336 1464 1648 600 601 604 622
  Modeline 	"1024x600" 48.96 1024 1064 1168 1312 600 601 604 622
  Modeline 	"800x600" 38.22 800 832 912 1024 600 601 604 622
  Modeline 	"768x576" 34.96 768 792 872 976 576 577 580 597
  Modeline 	"640x480" 23.86 640 656 720 800 480 481 484 497
  Modeline 	"1280x1024" 108.00 1280 1344 1456 1704 1024 1025 1028 1066
EndSection

Section "Screen"
  DefaultDepth 24
  SubSection "Display"
    Depth      15
    Modes      "1280x1024" "1280x960" "1280x800" "1152x864" "1280x768" "1280x720" "1024x768" "1280x600" "1024x600" "800x600" "768x576" "640x480" 
    Virtual    3840 1200
  EndSubSection
  SubSection "Display"
    Depth      16
    Modes      "1280x1024" "1280x960" "1280x800" "1152x864" "1280x768" "1280x720" "1024x768" "1280x600" "1024x600" "800x600" "768x576" "640x480" 
    Virtual    3840 1200
  EndSubSection
  SubSection "Display"
    Depth      24
    Modes      "1280x1024" "1280x960" "1280x800" "1152x864" "1280x768" "1280x720" "1024x768" "1280x600" "1024x600" "800x600" "768x576" "640x480" 
    Virtual    3840 1200
  EndSubSection
  SubSection "Display"
    Depth      8
    Modes      "1280x1024" "1280x960" "1280x800" "1152x864" "1280x768" "1280x720" "1024x768" "1280x600" "1024x600" "800x600" "768x576" "640x480" 
    Virtual    3840 1200
  EndSubSection
  Device       "Device[0]"
  Identifier   "Screen[0]"
  Monitor      "Monitor[0]"
EndSection

Section "Device"
  BoardName    "Radeon X1950"
  Driver       "radeon"
  Identifier   "Device[0]"
  Option       "monitor-DVI-0" "Monitor[0]"
  VendorName   "ATI"
Option       "AccelMethod" "EXA"
EndSection

Section "ServerLayout"
  Identifier   "Layout[all]"
  InputDevice  "Keyboard[0]" "CoreKeyboard"
  InputDevice  "Mouse[1]" "CorePointer"
  Option       "Clone" "off"
  Option       "Xinerama" "off"
  Screen       "Screen[0]"
EndSection

Section "DRI"
    Group      "video"
    Mode       0660
EndSection

Section "Extensions"
EndSection

and I’m always running at 50% CPU usage on both cores (not just average, both of them floating between about 50-60% when ‘idle’)