I have been trying to install the latest AMD drivers on my Linux machine, but after getting it to compile I am greeted with this message:
modprobe: ERROR: could not insert 'fglrx': Unknown symbol in module, or unknown parameter (see dmesg) failed.
Please note that I am not too good at this Linux thing, because I am more of a BSD native.
Situational details
- Arch Linux, x86_64, release 2016.01.01
- Kernel version: 4.3.3-2
- AMD Radeon R9 290x
- Crimson, fglrx 15.302
Done so far
In the beginning the installation script was not even getting to the EULA part, because I had to install the kernel-headers
package. At this point I actually could start trying to install it.
Just running the script gave me an error:
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:634:9: error: void value not ignored as it ought to be
len = seq_printf(m, "%d\n", major);
^
After some minor googling I found this solution, and executed manually /usr/lib/modules/fglrx/build_mod/make.sh
But the compilation ended with these message:
WARNING: "mtrr_add" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
WARNING: "mtrr_del" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
Of course, you are supposed to ignore the warning and so I proceeded to just installing the compiled modules ... which resulted in message:
modprobe: ERROR: could not insert 'fglrx': Unknown symbol in module, or unknown parameter (see dmesg) failed.
After taking a look at dmesg, I see the following lines:
[ 2848.332722] fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.
[ 2848.332725] Disabling lock debugging due to kernel taint
[ 2848.343063] fglrx: Unknown symbol mtrr_del (err 0)
[ 2848.343114] fglrx: Unknown symbol mtrr_add (err 0)
Some googling lead me to this mail list message: https://patchwork.ozlabs.org/patch/510277/ which mentions the removal of mtrr_add()
on basis of it being somehow bad:
The crusade to replace mtrr_add() with architecture agnostic arch_phys_wc_add() is complete, this will ensure write-combining implementations (PAT on x86) is taken advantage instead of using MTRR. With the crusade done now, hide direct MTRR access for drivers.
So, what should I do now?
I have no idea how to proceed at this point? Should I be diffing at the source, looking for functions using mtrr_add
and mtrr_del
? Is there some patch I should be applying? Is it all just a big failure and I should give up?
seq_printf
call anyway) up to Linux 4.2. AMD says it’s compatible up to 3.19. So you’ll have to use an older kernel branch.