AW: Cannot get DRI to work

Hendrik Friedel hen_mail at
Fri Dec 12 15:04:59 PST 2008

Hello Beso,

Thanks for your strong support.
I'll try to answer your points:
1) Sorry, but I don't know when the libdrm modules are compiled. I've not
compiled a new kernel on this installation, so if the modules are compiled
with the kernel, then it should be still the right modules
2/3) I copied your recommended settings to my xorg.conf.
Option "BusType" "AGP"
Option "MaxGARTSize" "integer" # the one you set in the bios and the kernel
finds out.
Option "UseInternalAGPGART" "no"
Option "KernelModuleParm" "agplock=0" # then try unsupported
Option "AGPv3Mask"   "0x00000001"  # disable 8x and 4x agp
Option "AGPv3Mask"  "0x00000002"
Option "AGPMask"  "0x00000010" # disable fast writes and 4x and 2x support
Option "AGPMask"  "0x00000004"
Option "AGPMask" "0x00000002"
Option        "DRI" "true"
Option        "mtrr" "on"
Option        "AccelMethod" "EXA"

a) no. Loading the module gives no direct error, but dmesg:
uvesafb: mode switch failed (eax=0x14f, err=0)
[drm:radeon_cp_init] *ERROR* radeon_cp_init called without lock held
[drm:drm_unlock] *ERROR* Process 31612 using kernel context 0
uvesafb: mode switch failed (eax=0x14f, err=0)

If I restart X now, nothing has changed.

b) I have no direct assess (only ssh) currently. I'll do that tomorrow.

Regarding the resolution: The FullHD resolution works with this card.
Regarding the framebuffer: I can't find an option for the ATI-Framebuffer in
my kernel settings (attached).


-----Ursprüngliche Nachricht-----
Von: givemesugarr at [mailto:givemesugarr at] 
Gesendet: Freitag, 12. Dezember 2008 22:48
An: Hendrik Friedel
Betreff: Re: Cannot get DRI to work

i have some observations:
1. have you compile the libdrm modules for the kernel you're using?!

2. try using the mtrr registers to map the memory. it's somehow faster than
without it
  Option        "mtrr" "on"                             #enables mtrr
3. i'd also use the following optimizations:
  Option        "AccelMethod" "EXA"                   # uses exa by
default (faster than xaa)
  Option        "DRI" "true"                                  # tells to use
  Option        "no_accel" "no"                            # tells to
use hw accel if possible
  Option        "DynamicClocks" "on"                  # enables the
dynamic scaling for power handling
  Option        "AccelDFS" "true"                        # i don't
know what this does but it's a remnant that

# doesn't seem to influence the fps
  Option        "EnableDepthMoves" "yes"           # enables depth
moves (i don't know if it's still used)

# another old remnant that doesn't influence fps
  Option        "RenderAccel" "true"                     # this
enables render acceleration. it needs dri and it's slow,

# but very cool as user experience.
now coming to your settings:
a. do you force the loading of the drm? the latest xorg versions and with
newer kernels don't seem able to automatically load the drm module by
themselves. i have to force the loading of drm and radeon at startup or have
X hang. i still haven't figured this out (the 2.6.26 introduced this issue).
b. from your dmesg and xorg log it seems that you have a 8mb gart aperture.
in the bios you should be able to see the real value, but i don't seem to
see the agpgart aperture identified by the kernel from the dmesg you've
attached. anyway verify in the bios that your agp aperture is really set.
this link indicates how to set them in the better way:
the kernel should find the gart aperture in the correct way after setting
this. check if you have the agpgart compiled in the kernel not as module.
you should have most likely an aperture of 32 mb or if you're lucky of 64mb.
c. why are you forcing radeon to use the internal agp driver? try removing
that option, since if i recall well it's the right one to use when using
fglrx. this option forces the driver not to use the kernel drm module, but
the driver one. now find out your agp version and try tweaking the following

Option "AGPMask" "integer"

    This option applies to AGPv1/2. To handle an AGPv3 interface, you will
additionally need Option "AGPv3Mask".
    Value 	Effect
    "0x00000001" 	Disable AGP 1x (forces 2x or 4x).
    "0x00000002" 	Disable AGP 2x (forces 1x or 4x).
    "0x00000004" 	Disable AGP 4x (forces 1x or 2x).
    "0x00000010" 	Disable fast-writes.
    "0x00000200" 	Disable sidebanding.

    To combine several settings, only add the values. Let me show an
example: "0x00000216" means: force AGP 1x (disable AGP 2x and 4x), disable
fast-writes and sidebanding.

    You can check, if fast-writes has been disabled by searching your kernel
