Kernel 3.15 and nv drivers 337/340 - Failed to initialize the NVIDIA kernel module (GTX 550 Ti)

Description:
After upgrade to linux 3.15 and nvidia 337.25 (GeForce GTX 550 Ti) driver Xorgs fail on start.

Additional info:
nvidia-bug-report.log.gz: https://bugs.archlinux.org/task/39092?getfile=11866

Nvidia 340.17 beta: Still the same.
nvidia-bug-report.log.gz (40.1 KB)

Nvidia-bug-report (driver 337.25) with new information (INFO: task systemd-udevd:).
nvidia-bug-report.log.gz (41 KB)

Hi blablo,

This looks like a bug in the kernel. The WARNING message at time 6.871099 in your system log indicates that cpufreq_update_policy() failed. Looking at the code, it appears that when it fails, it leaves policy->rwsem locked. This causes cpufreq_get() to hang later when it’s called by the nvidia kernel module.

Can you try applying the following patch to the kernel?

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index aed2b0cb83dc..5b6d04f3b9ea 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -2264,7 +2264,7 @@ int cpufreq_update_policy(unsigned int cpu)
                new_policy.cur = cpufreq_driver->get(cpu);
                if (WARN_ON(!new_policy.cur)) {
                        ret = -EIO;
-                       goto no_policy;
+                       goto unlock;
                }
 
                if (!policy->cur) {
@@ -2279,6 +2279,7 @@ int cpufreq_update_policy(unsigned int cpu)
 
        ret = cpufreq_set_policy(policy, &new_policy);
 
+unlock:
        up_write(&policy->rwsem);
 
        cpufreq_cpu_put(policy);

Thanks for your reply.

Sure, I’ll update about the results.

Additional info:
kernel: 3.15.1-1-ARCH
nv driver: 340.17 beta
nvidia-bug-report: after apply kernel patch (linux-nvidai.patch)

With patch applied, everything seems to work properly.
nvidia-bug-report.log.gz (76.4 KB)
linux-nvidia.patch.txt (657 Bytes)

Thanks for testing this. I submitted a slightly modified version of the patch upstream: http://marc.info/?l=linux-pm&m=140311605815501&w=2

[Edit: looks like it was accepted upstream as commit fefa8ff810c5 and tagged for the 3.15 stable tree]

Thanks for your help.

Additional info:
kernel: 3.15.1-2-ARCH
nv driver: 340.17 beta
nvidia-bug-report: after apply v2-cpufreq-unlock-when-failing-cpufreq_update_policy.patch
another link to the patch: https://patchwork.kernel.org/patch/4378851/

Edit: everything seems to work properly
nvidia-bug-report.log.gz (76.4 KB)