FS#47092 - [nvidia-304xx] unknown symbol in modules for Linux 4.3 series
Attached to Project:
Arch Linux
Opened by John (graysky) - Tuesday, 17 November 2015, 09:40 GMT
Last edited by Felix Yan (felixonmars) - Saturday, 13 February 2016, 15:09 GMT
Opened by John (graysky) - Tuesday, 17 November 2015, 09:40 GMT
Last edited by Felix Yan (felixonmars) - Saturday, 13 February 2016, 15:09 GMT
|
Details
The 304.128-5 packages provided in [testing] do not work.
Error below. True for both Arches.
# modprobe -v nvidia insmod /lib/modules/4.3.0-1-ARCH/extramodules/nvidia.ko.gz modprobe: ERROR: could not insert 'nvidia': Unknown symbol in module, or unknown parameter (see dmesg) [ 22.236809] nvidia: Unknown symbol mtrr_del (err 0) [ 22.237073] nvidia: Unknown symbol mtrr_add (err 0) |
This task depends upon
Closed by Felix Yan (felixonmars)
Saturday, 13 February 2016, 15:09 GMT
Reason for closing: Fixed
Additional comments about closing: 304.131-6
Saturday, 13 February 2016, 15:09 GMT
Reason for closing: Fixed
Additional comments about closing: 304.131-6
# modprobe nvidia
modprobe: ERROR: could not insert 'nvidia': Unknown symbol in module, or unknown parameter (see dmesg)
% dmesg -t
...
nvidia: Unknown symbol mtrr_del (err 0)
nvidia: Unknown symbol mtrr_add (err 0)
There's a patch (hack) provided on Kodi's forum that addresses the problem. I don't know enough about the kernel interface, please have a look and maybe consider to add it to our 4.3 kernel?
http://forum.kodi.tv/showthread.php?tid=238393&page=7
I am not going to judge if it is legal or not to export this function as GPL.
# modprobe nvidia
modprobe: ERROR: could not insert 'nvidia': Unknown symbol in module, or unknown parameter (see dmesg)
# demsg
...
[ 271.264158] nvidia: Unknown symbol mtrr_del (err 0)
[ 271.264429] nvidia: Unknown symbol mtrr_add (err 0)
diff -uNr a/linux-4.3/arch/x86/kernel/cpu/mtrr/main.c b/linux-4.3/arch/x86/kernel/cpu/mtrr/main.c
--- a/linux-4.3/arch/x86/kernel/cpu/mtrr/main.c 2015-11-02 00:05:25.000000000 +0000
+++ b/linux-4.3/arch/x86/kernel/cpu/mtrr/main.c 2015-11-18 20:57:23.749122785 +0000
@@ -448,7 +448,7 @@
return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type,
increment);
}
-
+EXPORT_SYMBOL(mtrr_add);
/**
* mtrr_del_page - delete a memory type region
* @reg: Register returned by mtrr_add
@@ -536,7 +536,7 @@
return -EINVAL;
return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
}
-
+EXPORT_SYMBOL(mtrr_del);
/**
* arch_phys_wc_add - add a WC MTRR and handle errors if PAT is unavailable
* @base: Physical base address
Patching with that patch[1] did in fact work under i686 after rebuilding nvidia-304xx against the new kernel.
1. https://gist.github.com/graysky2/0653c468bf32365c80e9
Is something else blocking 4.3? Are there any links to upstream reports on whatever is blocking?
Display manager fails to show up. Using ssh I could get following output form dmesg
[ 325.443963] nvidia: Unknown symbol mtrr_add (err 0)
[ 330.699661] nvidia: Unknown symbol mtrr_del (err 0)
[ 330.699754] nvidia: Unknown symbol mtrr_add (err 0)
[ 335.972270] nvidia: Unknown symbol mtrr_del (err 0)
[ 335.972390] nvidia: Unknown symbol mtrr_add (err 0)
which is repeated every 5s
I have to install xf86-vesa to get video
dmesg
[ 325.443963] nvidia: Unknown symbol mtrr_add (err 0)
[ 330.699661] nvidia: Unknown symbol mtrr_del (err 0)
[ 330.699754] nvidia: Unknown symbol mtrr_add (err 0)
[ 335.972270] nvidia: Unknown symbol mtrr_del (err 0)
[ 335.972390] nvidia: Unknown symbol mtrr_add (err 0)
kernel.log:
Jan 1 16:54:45 archbang kernel: nvidia: Unknown symbol mtrr_del (err 0)
Jan 1 16:54:45 archbang kernel: nvidia: Unknown symbol mtrr_add (err 0)
Jan 1 16:54:45 archbang kernel: nvidia: Unknown symbol mtrr_del (err 0)
Jan 1 16:54:45 archbang kernel: nvidia: Unknown symbol mtrr_add (err 0)
Jan 1 16:54:46 archbang kernel: nvidia: Unknown symbol mtrr_del (err 0)
Jan 1 16:54:46 archbang kernel: nvidia: Unknown symbol mtrr_add (err 0)
Jan 1 16:54:46 archbang kernel: nvidia: Unknown symbol mtrr_del (err 0)
Jan 1 16:54:46 archbang kernel: nvidia: Unknown symbol mtrr_add (err 0)
Jan 1 16:54:47 archbang kernel: nvidia: Unknown symbol mtrr_del (err 0)
Jan 1 16:54:47 archbang kernel: nvidia: Unknown symbol mtrr_add (err 0)
Xorg log:
[ 37.173] (II) LoadModule: "glx"
[ 37.174] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 37.209] (II) Module glx: vendor="NVIDIA Corporation"
[ 37.209] compiled for 4.0.2, module version = 1.0.0
[ 37.209] Module class: X.Org Server Extension
[ 37.209] (II) NVIDIA GLX Module 304.131 Sun Nov 8 22:05:17 PST 2015
[ 37.209] (II) LoadModule: "nvidia"
[ 37.209] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[ 37.210] (II) Module nvidia: vendor="NVIDIA Corporation"
[ 37.210] compiled for 4.0.2, module version = 1.0.0
[ 37.210] Module class: X.Org Video Driver
[ 37.375] (EE) NVIDIA: Failed to load the NVIDIA kernel module. Please check your
[ 37.375] (EE) NVIDIA: system's kernel log for additional error messages.
[ 37.375] (II) UnloadModule: "nvidia"
[ 37.375] (II) Unloading nvidia
[ 37.376] (EE) Failed to load module "nvidia" (module-specific error, 0)
[ 37.376] (EE) No drivers available.
[ 37.376] (EE)
Fatal server error:
[ 37.376] (EE) no screens found(EE)
dmesg:
[ 35.414088] nvidia: Unknown symbol mtrr_del (err 0)
[ 35.414399] nvidia: Unknown symbol mtrr_add (err 0)
[ 35.937950] nvidia: Unknown symbol mtrr_del (err 0)
[ 35.938261] nvidia: Unknown symbol mtrr_add (err 0)
[ 36.356384] nvidia: Unknown symbol mtrr_del (err 0)
[ 36.356790] nvidia: Unknown symbol mtrr_add (err 0)
[ 36.877556] nvidia: Unknown symbol mtrr_del (err 0)
[ 36.877866] nvidia: Unknown symbol mtrr_add (err 0)
[ 37.362931] nvidia: Unknown symbol mtrr_del (err 0)
[ 37.363241] nvidia: Unknown symbol mtrr_add (err 0)
As you can see I had the following two versions of kernel and nvidia driver packages on my pacman cache folder, basically I downgraded my kernel and nvidia driver like this:
$ cd /var/cache/pacman/pkg
$ ls nvidia-304xx-304.131-*
nvidia-304xx-304.131-2.1-x86_64.pkg.tar.xz nvidia-304xx-304.131-3-x86_64.pkg.tar.xz
$ ls linux-4.*
linux-4.2.5-1-x86_64.pkg.tar.xz linux-4.3.3-2-x86_64.pkg.tar.xz
$ sudo pacman -U linux-4.2.5-1-x86_64.pkg.tar.xz nvidia-304xx-304.131-2.1-x86_64.pkg.tar.xz
$ sudo reboot
I think this bug should no longer be classified in testing.
As an user of GeForce-9600GT, I migrated to linux-lts and nvidia-304xx-lts.
According to this list my nvidia 7300 GS seems to be supported by the nvidia-340 driver. Unfortunately, it doesn't work.
It looks like i missed something some time ago, when switched to nvidia-304xx, can't remember why I did that.
Switched to nvidia-340xx, works great!
@hopimet
Probably, You have to switch to nvidia-340xx-libgl
pacman -Qs nvidia, and update all nvidia stuff to 340xx
Please read carefully, and you'll notice:
The 304.xx driver supports the following set of GPUs:
7300 GS
You're right the 7300 GS is in the list.
However I have already done that. I removed all my nvidia-304 stuff and installed nvidia-340xx, nvidia-340xx-libgl and nvidia-340xx-utils. But when I reboot I get a black screen with a blinking cursor instead of the login screen.
If you search for "304.xx" on that page, you'll see that the 7300 GS is in a separate section of legacy GPUs that are no longer supported by the 340.xx driver. So you MUST use the 304.xx driver. (And if you look in your Xorg.0.log or Xorg.0.log.old file, you'll see an nvidia warning message that tells you essentially the same thing)
Yes, the only driver that works with my GPU is 304xx. That's why I have, as other users in this thread, this non-solved bug with the new kernel. I will wait for a fix, hoping that it will arrive soon. Right now I am using the lts version as indicated in my previous post. Thank you for your answer.
VGA compatible controller: NVIDIA Corporation C51 [GeForce 6150 LE] (rev a2)
nvidia-304xx 304.131-3
[ 23.973845] nvidia: Unknown symbol mtrr_del (err 0)
[ 23.974317] nvidia: Unknown symbol mtrr_add (err 0)
Linux localhost 4.3.3-2-ARCH #1 SMP PREEMPT Wed Dec 23 20:09:18 CET 2015 x86_64 GNU/Linux
At this moment my X is working with xf86-vesa... and my "urxvt" is trasparent no more... :(
Another solution, waiting for this bug to be fixed, is to install the lts versions of the kernel and nvidia driver. This works fine.
nvidia-304xx 304.131-3
[ 23.973845] nvidia: Unknown symbol mtrr_del (err 0)
[ 23.974317] nvidia: Unknown symbol mtrr_add (err 0)
Linux localhost 4.3.3-2-ARCH #1 SMP PREEMPT Wed Dec 23 20:09:18 CET 2015 x86_64 GNU/Linux
At this moment my X is working with xf86-vesa...”
Same here. Just that I can't find xf86-vesa with pacman -Ss. Is it the same as xf86-video-vesa? (Sorry if I sound dumb.)
yes.
pacman -Q | grep vesa
xf86-video-vesa 2.3.4-2
How did you install the lts version of the kernel and nvidia-304? Did you add an entry in grub to boot on the lts kernel?
with "lts" it works... thank you
you have to install linux-lts and nvidia-304xx-lts
and change your bootloader configuration file as suggested here
https://wiki.archlinux.org/index.php/System_maintenance#Install_the_linux-lts_package
@hopimet: You bet I didn't ☺ And so now my Arch is up and running, thanks guys, you saved my week! (How will we learn that this bug got fixed? Or is it okay to keep with the lts version? Does it not conflict with any other stuff? Do I have to stop upgrading for some time?)
sudo pacman -S linux-lts-headers
I didn't remove the 4.3 kernel and the "regular" nvidia-304xx, so I add a specific entry for the lts and I can boot either on the 4.3 or the lts kernel. When there will be an update for the 4.3 kernel or the "regular" nvidia-304xx driver, I will boot on the updated kernel to see if the bug is fixed. I think we have time because the lts kernel and nvidia-304xx-lts will be maintained up to the end of 2017.
@hopimet: You bet I didn't ☺ And so now my Arch is up and running, thanks guys, you saved my week! (How will we learn that this bug got fixed? Or is it okay to keep with the lts version? Does it not conflict with any other stuff? Do I have to stop upgrading for some time?)
i upgrade the version of following packages:
core/linux 4.3.3-2
extra/nvidia-304xx 304.131-3
community/virtualbox-host-modules 5.0.12-2
in this upgrade with "pacman -Syu" crash the kernel and nvidia. The nvidia driver giveme with this error log and not load in the memory:
nvidia: Unknown symbol mtrr_del (err 0)
nvidia: Unknown symbol mtrr_add (err 0)
with this error not create the /dev/dri/card0 and can't execute the Xorg.
I view this bug page in https://bugs.archlinux.org/task/47092, and try fixed this error using ABS for apply the new patch:
================================================================================
# cat /home/compsys/linux/export-mtrr.patch
--- a/arch/x86/kernel/cpu/mtrr/main.c 2015-11-01 21:05:25.000000000 -0300
+++ b/arch/x86/kernel/cpu/mtrr/main.c 2016-01-13 13:11:25.528067225 -0300
@@ -449,6 +449,8 @@
increment);
}
+EXPORT_SYMBOL(mtrr_add);
+
/**
* mtrr_del_page - delete a memory type region
* @reg: Register returned by mtrr_add
@@ -537,6 +539,8 @@
return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
}
+EXPORT_SYMBOL(mtrr_del);
+
/**
* arch_phys_wc_add - add a WC MTRR and handle errors if PAT is unavailable
* @base: Physical base address
================================================================================
modify in PKGBUILD for add two new lines to source= and prepare() for apply the new patch, make new gpg keys with "makepkg -g", take the output and replace the sha256sums= in the PKGBUILD, compiling with "makepkg" (trying again after of added with gpg keys for linux-4.3.tar.xz and patch-4.3.3.xz), and install with "makepkg -i".
i have this change in PKGBUILD:
================================================================================
--- /var/abs/core/linux/PKGBUILD 2016-01-12 20:07:44.194843449 -0300
+++ /home/compsys/linux/PKGBUILD 2016-01-13 13:58:15.324759314 -0300
@@ -17,6 +17,7 @@
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz"
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.sign"
"0001-disabling-primary-plane-in-the-noatomic-case.patch"
+ "export-mtrr.patch"
# the main kernel config files
'config' 'config.x86_64'
# standard config files for mkinitcpio ramdisk
@@ -28,6 +29,7 @@
'95cd81fcbb87953f672150d60950548edc04a88474c42de713b91811557fefa5'
'SKIP'
'abdd04bd6beecb7c961130a68d71e6332bd260462eeaa2f4f8e634de813dcc4d'
+ 'bebe182e6a32210025ee6abe60e8f96021e647a78fcdb2f7a59b19c1f45905fc'
'f4084c6d43abc40819f4535f827d3d8e643d25e67fedf0bab46346ead8c08b84'
'98caa62b4759f6ae180660cc1be4aeda7198e50fb7cf51aee4e677ae6ee2d19e'
'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
@@ -57,6 +59,8 @@
# hangs on older intel hardware
patch -Np1 -i "${srcdir}/0001-disabling-primary-plane-in-the-noatomic-case.patch"
+ patch -Np1 -i "${srcdir}/export-mtrr.patch"
+
if [ "${CARCH}" = "x86_64" ]; then
cat "${srcdir}/config.x86_64" > ./.config
else
================================================================================
now the error output of dmesg is:
nvidia: no symbol version for mtrr_del
nvidia: Unknown symbol mtrr_del (err -22)
nvidia: no symbol version for mtrr_add
nvidia: Unknown symbol mtrr_add (err -22)
I not have most idea for fixed....
Try install with linux-lts, not have change in the kernel (the lts is 4.1.15 but i always having with 4.3.3)
Then install the old packages that i have in the cache of pacman.
now have this in the system:
core/linux 4.3.3-2 (base) [instalado: 4.2.5-1]
extra/nvidia-304xx 304.131-3 [instalado: 304.131-2.1]
community/virtualbox-host-modules 5.0.12-2 [instalado: 5.0.10-2.1] <-- only for pass the dependences packages
the file /proc/kallsyms have:
[address] T mtrr_add
[address] T mtrr_del
Only the new version of kernel and nvidia have error with mtrr_add() and mtrr_del().
I have the GeoForce 6200 and only function with nvidia-304xx.
# uname -r
4.2.5-1-ARCH
Followed @vikyboss's instructions to downgrade successfully. (thnx!)
Can't believe this is almost 2 months old. Any more news?
But, I have to ask, because I haven't seen anyone mention it... Has this been reported upstream? Any link to where that's been done / a discussion upstream?
https://devtalk.nvidia.com/default/topic/893282/linux/304-128-and-kernel-4-3-can-compile-but-cannot-insert-it-mtrr-symbols-related-errors-/
https://github.com/manjaro/packages-core/blob/master/linux43/nvidia-304xx-mtrr-unknown-symbol.patch
my card is msi 8600GT.
After thinking about it, i tried to recompile and reinstall the package nvidia-304xx from abs (with no change), and it worked.
I don't know why, but recompiling the module while running the patched kernel solves the problem for me.
https://anonscm.debian.org/viewvc/pkg-nvidia/packages/nvidia-graphics-drivers-legacy-304xx/trunk/debian/module/debian/patches/disable-mtrr.patch?view=markup
I tested it with the nvidia-96xx driver from AUR, and it works fine with linux 4.3.
See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809324
But i have problem for compiling the nvidia using ABS (not read the library/headers of kernel). Where this problem solved, i can continue with this test.
Currently GeForce 7300 LE on x86_64, linux-4.3.3-3-x86_64, nvidia-304xx-304.131-3.
[root@hanne ~]# modprobe -v nvidia
insmod /lib/modules/4.3.3-3-ARCH/extramodules/nvidia.ko.gz
modprobe: ERROR: could not insert 'nvidia': Unknown symbol in module, or unknown parameter (see dmesg)
[root@hanne ~]# dmesg -t
...
nvidia: Unknown symbol mtrr_del (err 0)
nvidia: Unknown symbol mtrr_add (err 0)
...
It could be a long wait if everybody leans back expecting someone else to report this upstream :o)
Only need to get better the code, why now getting a segmentation fault in the during of driver register. Probably by changes in the codes of the kernel that never be modified in the NVidia. I have the log with error and probably a copy of dump memory 'core'.
can accept any sugerences for continue.
Any news ?
I have solved by the aproach of installing linux-lts kernel, at the first time. But then I tried to patch in abs and solved too. The patch I applied is that Debian patch:
https://anonscm.debian.org/viewvc/pkg-nvidia/packages/nvidia-graphics-drivers-legacy-304xx/trunk/debian/module/debian/patches/disable-mtrr.patch?view=markup
And worked like a charm compiling in abs. Now I have a 4.4.1 kernel working with 304xx nvidia drivers in my 7300 LE hardware.
But of course it's a pitty that NVidia has this type of issues and it lasts so long to solve them. The only thing I know for sure is that next graphic hardware will not be Nvidia for me.
Sorry György, I somehow missed your comment about the same patch.
Architecture: x86_64
linux 4.4.1-2
nvidia-304xx 304.131-6
Card: GeForce 7300 LE
Thank you! :o)