cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

nouvo09
Journeyman III

Linux:Unable to compile AMD/ATI fglrx kernel-modules under kernel 2.6.42.9.1

Here is the copy of the bug I have related on bugzilla.redhat.com: (bug Nr 802121)

Description of problem:

I own an ATI graphic card, and I use the AMD proprietary driver fglrx since

years.

Habitually when there is a new release of the kernel, DKMS automatically builds

the news modules.

This is impossible with the last 2.6.42.9.1 kernel.

To make the computer run I had to return back to te preceding one, 2.6.43.3.2

which compiles perfectly.

This AMD driver runs also perfectly on RHEL 6

Version-Release number of selected component (if applicable):

kernel/ kernel-devel 2.6.42.9.1

How reproducible:

Install an FC15 system and the proprietary AMD driver

with kernel  2.6.43.3.2, it compiles an runs

with the 2.6.42.9.1

it produces an error message, see below:

there is the same error trying to build the modules without dkms and compile

directly.

Actual results:

doesnt' work and fallback to the radeon driver

Expected results:

works and is able to run 3D and compiz aso

Additional info:

[Message] Kernel Module : Found kernel module build environment, generating

kernel module now.

AMD kernel module generator version 2.1

doing Makefile based build for kernel 2.6.x and higher

rm -rf *.c *.h *.o *.ko *.a .??* *.symvers

make -C /lib/modules/2.6.42.9-1.fc15.i686.PAE/build

SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules

make[1] : on entre dans le répertoire «

/usr/src/kernels/2.6.42.9-1.fc15.i686.PAE »

  CC   /lib/modules/fglrx/build_mod/2.6.x/firegl_public.o

/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function

‘KCL_fpu_begin’:

/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:5804:28: erreur:

‘TS_USEDFPU’ undeclared (first use in this function)

/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:5804:28: note: each

undeclared identifier is reported only once for each function it appears in

make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o] Erreur 1

make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] Erreur 2

make[1] : on quitte le répertoire « /usr/src/kernels/2.6.42.9-1.fc15.i686.PAE »

make: *** [kmod_build] Erreur 2

build failed with return value 2

and here is the reply of the redhat bugzilla team:

TS_USEDFPU was removed in the stable backport of Linus' FPU handling fixes.

The fglrx code will need to adapt to those changes.

0 Likes
1 Solution

This issue has been fixed already. Here is a patch you can apply to fix the issue:

diff -rup fglrx.orig/firegl_public.c fglrx/firegl_public.c

--- fglrx.orig/firegl_public.c  2012-03-07 20:01:43.846965234 +0100

+++ fglrx/firegl_public.c  2012-03-09 00:19:56.906176573 +0100

@@ -5799,12 +5799,21 @@ void ATI_API_CALL KCL_fpu_begin(void)

#ifdef CONFIG_X86_64

     kernel_fpu_begin();

#else

+#ifdef TS_USEDFPU

     struct thread_info *cur_task = current_thread_info();

     preempt_disable();

     if (cur_task->status & TS_USEDFPU)

__save_init_fpu(cur_task->task);

     else

clts();

+#else

+    struct task_struct *cur_task = current;

+    preempt_disable();

+    if (cur_task->thread.has_fpu)

+ __save_init_fpu(cur_task);

+    else

+        clts();

+#endif

#endif

}

View solution in original post

0 Likes
10 Replies

Thanks for reporting this issue. I've forwarded it to the linux driver team.

0 Likes

This issue has been fixed already. Here is a patch you can apply to fix the issue:

diff -rup fglrx.orig/firegl_public.c fglrx/firegl_public.c

--- fglrx.orig/firegl_public.c  2012-03-07 20:01:43.846965234 +0100

+++ fglrx/firegl_public.c  2012-03-09 00:19:56.906176573 +0100

@@ -5799,12 +5799,21 @@ void ATI_API_CALL KCL_fpu_begin(void)

#ifdef CONFIG_X86_64

     kernel_fpu_begin();

#else

+#ifdef TS_USEDFPU

     struct thread_info *cur_task = current_thread_info();

     preempt_disable();

     if (cur_task->status & TS_USEDFPU)

__save_init_fpu(cur_task->task);

     else

clts();

+#else

+    struct task_struct *cur_task = current;

+    preempt_disable();

+    if (cur_task->thread.has_fpu)

+ __save_init_fpu(cur_task);

+    else

+        clts();

+#endif

#endif

}

0 Likes

Thanks a lot for your reply and having resolved the issue.

btw I'don't know how to apply the patch, so when do you think that an update of the package will be out ?

regards

0 Likes

nouvo09,

The change will be in Catalyst 11.5.

The file you want to modify is located /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c

You can either modify the file manually, or put the diff above in a file and then run the command patch -p0 < <file> and that should patch the file and allow the module generator to generate the correct module.

Many thanks again.

I think I'll wait for the new catalyst!

++

0 Likes

Hi everybody

Finally I've just downloaded the last linux catalyst 12-03 .

But it is always impossible to compile the kmod again kernel > 2.6.42.3.2.

I've tried two versions of the kernel above this one and it doesn't work.

0 Likes

I've tried with catalyst 12-4 with release date 2012-04-25 but this problem is still present (kernel 2.6.43.2-6.fc15.i686.PAE).  Which release will contain this fix?

I tried to apply the patch.  It took a while to fix it up because the forum has mangled the white-space.  Would it be possible to provide it as an attachment in the future?  I needed to apply it with -p1 rather than -p0 since the fglrx directory doesn't exist.  The patch applied with some fuzz but then I couldn't figure out how to rebuild it.

Eventually, I managed to get the driver working by following the instructions here:

http://wiki.cchtml.com/index.php/Fedora_16_Installation_Guide

Other people might find that helpful.

Cheers, Neil.

0 Likes

Hi ant thanks for reporting the solution very helpull, of course

You indicate to issue the follwing command :

/bin/sh ./ati-installer.sh 8.95 --install

but where does this parameter '8.95' come from ? How can it be found ?

0 Likes

8.95 is the driver version number.  It can be found by running the following command.

head amd-driver-installer-12-2-x86.x86_64.run | grep label=

I'm not sure what happens if you get it wrong...

Cheers, Neil.

I was wrong: the command you gave returns "AMD Catalyst(TM) Proprietary Driver-8.961"

and when I installed the driver I indicated  8.95 and all  works perfectly. So we can say that it has no effect.

Thanks again

0 Likes