log for 'AgpCommand = hex-integer'. The second last hex digit should be 0
(zero) if fast-writes is off, or 1 (one) if it is on.
Option "AGPv3Mask" "integer"

    This option only applies to AGPv3.
    [Important] 	Important

    It is used in addition to Option "AGPMask". That means, that you turn
off fast-writes or sidebanding with Option "AGPMask".
    Value 	Effect
    "0x00000001" 	Disable AGP 4x (forces 8x).
    "0x00000002" 	Disable AGP 8x (forces 4x).

also set the bus type to agp with the following:

Option "BusType" "string"

    This option allows to overwrite the detected bus type. Use it, when the
drivers bus detection is incorrect or when you want to force an AGP card to
PCI bus. The default situation is, that the driver auto-detects the bus
type. Possible values for this option are:
    Value 	Effect
    "AGP" 	AGP bus.
    "PCI" 	PCI bus.
    "PCIE" 	PCI Express bus (fallback: PCI).
    [Caution] 	Caution

    NEVER try to force a PCI card to AGP bus.

and then try tweking with the following kernel options:

Option "KernelModuleParm" "string"

    If you change this option during runtime, you have to remove and reload
the fglrx kernel module with rmmod fglrx && modprobe fglrx (see modprobe(8),
rmmod(8)). Possible values you can provide with this option are (separate
them by semicolon):
    Parameter 	Mode
    "agplock=0" 	Disable AGP locked user pages.
    "agplock=1" 	Enable AGP locked user pages (default).
    "agpgart=0" 	Use built-in AGP GART support.
    "agpgart=2" 	Same, but only if no agpgart module is loaded.
    "agpgart=3" 	Disable built-in AGP GART support.
    "agp_try_unsupported=1" 	Try unsupported chipsets [1].
    "debug=0" 	Turn debugging off.
    "debug=1" 	Turn debugging on.
    "debug=0x00040003" 	???
    "maxlockedmem=256" 	Maximum locked DMA (Direct Memory Access) memory in
    "noauth" 	???
    "su_flags=0xdead0003" 	Recognize card as FireGL model and enable
[Note] 	Note

If neither the built-in nor the kernel AGPGart support work, you can use [1]
as a fallback.

the following tells the driver how much memory to use:
Option "MaxGARTSize" "integer"

    Configure the ATI AGP GART (Graphic Address Remapping Table) size.

if you don't know how useinternalagp functions this is the explanation:

Option "UseInternalAGPGART" "boolean"

    Enable or disable the usage of an internal agpgart module. If you set
this option to "yes", the driver will not use the kernel's AGPGart module.
Instead it will make use of the "built-in" AGP support. The default is "no",
as long as the graphics driver's kernel module detects the presence of an
agpgart kernel module.
    [Warning] 	Warning

    If you set this option to "yes" you must ensure, that you don't have the
kernel AGP support compiled in. Instead compile it as modules.

    The AGP support in the driver may not always work, depending on the type
of motherboard and/or card that you have. But there is a possibility, which
maybe still works. Refer to the "agp_try_unsupported=1" value for Option

now getting to what i'd try first the following:
Option "BusType" "AGP"
Option "MaxGARTSize" "integer" # the one you set in the bios and the kernel
finds out.
Option "UseInternalAGPGART" "no"
Option "KernelModuleParm" "agplock=0" # then try unsupported
Option "AGPv3Mask"   "0x00000001"  # disable 8x and 4x agp
Option "AGPv3Mask"  "0x00000002"
Option "AGPMask"  "0x00000010" # disable fast writes and 4x and 2x support
Option "AGPMask"  "0x00000004"
Option "AGPMask" "0x00000002"
Option        "DRI" "true"
Option        "mtrr" "on"
Option        "AccelMethod" "EXA"

then i'd add the following modes to your monitor:
1280x1024 1024x768 800x600 (i'm not sure that the 9250 agp can do 1920x1080)
then remove the ati framebuffer from the kernel since it only gives problems
and force the vesafb at boot.
these options should do to set up a normal agp 1x mode and should succed as
far as the kernel detects the right agp aperture. if it doesn't detect it
the problem is somewhere there.
after that tweaking the agp options should give you an improved experience.

dott. ing. beso
Eingehende eMail ist virenfrei.
Von AVG überprüft -
Version: 8.0.176 / Virendatenbank: 270.9.17/1844 - Ausgabedatum: 12.12.2008
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config
Type: application/octet-stream
Size: 57453 bytes
Desc: not available
URL: <>

More information about the xorg mailing list