Changes

Jump to: navigation, search

Troubleshooting

2,008 bytes added, 14:36, 9 March 2012
no edit summary
"UseInternalAGPGART" "yes"
(10/2011, on cat-11.9, ATI 6300 aka 9803)
 
 
==AMD installer script completes, fglrx X driver loads, fglrxinfo reports error==
 
Xorg.log reports 2d/3d acceleration disabled, DRI disabled and uki errors related to /proc/ati files. AMD control panel works.
 
This can happen if there is a problem w/ the AMD installer compiling the fglrx.ko kernel module. The installation completes anyway with the fglrx Xorg driver in place. As per 2.6.42.9 and the 12.1 AMD driver there was a compile error in/usr/src/fglrx-8.93/firegl_public.c, due to TS_USEDFPU macro not being defined. Other compile-time errors will produce a similar problem. Check the contents of /usr/share/ati/fglrx-install.log, note if there was a compile error. If so, re-running the AMD installer will not fix the problem since the compile error will just recur. Likewise, patching the bug ie
 
http://phoronix.com/forums/showthread.php?68922-Patch-to-compile-fgrlx-module-on-Linux-3-3-rc4-with-x86-32-bit-arch
 
and then reinstalling won't help either since the installer re-extracts the source from the archive. To fix, apply whatever fix is required to the sourcecode that the installer leaves in /usr/src/fglrx-xxx and use dkms to compile and install the driver.
 
dkms add fglrx/8.93 /usr/src/fglrx-8.93
dkms build fglrx/8.93
dkms install fglrx/8.93
 
Apply fixes to the fglrx source and repeat the dkms build step until the build completes, then install & reboot. Check lsmod output to see if fglrx.ko is loaded, confirm DRI and proc stuff in Xorg.log is working.
 
In the 2.6.42.9 w/ 12.1 bug case, the fix is to add the TS_USEDFPU ifdef in firegl_public.c as below;
 
void ATI_API_CALL KCL_fpu_begin(void)
{
#ifdef CONFIG_X86_64
kernel_fpu_begin();
#else
#ifndef TS_USEDFPU
preempt_disable();
if (__thread_has_fpu(current))
__save_init_fpu(current);
#else
struct thread_info *cur_task = current_thread_info();
preempt_disable();
if (cur_task->status & TS_USEDFPU)
__save_init_fpu(cur_task->task);
#endif
else
clts();
#endif
}
 
 
 
Anonymous user

Navigation menu