This problem was observed on a IBM ThinkPad R40
notebook with built-in Mobility Radeon M7 LW (7500 /
rv200) and Intel i855PM "Centrino" AGP Controller
running kernel 2.4.20 (w/ i855PM patch rom LKML),
XFree86 4.3.0 and radeon-20030613-linux.i386:
When X (and kdm) start for the first time, agpgart and
the radeon module are loaded. DRI and GLX work flawlessly.
If X is restarted, however, DRM cannot be initialized
fully because AGP is "not available".
Error messages can be found in XFree86.0.log and syslog:
-----snip from syslog ------
Jun 16 22:21:15 pi4think kernel: [drm:radeon_cp_init]
*ERROR* radeon_cp_init called without lock held
Jun 16 22:21:15 pi4think kernel: [drm:radeon_unlock]
*ERROR* Process 4865 using kernel context 0
The process mentioned (PID 4865) is the new X process, BTW.
----- snip from XFree86.0.log -----
drmOpenDevice: minor is 0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 6, (OK)
drmGetBusid returned ''
(II) RADEON(0): [drm] created "radeon" driver at busid
(II) RADEON(0): [drm] added 8192 byte SAREA at 0x629cb000
(II) RADEON(0): [drm] mapped SAREA 0x629cb000 to 0x15573000
(II) RADEON(0): [drm] framebuffer handle = 0xe0000000
(II) RADEON(0): [drm] added 1 reserved context for kernel
(WW) RADEON(0): [agp] AGP not available
It is not necessary to log in or execute any
applications to provoke that problem. A simple "rcxdm
start && rcxdm stop && rcxdm start" is sufficient.
If I remove the radeon module between stop and start of
X, then everything behaves nicely. The agpgart module
may stay loaded.
So is this a problem with the radeon module not
"releasing" the agp bus? (I really have no idea about
the inner workings of dri...)
Any help would be appreciated! I'll be happy to do some
testing and/or provide more detailed information if