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);
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/