Troubleshooting

From cchtml.com
Revision as of 15:58, 14 May 2012 by 120.203.7.66 (Talk)

Jump to: navigation, search
Hello! cbbafaf interesting cbbafaf site! I'm really like it! Very, very cbbafaf good!

Very nice site!

Hello! kcdffee interesting kcdffee site! I'm really like it! Very, very kcdffee good!

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 }

References


Distribution Neutral Steps

Verifying | Configuring | Troubleshooting