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>
This commit is contained in:
Родитель
c02cdbf60b
Коммит
b3738d2932
|
@ -137,4 +137,12 @@ extern int watchdog_init_timeout(struct watchdog_device *wdd,
|
|||
extern int watchdog_register_device(struct watchdog_device *);
|
||||
extern void watchdog_unregister_device(struct watchdog_device *);
|
||||
|
||||
#ifdef CONFIG_HARDLOCKUP_DETECTOR
|
||||
void watchdog_nmi_disable_all(void);
|
||||
void watchdog_nmi_enable_all(void);
|
||||
#else
|
||||
static inline void watchdog_nmi_disable_all(void) {}
|
||||
static inline void watchdog_nmi_enable_all(void) {}
|
||||
#endif
|
||||
|
||||
#endif /* ifndef _LINUX_WATCHDOG_H */
|
||||
|
|
|
@ -567,9 +567,37 @@ static void watchdog_nmi_disable(unsigned int cpu)
|
|||
cpu0_err = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void watchdog_nmi_enable_all(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
if (!watchdog_user_enabled)
|
||||
return;
|
||||
|
||||
get_online_cpus();
|
||||
for_each_online_cpu(cpu)
|
||||
watchdog_nmi_enable(cpu);
|
||||
put_online_cpus();
|
||||
}
|
||||
|
||||
void watchdog_nmi_disable_all(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
if (!watchdog_running)
|
||||
return;
|
||||
|
||||
get_online_cpus();
|
||||
for_each_online_cpu(cpu)
|
||||
watchdog_nmi_disable(cpu);
|
||||
put_online_cpus();
|
||||
}
|
||||
#else
|
||||
static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
|
||||
static void watchdog_nmi_disable(unsigned int cpu) { return; }
|
||||
void watchdog_nmi_enable_all(void) {}
|
||||
void watchdog_nmi_disable_all(void) {}
|
||||
#endif /* CONFIG_HARDLOCKUP_DETECTOR */
|
||||
|
||||
static struct smp_hotplug_thread watchdog_threads = {
|
||||
|
|
Загрузка…
Ссылка в новой задаче