summaryrefslogtreecommitdiff
path: root/libre/linux-libre/fix-watchdog-3.7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libre/linux-libre/fix-watchdog-3.7.patch')
-rw-r--r--libre/linux-libre/fix-watchdog-3.7.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/libre/linux-libre/fix-watchdog-3.7.patch b/libre/linux-libre/fix-watchdog-3.7.patch
new file mode 100644
index 000000000..fe4431604
--- /dev/null
+++ b/libre/linux-libre/fix-watchdog-3.7.patch
@@ -0,0 +1,38 @@
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=blobdiff_plain;f=kernel%2Fwatchdog.c;h=75a2ab3d0b0208dfa51e40339ffd00206622732e;hp=997c6a16ec2278969a10f251f63f237e7559d42e;hb=3935e89505a1c3ab3f3b0c7ef0eae54124f48905;hpb=74779e22261172ea728b989310f6ecc991b57d62
+
+diff --git a/kernel/watchdog.c b/kernel/watchdog.c
+index 997c6a1..75a2ab3 100644
+--- a/kernel/watchdog.c
++++ b/kernel/watchdog.c
+@@ -344,6 +344,10 @@ static void watchdog_enable(unsigned int cpu)
+ {
+ struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer);
+
++ /* kick off the timer for the hardlockup detector */
++ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
++ hrtimer->function = watchdog_timer_fn;
++
+ if (!watchdog_enabled) {
+ kthread_park(current);
+ return;
+@@ -352,10 +356,6 @@ static void watchdog_enable(unsigned int cpu)
+ /* Enable the perf event */
+ watchdog_nmi_enable(cpu);
+
+- /* kick off the timer for the hardlockup detector */
+- hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+- hrtimer->function = watchdog_timer_fn;
+-
+ /* done here because hrtimer_start can only pin to smp_processor_id() */
+ hrtimer_start(hrtimer, ns_to_ktime(sample_period),
+ HRTIMER_MODE_REL_PINNED);
+@@ -369,9 +369,6 @@ static void watchdog_disable(unsigned int cpu)
+ {
+ struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer);
+
+- if (!watchdog_enabled)
+- return;
+-
+ watchdog_set_prio(SCHED_NORMAL, 0);
+ hrtimer_cancel(hrtimer);
+ /* disable the perf event */