diff options
author | Stephane Eranian <eranian@google.com> | 2014-11-17 14:07:03 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-04-02 11:33:15 -0400 |
commit | b3738d29323344da3017a91010530cf3a58590fc (patch) | |
tree | 0e8e97b896673ca3f2656c88e322c5def01cef69 /kernel/watchdog.c | |
parent | c02cdbf60b51b8d98a49185535f5d527a2965142 (diff) |
watchdog: Add watchdog enable/disable all functions
This patch adds two new functions to enable/disable
the watchdog across all CPUs.
This will be used by the HT PMU bug workaround code to
disable/enable the NMI watchdog across quirk enablement.
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: bp@alien8.de
Cc: jolsa@redhat.com
Cc: kan.liang@intel.com
Cc: maria.n.dimakopoulou@gmail.com
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/1416251225-17721-12-git-send-email-eranian@google.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/watchdog.c')
-rw-r--r-- | kernel/watchdog.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index 3174bf8e3538..9a056f5bc02c 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c | |||
@@ -567,9 +567,37 @@ static void watchdog_nmi_disable(unsigned int cpu) | |||
567 | cpu0_err = 0; | 567 | cpu0_err = 0; |
568 | } | 568 | } |
569 | } | 569 | } |
570 | |||
571 | void watchdog_nmi_enable_all(void) | ||
572 | { | ||
573 | int cpu; | ||
574 | |||
575 | if (!watchdog_user_enabled) | ||
576 | return; | ||
577 | |||
578 | get_online_cpus(); | ||
579 | for_each_online_cpu(cpu) | ||
580 | watchdog_nmi_enable(cpu); | ||
581 | put_online_cpus(); | ||
582 | } | ||
583 | |||
584 | void watchdog_nmi_disable_all(void) | ||
585 | { | ||
586 | int cpu; | ||
587 | |||
588 | if (!watchdog_running) | ||
589 | return; | ||
590 | |||
591 | get_online_cpus(); | ||
592 | for_each_online_cpu(cpu) | ||
593 | watchdog_nmi_disable(cpu); | ||
594 | put_online_cpus(); | ||
595 | } | ||
570 | #else | 596 | #else |
571 | static int watchdog_nmi_enable(unsigned int cpu) { return 0; } | 597 | static int watchdog_nmi_enable(unsigned int cpu) { return 0; } |
572 | static void watchdog_nmi_disable(unsigned int cpu) { return; } | 598 | static void watchdog_nmi_disable(unsigned int cpu) { return; } |
599 | void watchdog_nmi_enable_all(void) {} | ||
600 | void watchdog_nmi_disable_all(void) {} | ||
573 | #endif /* CONFIG_HARDLOCKUP_DETECTOR */ | 601 | #endif /* CONFIG_HARDLOCKUP_DETECTOR */ |
574 | 602 | ||
575 | static struct smp_hotplug_thread watchdog_threads = { | 603 | static struct smp_hotplug_thread watchdog_threads = { |