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.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.
Solved! Go to 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
}
Thanks for reporting this issue. I've forwarded it to the linux driver team.
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
}
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
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!
++
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.
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.
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 ?
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