Hey nvidia, devs and user alike;
I am a linux-rt user [ as you may notice from other posts ] … as of late nVidia has been doing an excellent job of ‘unofficially’ supporting PREEMPT_RT_FULL by allowing the use of the IGNORE_PREEMPT_RT_PRESENCE=1 environment variable [plus, adding some necessary bits to the driver].
however, it seems between 3.12 and 3.14 [i never tested 3.13] that upstream linux developers have decided to change __rt_mutex_init from EXPORT_SYMBOL [which is usable for out-of-tree, non-gpl drivers] to EXPORT_SYMBOL_GPL which is NOT usable by non-gpl drivers, which obviously creates a problem - being as nvidia will no longer compile / be usable if those symbols remain EXPORT_SYMBOL_GPL :\
a quick grep reveals where it is used;
/home/ninez/Desktop/LPA/nvidia-l-pa-337/src/NVIDIA-Linux-x86_64-337.12-no-compat32/kernel/uvm/nvidia-uvm.mod.c: { 0x37c6a344, __VMLINUX_SYMBOL_STR(__rt_mutex_init) },
/home/ninez/Desktop/LPA/nvidia-l-pa-337/src/NVIDIA-Linux-x86_64-337.12-no-compat32/kernel/nvidia.mod.c: { 0x37c6a344, __VMLINUX_SYMBOL_STR(__rt_mutex_init) },
so in this case, the modules that will be expecting EXPORT_SYMBOL [or rather the kernel will be expecting gpl-only symbol]… On top of this; i have been using mutexes in nvidia.ko, as well - which has never been a problem, until the kernel developers changed these symbols recently…
of course, the easy workaround is to change nvidia’s MODULE_LICENSE=nvidia to MODULE_LICENSE=GPL, like so;
--- kernel/nv.c 2014-04-04 17:12:14.000000000 -0400
+++ kernel/nv.c 2014-04-12 16:27:06.523676294 -0400
@@ -30,7 +30,7 @@
#if defined(NV_VMWARE) || (NV_BUILD_MODULE_INSTANCES != 0)
#if defined(MODULE_LICENSE)
-MODULE_LICENSE("NVIDIA");
+MODULE_LICENSE("GPL");
#endif
#if defined(MODULE_INFO)
MODULE_INFO(supported, "external");
--- kernel/uvm/nvidia_uvm_common.c 2014-04-04 17:12:14.000000000 -0400
+++ kernel/uvm/nvidia_uvm_common.c 2014-04-12 16:23:07.632663969 -0400
@@ -275,5 +275,5 @@
module_init(uvm_init);
module_exit(uvm_exit);
-MODULE_LICENSE("MIT");
+MODULE_LICENSE("GPL");
MODULE_INFO(supported, "external");
--- kernel/nv-frontend.c 2014-04-13 16:12:38.268038126 -0400
+++ kernel/nv-frontend.c 2014-04-13 16:23:37.891072155 -0400
@@ -15,7 +15,7 @@
#include "nv-frontend.h"
#if defined(MODULE_LICENSE)
-MODULE_LICENSE("NVIDIA");
+MODULE_LICENSE("GPL");
#endif
#if defined(MODULE_INFO)
MODULE_INFO(supported, "external");
now, it is one thing to do this on my own machine - but no one/packagers can ship nvidia by changing it’s license, as well, nvidia is supposed to be a tainted module [disables lock debugging, etc]…
anyway, i am hoping someone from nvidia can talk to kernel developers on this matter, as it is a big problem for myself and others… I have went ahead and notified the linux-rt developers, who work on the relevant parts of the kernel, whom also presumably have direct interaction with the subsystems maintainer [ingo]… but aside from that - there isn’t a whole lot that i can do personally, beyond reporting to you both…
cheerz